[컴퓨터 네트워크] TCP - Congestion control

신현식·2022년 12월 5일
0

컴퓨터 네트워크

목록 보기
32/34

Congestion in TCP

네트워크에 제공되는 로드가 처리할 수 있는 것보다 많을 때 발생한다. sender에 의해 관리되는 윈도우는 2가지 있는데 Receiver-advertised window size는 용량을 확인할 수 있는 반면 congestion window, 즉 네트워크의 크기는 모른다.
Actual window size = min(receiver-advertised window size, congestion window size)

📌 Slow Start

congestion window size를 정하기 위해 slow start를 이용한다. 연결 초기에는 maximum segment size(MSS)를 가지고 congestion window의 크기를 설정한다.
미리 정해진 값(Threshold)까지 패킷 양을 이전에 전송한 양의 2배씩 늘리고(exponential increase), 미리 정해진 값에 도달하면 이후부터는 +1씩 보수적으로 전송량을 늘리는(Additive Increase)방식이다. 느린 시작의 단점은 연결 초기에 다소간 지연 있게된다.

혼잡이 발생하면 혼잡 윈도우 크기를 줄여야 하고 혼잡으로 인한 세그먼트 재전송 해야한다. 또한 congestion window size를 임계값의 절반으로 설정한다. (multiplicative decrease) 임계값을 slow start threshold (ssthresh)라고도 한다.

💡 retransmission When an RTO timer expires

임계값을 혼잡 윈도우 사이즈의 절반으로 설정한다. cwnd를 1 MSS로 설정하고 Slow start를 다시 시작한다. 이후에는 위에 방식대로 진행한다.

💡 retransmission When three ACKs are received

임계값을 혼잡 윈도우 사이즈의 절반으로 설정한다. cwnd를 지금 구한 threshold로 설정하고 congestion avoidance부터 다시 시작한다.

📌 TCP congestion policy summary

  • rwnd의 간섭을 고려하지 않으므로 cwnd를 window size(데이터 전송량)라고 생각해도 된다. 처음 연결은 Slow start로 시작한다.

  • cwnd가 Threshold와 동일해지면 Congestion avoidance방식으로 전송 방식을 변경한다. (cwnd가 Threshold보다 더 커지지는 않음)

  • Time-out(정해진 시간 안에 Ack이 도착하지 않아 Sender가 데이터를 한 번 더 전송해줌)이 발생하면 커다란 데이터 유실이 발생했다고 판단하고 cwnd를 1로 초기화, Threshold크기는 time-out당시 cwnd의 1/2로 잡아준다.

  • three duplicate Ack이 도착할 시, 네트워크 혼잡을 조정하기 위해 도착 시점을 기준으로 cwnd를 1/2 줄여준다.

  • 마지막 부분에서 Time-out전에 3개의 중복 Ack가 도착한다면 Threshhold를 반으로 줄이고 cwnd를 임계값으로 설정하기 때문에 AI부터 시작한다.
profile
전공 소개

0개의 댓글