본문 바로가기

개발/네트워크

tcp 혼잡제어

 

📡 TCP 혼잡 제어(Congestion Control) – 핵심 개념과 알고리즘 총정리

🔎 혼잡 제어란?

TCP(Transmission Control Protocol)는 신뢰성 있는 전송을 보장하는 프로토콜입니다. 그런데 네트워크에 너무 많은 데이터가 한꺼번에 몰리면 혼잡(Congestion) 이 발생해 패킷 손실, 지연 증가 등의 문제가 생깁니다.

이런 상황을 방지하기 위해 TCP는 혼잡 제어 알고리즘을 통해 네트워크 상태를 판단하고 전송 속도를 동적으로 조절합니다.


🧠 TCP 전송 윈도우의 3가지 구성

TCP 전송 속도를 조절하는 핵심은 전송 윈도우입니다. 이건 3가지 중 최소값으로 결정됩니다:

  • Congestion Window (cwnd): 혼잡 제어용 윈도우
  • Receiver Window (rwnd): 수신 측의 버퍼 크기
  • Advertised Window: 송신 측이 고려하는 실제 사용 가능한 윈도우

전송 윈도우 = min(cwnd, rwnd)


🚦 주요 TCP 혼잡 제어 알고리즘

1️⃣ Slow Start (느린 시작)

  • 처음 연결 시 cwnd = 1 MSS로 시작해 전송 성공 시마다 2배씩 지수 증가.
  • 갑자기 너무 빠르게 증가하면 네트워크가 감당 못하니, 일정 값인 ssthresh를 기준으로 다른 알고리즘으로 전환됨.

📌 목적: 갑자기 많은 데이터를 보내 네트워크를 폭주시키지 않기 위해 천천히 시작함.


2️⃣ Congestion Avoidance (혼잡 회피)

  • cwnd가 ssthresh 이상이 되면 더 이상 지수 증가하지 않고, 선형 증가 (1 MSS씩 증가).
  • 안정적인 전송 속도를 유지하면서 혼잡 여부를 탐색.

📌 목적: 혼잡을 방지하기 위해 신중히 속도 증가.


3️⃣ Fast Retransmit (빠른 재전송)

  • 3번 중복 ACK를 받으면 타임아웃을 기다리지 않고 바로 패킷 재전송.

📌 목적: 패킷 손실을 빠르게 감지해 빠르게 복구.


4️⃣ Fast Recovery (빠른 회복)

  • 패킷 손실 후 cwnd를 절반으로 감소시키고, 선형 증가 방식으로 혼잡 회피 모드로 전환.

📌 목적: 패킷 손실 이후에도 전송 속도를 완전히 줄이지 않고 빠르게 회복.


📈 혼잡 제어 알고리즘의 발전

알고리즘 특징 목적

Tahoe Slow Start + Congestion Avoidance + Fast Retransmit 손실 시 cwnd = 1로 완전히 초기화
Reno Tahoe + Fast Recovery 손실 후 cwnd 절반 유지로 빠른 회복
NewReno Reno 개선. 여러 패킷 손실에도 Fast Recovery 유지 다수 손실에 효과적
Vegas RTT 기반 혼잡 예측. 손실 없이 혼잡 탐지 예방 위주 혼잡 제어
CUBIC 시간 기반 비선형 cwnd 증가 (리눅스 기본) 대역폭 높은 환경에서 효율적
BBR (Bottleneck Bandwidth and RTT) 구글 개발. 대역폭/지연 측정 기반 속도 제어 손실 기반이 아닌 모델 기반 제어

💡 각 알고리즘 간 비교 요약

기준 Tahoe Reno NewReno Vegas CUBIC BBR

손실 탐지 3 중복 ACK 3 중복 ACK 다수 중복 ACK RTT 변화 감지 손실 기반 대역폭/지연 측정
복구 속도 느림 빠름 더 빠름 손실 예방 고속 회복 모델 기반
도입 시기 초창기 이후 기본 개선형 실험적 리눅스 기본 최신 (구글)

✍️ 정리 한 줄 요약

TCP 혼잡 제어는 네트워크 상태를 반영해 속도를 조절하는 기법이며, 대표적으로 Slow Start → Congestion Avoidance → 손실 발생 시 Fast Retransmit & Fast Recovery 단계를 거칩니다. 최신에는 BBR처럼 예측 기반 제어도 사용됩니다.

 

'개발 > 네트워크' 카테고리의 다른 글

TCP와 HTTP의 관계  (0) 2025.05.27
VPN의 작동 원리  (0) 2025.05.27
네트워크 데이터 단위  (0) 2025.05.27
공유기 및 스위치에 대하여  (0) 2025.05.27
TCP 송/수신 원리  (0) 2025.05.27