Slow Start, CA, Fast Recovery의 기준 모델
현대 혼잡 제어는 같은 네트워크를 서로 다른 신호로 읽는다
Reno와 CUBIC은 손실을, Vegas는 지연 증가를, DCTCP는 ECN 마킹을, BBR은 병목 대역폭과 RTT 모델을 중심 신호로 삼는다.
혼잡 신호는 큐가 생기는 시점과 패킷이 버려지는 시점이 다르다
RTT 기울기가 먼저 움직인다.
손실 전 CE 마킹 비율을 읽는다.
큐가 넘친 뒤 중복 ACK나 timeout으로 줄인다.
최소 RTT와 병목 대역폭을 계속 갱신한다.
중복 ACK와 timeout을 혼잡의 대표 신호로 본다.
ACK마다 천천히 늘리고 손실에서 크게 줄인다.
TCP 혼잡 제어의 기본 상태 변화를 설명하기 좋다.
긴 RTT와 큰 대역폭에서는 회복이 느릴 수 있다.
Linux 계열에서 흔히 만나는 기본 알고리즘
손실 직전 Wmax 주변을 다시 탐색한다.
Wmax에서 멀 때 빠르고 가까울 때 조심스럽게 증가한다.
큰 BDP에서 Reno보다 빠르게 용량을 찾는다.
손실 전까지 큐가 길어질 수 있어 지연도 함께 본다.
Google 계열 서비스에서 널리 알려진 모델 기반 제어
병목 대역폭과 최소 RTT를 추정해 경로 모델을 만든다.
cwnd만이 아니라 송신 속도 자체를 조절한다.
무선·장거리처럼 손실이 항상 혼잡을 뜻하지 않는 곳에서 유리할 수 있다.
기존 loss based 흐름과 섞일 때 전후 비교가 필요하다.
지연 기반 알고리즘의 대표 학습 예시
RTT 증가를 큐가 쌓이는 초기 신호로 읽는다.
예상 처리량과 실제 처리량의 차이로 cwnd를 조정한다.
손실 전 큐 형성을 피하려는 설계에 가깝다.
더 공격적인 흐름과 함께 있으면 대역폭을 양보하기 쉽다.
ECN이 잘 구성된 데이터센터용 혼잡 제어
손실 전에 라우터가 표시한 CE 마킹 비율을 읽는다.
마킹 비율에 비례해 윈도우를 섬세하게 줄인다.
데이터센터 내부처럼 ECN 정책을 제어할 수 있는 곳에 맞다.
스위치와 엔드포인트 설정이 맞지 않으면 장점이 사라진다.
손실만 보면 큐 지연을 놓친다
CUBIC이나 Reno를 볼 때도 RTT, retransmit, timeout, queue delay를 함께 확인한다.
BBR은 pacing과 측정 품질이 핵심
병목 대역폭 추정이 흔들리면 전송률과 공정성도 함께 흔들린다.
DCTCP는 네트워크 장비까지 포함한 설정
엔드포인트 알고리즘만 바꿔서는 ECN 기반 제어가 제대로 동작하지 않는다.
혼잡 제어 변경은 커널 옵션보다 실측 비교가 먼저다
`tcp_congestion_control` 값을 바꾸기 전에 같은 트래픽 조건에서 처리량, RTT, 재전송, 큐 지연, 공정성을 함께 측정해야 한다. BBR이 모든 경로의 정답은 아니며, CUBIC이 더 안정적인 환경도 많다.