핵심 인사이트 (3줄 요약)
- 본질: 혼잡 회피(Congestion Avoidance)는 슬로우 스타트로 미친 듯이 팽창하던 속도(CWND)가 임계점(ssthresh)에 도달했을 때, "여기서부터는 배수(x2)로 올리면 무조건 사고 난다! 지금부터는 패킷 100개를 보내서 영수증을 다 받아야 겨우 속도(CWND)를 딱 1개씩만 늘려라!"라며 브레이크를 걸고 정속 주행으로 찔끔찔끔 올라가는 안전 모드다.
- AIMD 알고리즘 (핵심 철학): 이 동작을 수학적으로 **AIMD (Additive Increase, Multiplicative Decrease)**라고 부른다. 속도를 올릴 때는 조심스럽게 "덧셈(+1)"으로 올리고(AI), 사고가 터져서 브레이크를 밟을 때는 얄짤없이 "나눗셈(/2)"으로 확 깎아버리는(MD) 극단적인 보수주의 철학이다.
- 공평성(Fairness)의 달성: 인터넷에 100대의 컴퓨터가 접속했을 때 어떤 놈은 1기가, 어떤 놈은 10메가를 쓰면 불공평하다. 이 AIMD 알고리즘이 돌아가면, 많이 쓰던 놈은 사고 날 때 절반으로 왕창 깎이고, 적게 쓰던 놈은 조금 깎이게 되어, 결국 100대의 컴퓨터가 대역폭을 $1/100$씩 똑같이 나눠 쓰게 되는 마법의 평등이 달성된다.
Ⅰ. 개요 및 필요성 (Context & Necessity)
-
개념: TCP 혼잡 제어의 2단계로, CWND가 ssthresh(임계치) 이상일 때 네트워크 혼잡을 유발하지 않도록 윈도우 크기를 선형적(Linear, +1 MSS per RTT)으로 서서히 증가시키는 상태.
-
필요성: 슬로우 스타트는 눈을 감고 엑셀을 밟는 것과 같다.
1 -> 2 -> 4 -> 8 -> 16 -> 32. 만약 도로의 한계가 17이었다면? 16에서 32로 두 배 점프하는 순간 라우터는 터진다. "임계점(16)에 도달했다는 건 이제 턱밑까지 물이 찼다는 뜻이야! 여기서부터는 32로 점프하지 말고, 17, 18, 19... 이렇게 1씩만 올려서 도로 한계선(17)을 조심조심 더듬으면서 찾아내자!" -
💡 비유: AIMD(혼잡 회피)는 젠가(Jenga) 게임에서 **"탑이 아슬아슬할 때의 블록 빼기"**와 같습니다.
- 게임 초반(Slow Start)에는 탑이 튼튼하니 한 번에 블록을 2, 3개씩 휙휙 빼도 무너지지 않습니다.
- 탑이 휘청거리기 시작하는 시점(ssthresh)부터는, 숨을 꾹 참고 조심스럽게 딱 1개씩만(Additive Increase) 빼야 합니다.
- 그러다 결국 탑이 와르르 무너지면(Packet Drop), 벌칙으로 쌓아둔 점수를 절반으로 왕창 깎아버립니다(Multiplicative Decrease).
📢 섹션 요약 비유: AIMD는 회사원의 **"월급과 주식 투자"**의 법칙입니다. 매달 월급을 모을 때는 100만 원씩 찔끔찔끔 힘겹게 더해지지만(Additive Increase), 경제 위기(혼잡)가 와서 주식이 폭락할 때는 순식간에 내 재산이 반토막(Multiplicative Decrease) 나버리는 눈물겨운 현실의 수학입니다.
Ⅱ. 혼잡 회피의 덧셈 로직과 AIMD의 기적 (Deep Dive)
1. 1 RTT당 딱 1개 증가 (+1 MSS)
슬로우 스타트는 영수증(ACK) 1개가 올 때마다 CWND를 1씩 늘렸다(그래서 패킷 10개를 쏘면 10개가 와서 $10+10=20$으로 2배가 되었다). 하지만 혼잡 회피 상태에 들어가면 로직이 바뀐다.
- 내가 패킷 10개를 쐈다 (
CWND=10). - 영수증(ACK)이 1개 올 때마다 CWND를
1올리는 게 아니라,1 / 10(즉1 / CWND) 만큼만 찔끔 올린다. - 결과적으로 영수증 10개가 다 도착해야 비로소
$1/10 * 10 = 1$이 되어, 내 CWND는 10에서 딱 11로 딱 1칸 성장하게 된다. (완벽한 선형 증가 곡선).
2. AIMD에 의한 공평성(Fairness) 수렴 원리
네트워크 공학에서 가장 아름다운 현상으로 꼽힌다. 100Mbps 선로에 사용자 A(80M 사용)와 사용자 B(20M 사용)가 있다 ──▶ 혼잡 발생! (총 100M 도달).
- 라우터가 꽉 차서 패킷을 버린다 (Drop 발생).
- A와 B는 동시에 이를 감지하고 속도를 깎는다 (Multiplicative Decrease).
- A는 80M에서 절반인 40M로 무려 40M나 깎인다!
- B는 20M에서 절반인 10M로 고작 10M만 깎인다!
- 합계가 50M가 되어 혼잡이 풀린다.
- 다시 둘 다 1Mbps씩 똑같이 야금야금 올린다 (Additive Increase). A는 41M, B는 11M...
- 결과: 이 짓을 수십 번 반복하다 보면, 많이 쏘던 놈은 훅훅 깎이고, 적게 쏘던 놈은 찔끔 깎이면서 마침내 A와 B가 50M : 50M 로 완벽하게 1:1 수렴(Fairness)하게 된다.
┌─────────────────────────────────────────────────────────────┐
│ AIMD 공평성(Fairness) 수렴의 마법 핑퐁 │
├─────────────────────────────────────────────────────────────┤
│ │
│ [ 100M 대역폭 한계선 ] │
│ │
│ * 1라운드 혼잡: A(80) + B(20) = 100 ──▶ 절반 삭감! │
│ A(40) + B(10) = 50 (격차 30으로 줄어듦) │
│ │
│ * 2라운드 증가: 둘 다 25씩 똑같이 늘림 (+25) │
│ A(65) + B(35) = 100 ──▶ 꽉 참! 절반 삭감! │
│ A(32.5) + B(17.5) = 50 (격차 15로 더 줄어듦!) │
│ │
│ ▶ "이 톱니바퀴를 무한 반복하면, 결국 거인과 난쟁이는 완벽하게 │
│ 똑같은 덩치 (50 vs 50)로 키가 맞춰지는 기적이 일어난다!" │
└─────────────────────────────────────────────────────────────┘
📢 섹션 요약 비유: AIMD는 세금 징수의 원리와 같습니다. 돈을 벌 때(속도 증가)는 부자나 빈자나 똑같이 연 1천만 원씩 일률적으로 벌게 놔둡니다(Additive). 하지만 국가 위기(혼잡)가 오면 재산 비례세(Multiplicative)를 때려, 부자의 재산을 절반(40M) 몰수하고 빈자의 재산도 절반(10M) 몰수합니다. 이 정책을 수십 번 반복하면 부자와 빈자의 재산 격차는 사라지고 평등해집니다.