TCP Congestion Control   TCP 혼잡제어

(2022-04-27)

혼잡 제어 , TCP Tahoe, TCP Reno, TCP NewReno


1. TCP 혼잡 제어TCP혼잡 제어의 원칙
     - TCP 관점 : TCP패킷 손실의 원인을 망의 혼잡에 기인한 것으로 만 보고있음
     - TCP 행동 : 이때, 망 혼잡이 가중되지 않도록, 각자가 덜 이기적이도록 노력함
        . 즉, 각 노드TCP는, 망 혼잡시, 전송량을 줄이고, 망 정상시, 다시 전송량을 늘려감
     - TCP 이슈 : 그렇다면, 과연 언제,어떻게 망 혼잡 및 정상을 알 수 있을가? 

  ㅇ TCP의 혼잡 징후의 판단 요소
     - TCP 타이머 (타임아웃)
     - 중복 ACK
     - 왕복시간 세그먼트 지연TCP혼잡 제어의 대응 방식
     - 혼잡 윈도우 (Congestion Window)의 크기 조절
        . 혼잡시 혼잡 윈도우 크기 (cwnd) 조정에 의해 전송률(송신률) 제어


2. TCP 혼잡제어 방식

  ㅇ 제한된 형태의 혼잡제어 방식
     - RTT(왕복시간) 편차 고려함
        . 최근에 계산된 RTT 값에 균형을 주도록 작은 RTTVAR(RTT 편차)의 4배 취한 값을 더함
     - 카른 알고리즘 (Karn Algorithm)
        . 재전송 세그먼트RTT 측정 대상에서 제외
     - 지수 RTO 후퇴
        . 재전송이 일어난 경우에, 혼잡제어를 하기 위해, RTO를 점차 두 배 씩 늘려가는 방식

     * 즉, 혼잡상황을 더욱 악화시키지 않도록, 송신측에서 연이은 재전송을 억제토록 도모함

  ㅇ 포괄적 형태의 혼잡제어 방식
     - 느린시작 (Slow Start) : 지수 증가
        . 혼잡 발생 상황을 미리 예방하기 위해, 세그먼트 송신율을 사전 억제하는 방식
           .. 연결 초기에 한꺼번에 보내지 않고, 
           .. 처음에는 작게(천천히) 시작하나, 점차 빠르게(지수적으로) 송신 데이터량을 늘이는 방식
           .. 송신 데이터량을 늘리는 임계치 한계는 TCP MSS(65535 바이트)

     - 혼잡 회피 (Congestion Avoidance) : 가산 증가
        . 혼잡이 감지되면, 지수적(빠름)이 아닌 가산적(느림)인 증가 방식을 채택하는 방식

     - 빠른 재전송 (Fast Retransmit)                           ☞ TCP 재전송 참조
        . 정상적인 재전송  과정을 따르지 않고, 중간 누락된 세그먼트를 빠르게 재전송

     - 빠른 회복 (Fast Recovery)                               ☞ TCP 재전송 참조
        . 이미 여러번 ACK가 오게되면, 비록 세그먼트들이 순서가 어긋나게 수신되더라도,
          네트워크 혼잡이라 여기지 않고, 송신률을 빠르게 증가시킴


3. TCP 혼잡제어 관련 표준 및 구현 명칭TCP 혼잡제어 관련 표준
     - RFC 2001 : `TCP Slow Start, Congestion Avoidance, Fast Retransmit, and Fast Recovery
                 Algorithms` (1997) 
     - RFC 2581,5681 : `TCP Congestion Control` (1999)(2009)
     - RFC 2582,3782 : `The NewReno Modification to TCP's Fast Recovery Algorithm` (1999)(2004)

  ㅇ TCP 혼잡제어 구현 명칭 
     - 구현 별칭 : TCP Tahoe
        . Jacobson의 혼잡제어 매커니즘을 기반으로, Fast Recovery를 제외한 기타 모든 기능 포함
           .. 즉, (Slow Start + Congestion Avoidance + Fast Retransmit)
        . BSD Network Release 1.0 (BNR1) (1988년)

     - 구현 별칭 : TCP Reno
        . 위 Tahoe 구현에 Fast Recovery 등도 추가 
           .. 즉, (Slow Start + Congestion Avoidance + Fast Retransmit + Fast Recovery)
        . BSD Network Release 2.0 (BNR2) (1990년)

     - 구현 별칭 : TCP NewReno

     * 위 구현 별칭들은 모두 관례적으로 미국 도시명(특히,도박 도시)에서 따옴 
        . End-to-End 혼잡제어 기반 (고전적)

     * 비교적 최근에는, TCP CUBIC, DCTCP, CTCP, BBR 등 구현
        . 네트워크 지원 혼잡제어 기반 (현대적)



"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"