본문 바로가기
통신 & 네트워크/네트워크 일반

[네트워크] TCP Congestion Control: (2) 기본 동작 - 2편

by SIES 2022. 3. 19.
반응형

앞선 포스팅에 이어서 TCP congestion control의 세 번째 state인 fast recovery에 대해 정리해보도록 하겠습니다. 원활한 이해를 위해서는 1편 포스팅을 읽고 와주시길 바랍니다.

 

3) Fast Recovery

먼저 congestion avoidance와 fast recovery에 대한 RTT (round-trip time) 라운드 별 동작 예시는 아래 그림과 같습니다.

 

Figure 1. Congestion avoidance와 fast recovery 동작 예시

앞에서 congestion avoidance 상태에서 3 dup-ACK (3 duplicate ACK)를 수신하면 혼잡 윈도우(cwnd)를 절반으로 줄이고 fast recovery에 돌입한다고 하였지만 실제 동작은 아래와 같이 살짝 복잡하게 되어있습니다. 

 

$$ \begin{align} \text{For each 3 dup-ACK (loss),}~~&ssthresh \leftarrow \frac{cwnd}{2}~\text{[packets]} \\\\ &cwnd \leftarrow ssthresh+3~\text{[packets]} \end{align}$$

 

먼저 ssthresh 값을 절반으로 줄이고, cwnd는 절반이 된 ssthresh 값에 3을 더해줍니다. 3을 추가적으로 더해주는 이유는 3 dup-ACK의 영향을 고려해주기 위함입니다. Dup-ACK는 수신 차례의 패킷에 대해서는 드랍이 일어났지만, 그 뒤의 패킷에 대해서는 성공적으로 수신했음을 내포하고 있습니다. 

 

원래라면 성공적으로 수신한 3개 패킷만큼 cwnd를 오른쪽으로 3칸 옮기면 되지만, cwnd의 맨 왼쪽이 전송하였으나 ACK를 수신하지 못한 패킷(= 드랍된 패킷)으로 막혀있기 때문에, cwnd 사이즈를 3만큼 늘려주는 형태로 새로운 패킷 전송을 위한 cwnd 공간을 확보합니다. 

 

$$ \begin{align} &\text{For each dup-ACK,}~~cwnd \leftarrow cwnd+1~\text{[packets]} \\\\ &\text{For each ACK,}~~cwnd \leftarrow ssthresh~\text{[packets]} \end{align} $$

 

Fast recovery 상태에서 드랍된 패킷이 성공적으로 재전송되지 않아 계속해서 4번째, 5번째 dup-ACK를 받는다면 cwnd를 앞과 같은 이유로 1씩 늘려줍니다.

 

그리고 드랍된 패킷의 ACK를 마침내 받게 되면 cwnd를 ssthresh 값으로 낮추어 fast recovery 상태에서 부풀려진 cwnd 값을 축소하여 congestion avoidance 상태로 넘어갑니다. 따라서 congestion avoidance에서 3 dup-ACK를 수신하여 fast recovery 상태를 거치고 나면 cwnd는 결과적으로 1/2이 됩니다.

 

Figure 2. TCP congestion control의 finite-state machine

[그림 2]는 앞서 말한 congestion control의 세 가지 state의 관계를 최종적으로 정리한 것입니다. Fast recovery는 3 dup-ACK를 수신했을 시만 순간적으로 동작하므로, slow start와 congestion avoidance 상태가 중요하다고 할 수 있습니다. 또한 네트워크 환경이 좋아 timeout이 잘 일어나지 않는다면 TCP session은 주로 congestion avoidance 상태에 머무르게 되기 때문에, congestion avoidance는 혼잡 제어 성능에 가장 큰 영향을 미치는 부분이라고 볼 수 있습니다.

 

References

[1] J. F. Kurose and K. W. Ross, Computer Networking: A Top-Down Approach, Pearson, 2016.

[2] W. Stallings, Data and Computer Communications, Pearson, 2014.

 


네트워크 스터디의 다른 글 목록

 


오타나 잘못된 부분 있으면 댓글 부탁드립니다. 도움이 되셨다면 공감 눌러 주시면 감사하겠습니다 :)

반응형

댓글