[네트워크] Congestion Control

Yoon Uk·2023년 4월 24일
0

네트워크

목록 보기
18/34
post-thumbnail

Congestion control 이 필요한 이유

Congestion control은 네트워크에서 데이터를 전송할 때, 너무 많은 데이터를 너무 빠르게 보내서 네트워크가 감당하지 못하는 혼잡 상황을 방지하거나 해소하는 기법입니다.
혼잡 상황이 발생하면 패킷의 손실이나 지연이 증가하고, 네트워크의 성능이 저하됩니다.
따라서 혼잡 상황을 감지하고 적절한 조치를 취하는 것이 중요합니다.

Congestion control의 종류

TCP는 혼잡 제어를 위해 여러 가지 알고리즘을 사용합니다.
가장 기본적인 알고리즘은 AIMD(Additive Increase Multiplicative Decrease)입니다.
이 알고리즘은 congestion window라는 변수를 사용하여 데이터의 전송량을 조절합니다. congestion window는 송신자가 한 번에 보낼 수 있는 패킷의 최대 개수를 나타냅니다. congestion window는 다음과 같은 방식으로 변화합니다.

  • 혼잡이 발생하지 않으면, 매 RTT마다 congestion window를 1 MSS씩 증가시킵니다. 이를 가법적 증가라고 합니다.
  • 혼잡이 발생하면, congestion window를 절반으로 감소시킵니다. 이를 승법적 감소라고 합니다.

AIMD 알고리즘은 congestion window의 크기가 톱니 모양으로 변화하게 됩니다. 이렇게 하면 네트워크의 용량에 근접하면서도 혼잡을 피할 수 있습니다.

TCP는 AIMD 외에도 다른 알고리즘들을 사용합니다. 예를 들어, slow start는 TCP 연결이 시작될 때 congestion window의 초기값을 1 MSS로 설정하고, 매 RTT마다 2배씩 증가시키는 알고리즘입니다. 이렇게 하면 처음에는 빠르게 데이터를 보내고, 점차적으로 속도를 조절할 수 있습니다.

TCP는 또한 패킷의 손실을 감지하는 방법에 따라 다른 반응을 보입니다. 패킷의 손실은 타임아웃이나 중복 ACK으로 인해 발생할 수 있습니다.
타임아웃은 패킷이 전혀 도착하지 않았다는 것을 의미하므로, 심각한 혼잡 상황으로 간주합니다. 따라서 TCP는 타임아웃이 발생하면 congestion window를 1 MSS로 줄이고, slow start로 다시 시작합니다.
중복 ACK은 일부 패킷만 도착하지 않았다는 것을 의미하므로, 약간의 혼잡 상황으로 간주합니다. 따라서 TCP는 중복 ACK이 발생하면 congestion window를 절반으로 줄이고, 선형적으로 증가시킵니다.

0개의 댓글