관리 메뉴

일서방

혼잡제어 , Congestion window(cwnd) 본문

IT공부/리눅스커널이야기

혼잡제어 , Congestion window(cwnd)

0asis 2025. 9. 22. 14:30

■Congestion window(cwnd)

1. 기본개념

● TCP는 네트워크 혼잡을 막기 위해 한 번에 보낼 수 있는 데이터 양을 제한

● 이 제한을 나타내는 변수가 바로 "혼잡 윈도우(cwnd)" 야

● 단위 : 세그먼트(segment) 또는 바이트(byte)

 

2. 송신 윈도우와 차이

● TCP 송신자는 실제 전송량을 두 가지 윈도우 값 중 더 작은걸 따라간다

  ● 수신 윈도우(rwnd) : 수신 측 버퍼 여유 공간(흐름제어)

  ● 혼잡 윈도우(cwnd) : 네트워크 상황 고려(혼잡제어)

   => 실제 전송가능 윈도우 = min(rwnd,cwnd)

 

3. 혼잡 윈도우 동작 원리(AIMD)

TCP혼잡 제어는 크게 두 단계로 진행됩니다.

1. Slow Start(느린 시작)

● 처음 연결되면 cwnd를 아주 작게 시작 (보통 1 MSS)

● ACK가 잘 오면 cwnd를 지수적으로 증가(2배 , 4배 ...)

 

2. Congestion Avoidance (혼잡 회피)

● 일정 크기 이상이 되면 cwnd 증가속도를 완화

● ACK마다 조금씩만 증가 (선형 증가)

 

3. 손실 발생시 (혼잡감지)

● 패킷 손실이나 RTO 발생 => cwnd 확 줄임(보통 절반)

● 다시 천천히 증가 (AIMD : Additive Increase , Multiplicative Decrease)

'IT공부 > 리눅스커널이야기' 카테고리의 다른 글

테스크(TASK)  (0) 2025.09.30
커널 소스  (0) 2025.09.30
TCP 재전송과 타임아웃  (0) 2025.09.22
dirty Page  (0) 2025.08.25
TIME_WAIT 소켓이 서비스에 미치는 영향  (4) 2025.08.21