TCP Tahoe
Slow-Start + 혼잡 회피
동작 방식
- TCP 연결
- window size는 1에서 시작
- window size 지수적으로 증가
- loss 발생시, 현재 window size의 절반을 ssthresh 값으로 설정 후 window size는 1에서 다시 시작.
- ssthresh 값에 다시 도달하면, window size는 1씩 증가.
TCP Tahoe의 특징
fast retransmit : 타임아웃이 발생하기 전이라도 세 개의 중복된 ACK를 받으면 위와 똑같은 혼잡제어 동작 방식을 적용한다.
timeout과 fast retransmit의 특징
timeout은 시간내에 패킷응답이 아예 오지 않는 것이다.
하지만 fast retransmit은 타임 아웃 전에 중복 ACK가 세개가 온다는 뜻이므로 패킷의 전송은 잘 이루어 지고 있다는 뜻이다.
TCP Reno
timeout과 fast retransmit을 나누어서 동작하는 방식이다.
timeout인 경우에는 TCP Tahoe와 동일한 방식으로 동작한다.
하지만 fast retransmit인 경우에는 timeout처럼 심각한 상황이 아니니 window size를 조금 덜 줄여도 된다고 판단해서, 1로 줄이는 것이 아이라 현재 size의 절반으로 줄이게 된다. 이렇게 절반의 size로 줄인 상태를 fast recovery 단계라고 한다.
fast recovery 단계에서는 중복된 ACK가 아니라 새로운 ACK가 도달할 때까지 기다린다. 그리고 새로운 ACK가 도달하면 이제 혼잡회피단계가 실행되고 window size가 1씩 증가하게 된다.
TCP NewReno
패킷 loss는 연속적으로 일어나는 경향이 매우 강하다.
따라서 연속적인 loss(중복 ack)가 발생하면 window size를 계속해서 절반으로 줄이는 사태가 발생할 수 있다.
예를 들어 loss가 3번 연속으로 발생하면 window size는 기존 size의 1/8이 되어버리는 문제가 발생한다는 것이다.
위 문제를 해결하기 위해서 TCP Reno의 fast recovery방식을 개선한 방식이 TCP NewReno 이다.
1. 패킷 loss(중복 ACK)를 감지한다.
2. fast recovery 상태에 들어간다.(window size는 절반이 됨)
3. 지금까지 보냈던 패킷들에 대한 ACK가 모두 도착할 때까지 fast recovery상태를 종료하지 않는다.
4. 마지막에 보냈던 패킷에 대한 ACK가 오기 전에 패킷 loss가 한번 더 감지된다.
5. window size는 절반이 되지않고 현재의 fast recovery 상태를 유지한다.
연속적으로 에러가 나더라도 그것을 하나의 에러인것처럼 판단해서 window size가 계속해서 반으로 줄어드는 문제를 해결했다.
'CS > Network' 카테고리의 다른 글
[Network] 네트워크 계층 : NAT(Network Address Transmission) (0) | 2021.12.05 |
---|---|
[Network] 네트워크 계층 : 인터넷 프로토콜(IP) (0) | 2021.12.05 |
[Network] 트랜스포트 계층 : 혼잡제어 (0) | 2021.11.29 |
[Network] 무선 네트워크 : Wireless LAN(Wi-Fi) (0) | 2021.11.18 |
[Network] 네트워크 계층 : DHCP(Dynaminc Host Config Protocol) (0) | 2021.11.17 |