Tcp_congestioncontrol


title: 2025-10-06 author: 강병호 (이름) date: 2025-10-06 category: TIL/강병호/2025/10 (파일 경로 : TIL/{이름}/{연}/{월}) layout: post (자유) —

TCP의 혼잡 제어 처리 방법에 대해 설명해 주세요.

  • *혼잡 제어(Congestion Control)**는 송신 측이 네트워크의 혼잡 상태를 파악하고, 데이터 전송량을 조절하여 네트워크 과부하를 방지하는 메커니즘입니다. TCP는 주로 다음 네 가지 알고리즘을 조합하여 혼잡 제어를 수행합니다.
    1. 느린 시작 (Slow Start)
    • 연결 초기 또는 타임아웃으로 인한 재전송 시, 혼잡 윈도우(Congestion Window, cwnd) 크기를 1 MSS(Maximum Segment Size)로 시작합니다.
    • 이후 하나의 ACK를 받을 때마다 cwnd를 1 MSS씩 증가시켜, 결과적으로 한 RTT(Round Trip Time)마다 cwnd2배씩 지수적으로 증가합니다.
    • 이는 네트워크의 수용량을 빠르게 탐색하기 위한 과정입니다. cwnd가 미리 정해진 임계값(ssthresh)에 도달하면 혼잡 회피 단계로 전환됩니다.
      1. 혼잡 회피 (Congestion Avoidance)
    • cwnd가 임계값(ssthresh) 이상이 되면, cwnd의 증가 방식을 지수적 증가에서 선형적(가산적) 증가로 변경합니다. (AIMD의 AI: Additive Increase)
    • 한 RTT마다 cwnd를 1 MSS씩만 증가시켜, 네트워크에 부담을 주지 않으면서 전송량을 점진적으로 늘립니다.
      1. 혼잡 발생 감지 및 처리
    • 타임아웃 발생 시: 네트워크에 심각한 혼잡이 발생했다고 간주합니다. ssthresh를 현재 cwnd의 절반으로 줄이고, cwnd를 1 MSS로 리셋한 후 느린 시작부터 다시 시작합니다.
    • 3개의 중복 ACK 수신 시: 비교적 가벼운 혼잡으로 판단하고, 빠른 회복 단계로 진입합니다. (AIMD의 MD: Multiplicative Decrease)
      1. 빠른 회복 (Fast Recovery) 및 빠른 재전송 (Fast Retransmit)
    • 빠른 재전송: 3개의 중복 ACK를 수신하면 타임아웃을 기다리지 않고 즉시 누락된 세그먼트를 재전송합니다.
    • 빠른 회복: ssthresh를 현재 cwnd의 절반으로 줄이고, cwnd를 새로운 ssthresh 값으로 설정합니다. 이후 cwnd를 선형적으로 증가시켜(혼잡 회피와 유사), 네트워크 전송량을 급격히 줄이지 않고 안정적으로 회복을 시도합니다.

results matching ""

    No results matching ""