TCP 혼잡제어란?

Alex·2025년 3월 8일
0

CS를 공부하자

목록 보기
59/74

데이터의 양이 수신 측에서 처리할 수 있는 양을 초과하면
송신 측에서는 수신 측에서 처리하지 못한 데이터를 손실 데이터로 간주하고

계속 재전송하게 되므로 네트워크가 더욱더 혼잡하게 된다.

이러한 혼잡 상태를 제어하는 것을 혼잡 제어라고 한다.

방법은?

AIMD (Additive Increase Multicative Decrease)

송신 측이 전송 rate를 패킷 손실이 일어날때까지 증가시키는 접근법이다.

  • additive increate: 송신측의 윈도우 사이즈를 손실을 감지할 때까지 매 rtt마다 1mss씩 증가시킨다.
  • mulitplicative decreate: 손실을감지하면, 송신측의 윈도우 사이즈를 절반으로 감소시킨다.

AIMD는 window size를 1MSS씩 밖에 증가시키지 않기 때문에 네트워크의 모든 대역을 활용하여 빠른 속도로 통신하기까지 시간이 오래 걸린다는 것이 단점이다.

TCP Slow Start

송신측이 윈도우 사이즈를 1부터 패킷 손실이 일어날때까지 지수단위로 증가시킨다.

  • 초기 윈도우 사이즈 :1MSS
  • 매 RTT마다 윈도우 사이즈를 2배로 키운다.
  • 패킷 손실을 감지하면 윈도우 사이즈를 1MSS로 줄인다.

처음에는 window size가 1이라 속도가 느리나 지수승으로 window size가 커지므로 속도도 빠르게 증가한다.

정책은?

TCP Tahoe

TCP Tahoe는 처음에는 Slow Start를 사용하다가 임계점(Threshold)에 도달하면 AIMD 방식을 사용한다.

1) 처음 윈도우 사이즈는 1MSS다.
2) 임계점까지는 Slow Start를 사용한다.
3) 임계점부터는 AIMD 방식을 쓴다(윈도우 사이즈1씩 증가)
4) 3 duplicate ACKs 혹은 timeout을 만나면 임계점을 window size의 절반으로 줄이고 window size를 1로 줄인다.

이것 역시 속도가 느려진다느 단점이 있다.

TCP Reno

1) 처음 윈도우 사이즈는 1MSS다.
2) 임계점까지는 Slow Start
3) 그 이후로는 AIMD
4) 3 duplicate ACKs를 만나면 window size를 절반으로 줄이고 임계점을 그 값으로 설정한다.
timeout을 만나면 window size를 1로 줄인다. 임계점은 변하지 않는다.

참고자료

[네트워크] TCP 혼잡제어(congestion control), AIMD, Slow Start , TCP Reno, Tahoe

profile
답을 찾기 위해서 노력하는 사람

0개의 댓글