통신/네트워크 프로토콜

Congestion control

문상휘파람 2024. 9. 29. 02:49

혼잡 제어의 원리

세 가지 트래픽 예시

혼잡은 네트워크에서 너무 많은 데이터가 너무 빠르게 전송되어 네트워크가 처리하지 못할 때 발생한다. 혼잡 제어는 이러한 네트워크 과부하를 막기 위한 메커니즘이다. 혼잡은 패킷 손실(라우터에서 버퍼 오버플로) 또는 지연(라우터 버퍼에 큐가 쌓이는 현상)으로 나타난다.

TCP 혼잡 제어: 가산적 증가와 곱셈적 감소

혼잡 제어 개념

 

TCP는 전송 속도를 증가시키며 사용 가능한 대역폭을 탐색하고, 손실이 발생할 때까지 창 크기를 증가시킨다.

  • 가산적 증가: 패킷 손실이 없을 때, 매 RTT마다 혼잡 윈도우(cwnd)를 1 MSS만큼 증가시킨다.
  • 곱셈적 감소: 패킷 손실이 발생하면, 혼잡 윈도우 크기를 절반으로 줄인다.

이 과정은 톱니형으로 나타나며, 대역폭을 탐색하고 손실을 처리하는 특성이 있다.

혼잡 윈도우(Congestion Window)와 수신 윈도우(Receive Window)

  • cwnd는 송신자가 혼잡 제어를 위해 사용하는 윈도우 크기이다.
  • rwnd는 흐름 제어를 위해 수신자가 제어하는 윈도우 크기이다.
  • 혼잡 제어는 송신 측의 cwnd와 수신 측의 rwnd 값 중 더 작은 값을 사용한다.

혼잡 제어 단계

느린 시작(Slow Start)

느린 시작

 

TCP는 연결이 처음 설정되거나 손실이 발생했을 때 작은 cwnd로 시작하여 빠르게 증가한다.

  • cwnd는 매 RTT마다 1, 2, 4, 8 MSS로 지수적으로 증가한다.
  • 손실이 발생할 때까지 이러한 빠른 증가가 지속된다.

혼잡 회피(Congestion Avoidance)

혼잡 회피

 

cwnd가 임계값(ssthresh)에 도달하면, 혼잡 회피 단계로 전환된다.

  • 혼잡 회피 단계에서는 cwnd가 선형적으로 증가하며, 더 안정적인 전송 속도를 유지한다.
  • cwnd는 매 RTT마다 1 MSS씩 증가하며, 네트워크 상태를 지속적으로 모니터링한다.

혼잡 감지(Congestion Detection)

TCP는 세 가지 방식으로 혼잡을 감지한다.

  1. 타임아웃 발생: 송신자는 패킷 전송 후 일정 시간 내에 ACK를 받지 못하면 혼잡을 감지한다. 이 경우 cwnd는 1 MSS로 설정되며, 느린 시작 단계로 돌아간다.
  2. 3개의 중복 ACK: 동일한 ACK가 3번 연속으로 수신되면, TCP는 빠른 재전송을 통해 손실된 패킷을 복구한다.
  3. 빠른 회복(Fast Recovery): 혼잡 윈도우는 반으로 줄어들고, 손실된 패킷을 재전송한 후 혼잡 회피 상태로 전환된다.

TCP Tahoe와 TCP Reno

  • TCP Tahoe는 패킷 손실이 발생하면 cwnd를 1 MSS로 설정하고 느린 시작 상태로 돌아간다.
  • TCP Reno는 빠른 재전송과 빠른 회복을 도입하여 혼잡 상태를 좀 더 빠르게 처리한다. 손실이 발생해도 cwnd가 절반으로 줄어들고 혼잡 회피 상태로 전환된다.

TCP 혼잡 제어 예시

TCP Tahoe 예시

Tahoe

 

TCP Tahoe는 느린 시작 상태에서 시작하여 cwnd를 지수적으로 증가시킨다. 손실이 발생하면 ssthresh는 cwnd의 절반으로 설정되며, cwnd는 1 MSS로 줄어든다. 이후 다시 느린 시작 상태로 돌아간다.

TCP Reno 예시

Reno

 

TCP Reno는 느린 시작으로 시작하지만, 3개의 중복 ACK를 통해 손실이 감지되면 빠른 재전송을 수행하고, 빠른 회복 단계로 전환된다. 이 과정에서 cwnd는 절반으로 줄어들고, 혼잡 회피 상태로 전환되어 선형적으로 증가한다.

혼잡 제어 알고리즘 요약

  1. 느린 시작(Slow Start): cwnd가 지수적으로 증가하며, 손실 발생 시 다시 1 MSS로 초기화된다.
  2. 혼잡 회피(Congestion Avoidance): cwnd가 임계값에 도달하면 선형적으로 증가하며, 네트워크 상태를 모니터링한다.
  3. 빠른 재전송(Fast Retransmit): 3개의 중복 ACK가 수신되면 손실된 패킷을 즉시 재전송한다.
  4. 빠른 회복(Fast Recovery): 혼잡 윈도우를 절반으로 줄이고, 혼잡 회피 상태로 전환하여 선형적으로 증가한다.

 

**pdf 예제를 통해 Tahoe, Reno 문제 풀기** 

'통신 > 네트워크 프로토콜' 카테고리의 다른 글

네프 후기  (0) 2024.09.29
Application layer  (2) 2024.09.29
TCP(2) - 연결과 해제  (0) 2024.09.29
TCP(1) - 구조와 특징  (0) 2024.09.29
UDP  (0) 2024.09.29