Congestion Control & Window Mechanics
네트워크 전체의 병목과 혼잡을 감지하여 전송 속도를 지능적으로 제어하는 TCP 혼잡 제어 알고리즘과 윈도우 슬라이딩의 물리적 심화를 다루는 학습 노드입니다.
sys.entry
M
Me
hyunyoun's Blog
posts7 min read
1. Overview
혼잡 제어 및 윈도우 역학(Congestion Control & Window Mechanics, CWM)은 도로의 정체(Congestion)를 보고 자동차 속도를 줄이듯, 네트워크 통로의 물리적 포화 상태를 감지하여 전송 속도를 수적으로 최적화하는 전송 계층의 지능형 엔진입니다.
학습자는 수신측 버퍼에 의존하는 '흐름 제어'를 넘어, 네트워크 망 자체의 상태에 반응하는 **혼잡 제어(Congestion Control)**의 수리 모델을 배웁니다. 특히, 조심스럽게 속도를 올리는 Slow Start와 장애 감지 후 속도를 줄이는 Congestion Avoidance, 그리고 소켓 대역폭을 결정하는 혼잡 및 수신 윈도우의 물리적 결합 기제를 익힙니다. 이를 통해 전체 대역폭을 공평하면서도 극한으로 활용하는 하이엔드 네트워크 튜닝 및 아키텍처 설계 역량을 확보합니다.
2. Scope & Boundaries
In-Scope
- TCP Congestion Window (cwnd): 혼잡 제어를 위한 송신측 수리적 한계치 관리
- Algorithm Stages: Slow Start, Congestion Avoidance, Fast Retransmit, Fast Recovery
- Congestion Signal: 패킷 유실(Time-out)과 중복 ACK를 통한 물리적 혼잡 감지
- BDP (Bandwidth-Delay Product): 네트워크 파이프를 채우기 위한 최적의 윈도우 크기 산출
- Modern Variants: TCP Tahoe, Reno, NewReno, CUBIC, BBR의 수리적 수순 비교
Out-of-Scope
- IP 계층의 라우팅 테이블 계산 상세 (08-01-02 영역에서 분담)
- HTTP 애플리케이션 계층의 캐싱 및 압축 (08-03-01 영역에서 분담)
Boundaries
- CWM vs. Flow Control: 흐름 제어(08-01-03)가 '상대방의 빈 공간'에 집중한다면, CWM은 '길의 혼잡도'에 집중하여 규칙으로 송신량을 최종 결정하는 상위 물리학으로서 구분합니다.
3. Counterexample
- 단순히 "인터넷이 느리면 속도를 줄인다"라 설명하는 것은 CWM 학습이 아닙니다. 왜 패킷 유실이 발생했을 때 윈도우 크기를 수준으로 급격히 떨어뜨리는 물리적 조치가 '네트워크 붕괴(Congestion Collapse)'를 막는 필수 수리 수순인지 증명할 수 있어야 하며, **대역폭-지연 곱(BDP)**이 큰 초고속 망에서 기본 윈도우 설정이 왜 하드웨어 성능의 10%도 쓰지 못하게 만드는지 논증하지 못한다면 CWM의 정수를 이해하지 못한 것입니다.
4. Prerequisites
- Transport Layer Mechanisms (Basic): 소켓 통신 및 흐름 제어 기초 이해가 필수입니다. (08-01-03 TLM)
- IP & TCP Core Dynamics (Recommended): TCP 시퀀스 및 세션 관리 이해가 권장됩니다. (08-02-01 ITD)
5. Learning Map
- Window Duality: 수신측이 허용한 양(rwnd)과 네트워크가 허용한 양(cwnd)의 이중 물리 구조를 이해합니다.
- Probing the Pipe: 데이터 량을 2배씩 늘려가며(Slow Start) 네트워크의 한계를 수리적으로 탐색합니다.
- The Braking System: 충돌이나 유실 감지 시, 전송 속도를 수학적으로 얼마나 깎을지 결정하는 전략을 익힙니다.
- Saturation Efficiency: 단 한 비트의 낭비도 없이 네트워크 파이프를 꽉 채워 흐르게 하는 물리학을 완성합니다.
6. Learning Topics
Basic
Core: 혼잡 윈도우와 전송 제어 (Congestion Window Basics)
- Why to Learn: 송신자가 수신자가 원해도 보낼 수 없는 '네트워크 혼잡'이라는 물리적 제약을 인식하기 위해서입니다.
- What to Learn:
- cwnd (Congestion Window): 네트워크 부하에 따라 동적으로 변하는 수치
- Window Duality Rule: 수리 법칙
- Threshold (): 급가속과 정속 주행을 가르는 수치적 기준점
- How to Learn:
tcpdump로그를 분석하여 데이터 전송량이 시간에 따라 어떻게 지수적으로 늘어나는지 그래프 그리기 실습- 혼잡 윈도우가 가득 찼을 때 앱이 더 이상
write를 하지 못하고 블로킹되는 물리 현상 확인
- Implement: 현재 윈도우 값에 따라 보낼 수 있는 바이트 수를 계산하는 기초
WindowManager
Recommended
Core: 고전적 혼잡 제어 알고리즘 (Legacy Algorithms)
- Why to Learn: 현대 알고리즘들이 해결하려는 '뿌리 깊은 문제'를 이해하여 트러블슈팅 능력을 배양하기 위함입니다.
- What to Learn:
- Slow Start: 매 ACK마다 윈도우를 1씩(결국 2배) 늘리는 공격적 탐색 물리학
- Congestion Avoidance: 도달 후 선형적으로 속도를 올리는 수리적 신중함
- Tahoe vs Reno: 재전송 후 윈도우를 1로 줄일지, 절반으로 줄일지에 대한 논리적 격차
- How to Learn:
- 네트워크 시뮬레이터(NS-3 등)에서 Tahoe와 Reno의 수평 처리량() 시계열 데이터 비교 분석
- '중복 ACK 3회'가 왜 하드웨어 장애가 아닌 '혼잡'의 신호로 해석되는지 수리적 분석
- Implement: Reno 알고리즘의 윈도우 증감 로직을 모사하는
RenoEngine
Practical
Core: 고속 네트워크를 위한 CUBIC과 BBR (Modern Dynamics)
- Why to Learn: 10G 이상의 초고속 망이나 지연이 큰 위성/해저 망에서 최적의 성능을 끌어내기 위해서입니다.
- What to Learn:
- CUBIC Architecture: 리눅스 표준으로, 3차 함수를 이용해 윈도우를 회복하는 물리학
- BBR (Bottleneck Bandwidth and RTT): 손실이 아닌 '지연 시간 변화'로 혼잡을 예측하는 구글의 수리 모델
- Hybrid Slow Start: 패킷 손실 전 미리 속도를 줄여 지연을 최소화하는 하이브리드 수순
- How to Learn:
- 리눅스 커널 설정을
sysctl로 변경하며 CUBIC과 BBR 환경에서의 파일 다운로드 속도 물리 측정 실습 - '버퍼블로트(Bufferbloat)' 현상이 CWM 알고리즘에 의해 어떻게 수치적으로 완화되는지 분석
- 리눅스 커널 설정을
- Implement: 특정 조건에서 CUBIC 함수를 계산하여 다음 윈도우 크기를 도출하는
CubicCalculator
Advanced
Core: BDP 기반 파이프라인 튜닝 (BDP & Performance)
- Why to Learn: 전 세계 규모의 인프라를 설계할 때 하드웨어 투입 대비 성능 실종 문제를 물리적으로 해결하기 위함입니다.
- What to Learn:
- Bandwidth-Delay Product (BDP): 특정 시점 파이프 안에 존재해야 하는 패킷의 총량() 산출
- Window Scaling Option: 64KB 한계를 넘어 기가바이트급 윈도우를 사용하는 RFC 1323 수리 확장
- Active Queue Management (AQM): 라우터가 미리 패킷을 버려 송신측에 '주의'를 주는 물리적 협치
- How to Learn:
- 서울-뉴욕 간의 지연 시간(200ms)과 대역폭(1Gbps)을 바탕으로 필수 윈도우 크기를 수리적으로 계산하는 실습
- 윈도우 크기 부족으로 하드웨어가 'Idle' 상태에 빠지는 물리적인 자원 낭비 현상 측정
- Implement: 네트워크 경로 정보를 입력받아 최적의 커널
TCP Window설정값을 제안하는TuningAdvisor
7. Terminology
8. References
Primary
- [P1] CS2023 - NC/Networking and Communication (Reliability and flow control / Network analysis) — Transport logic.
- [P2] SWEBOK v4.0 - Software Engineering Professional Practice / Communication Skills (Technical standards) — Performance context.
Secondary
- [Computer Networking: A Top-Down Approach] Jim Kurose — Congestion control chapters.
- [High Performance Browser Networking] Ilya Grigorik — BDP and latency optimization.
Industry
- [RFC 5681: TCP Congestion Control] — The foundational standard.
- [Google: BBR Congestion Control Research] — Modern performance breakthrough.
9. Final Checklist
Primary
- '혼잡 제어'가 없다면 분산 네트워크 전체가 왜 '혼잡 붕괴'라는 물리적 마비 상태에 빠지는지 서술 가능한가? (P1)
- 'Slow Start'와 'Congestion Avoidance'를 가르는 수리적 기준점()의 역할을 설명할 수 있는 가? (P1)
Secondary
- '패킷 유실' 시 윈도우를 대폭 줄이는 방식이 무선망(Wi-Fi)에서 왜 수리적으로 비효율적일 수 있는지 소통 가능한가?
- BDP 계산을 통해 도출된 '최적 윈도우 크기'가 실제 하드웨어 메모리 설정과 어긋날 때 발생하는 물리 현상을 논증할 수 있는 가?
Industry
- 클라우드 기반 미디어 스트리밍 서버 구현 시, BBR 알고리즘 적용 시의 하드웨어 처리량 개선 수치를 산출할 수 있는 가? (SFIA)
- '네트워크 드리프트'가 심한 모바일 환경에서 혼잡 제어 윈도우의 물리적 변동성을 최소화하는 전략을 제안할 수 있는 가?