1088. ECN 징후 큐 통지 - Explicit Congestion Notification 명시적 혼잡 통지 라우터 버퍼블로트 AQM 패킷 드롭 예방 TCP 플래그 IP 헤더

핵심 인사이트: (968번 혼잡 제어 심화) 서버가 패킷을 미친 듯이 쏘면 중간 라우터 기계의 대기열(Queue)이 꽉 찬다. 라우터는 큐가 터지면 무식하게 들어오는 패킷을 가위로 싹둑싹둑 잘라서 바닥에 버려버린다(Packet Drop). 이걸 본 서버는 "어? 패킷이 버려졌네? 길 막히나 봐!" 하고 속도를 확 줄인다(TCP 혼잡 제어). "야 라우터! 넌 입이 없냐? 패킷을 바닥에 버리고 나서야 서버한테 길 막힌다고 신호(Drop)를 주는 건 미친 낭비잖아! 큐가 꽉 차기 직전에, 지나가는 패킷 껍데기(IP 헤더) 이마에다가 빨간 도장(ECN)을 '쾅' 찍어서 몰래 올려 보내! 그럼 수신자가 그 도장을 보고 서버한테 '야! 라우터가 길 막힌다니까 속도 좀 줄이래!'라고 전화해 줄 거 아니야!" 패킷을 죽이지 않고 살리면서 속도를 늦추는 위대한 신호탄, ECN이다.

Ⅰ. 기존 라우터의 비극: 꼬리 자르기 (Tail Drop)

  • 일반적인 라우터는 메모리 큐(Queue)가 꽉 차면, 새로 도착하는 놈들을 무자비하게 쓰레기통에 버립니다(Drop).
  • 이 버려진 걸 서버가 눈치챌 때까지 시간(Timeout)이 한참 걸리고, 이미 막대한 트래픽 쓰레기가 회선을 낭비한 뒤입니다. 재전송(Retransmission)까지 겹쳐서 인터넷이 완전 마비됩니다(Global Synchronization 현상).

Ⅱ. ECN (Explicit Congestion Notification)의 탄생 🌟

  • 개념: 라우터가 패킷을 무식하게 버리지 않고, 자신의 버퍼(Queue)가 가득 차서 혼잡해질 징조가 보이면, 통과하는 IP 패킷의 헤더 특정 비트에 '혼잡함(Congestion Experienced)'이라는 경고 도장을 쾅 찍어 목적지로 살려서 보내는 명시적(Explicit) 알림 프로토콜입니다.

Ⅲ. ECN의 완벽한 4단계 핑퐁 프로세스 🌟 핵심 기출 🌟

ECN이 작동하려면 IP 계층(라우터)과 TCP 계층(서버/PC)이 완벽하게 손발을 맞춰야 합니다.

1단계: 통신 준비 (나 ECN 쓸 줄 알아!)

  • PC(클라이언트)가 서버와 맨 처음 악수(TCP 3-way Handshake)를 할 때, TCP 헤더에 ECECWR 플래그를 1로 세팅해서 던집니다. "우리 둘 다 ECN 기능 켜자!"

2단계: 라우터의 징후 감지 및 도장 찍기 (IP 헤더 마킹) 🌟

  • 서버가 넷플릭스 영상을 쏩니다. (IP 헤더의 ToS 필드 맨 끝 2비트를 01이나 10으로 맞춰 'ECN 가능 패킷'임을 표시)
  • 중간 라우터의 큐(Queue)가 80%까지 찼습니다(AQM, RED 알고리즘 감지). "아 ㅆㅂ 터지기 일보 직전이네!"
  • 라우터는 패킷을 버리지 않습니다. 대신 지나가는 IP 헤더의 ECN 2비트 꼬리표를 11 (CE, Congestion Experienced)로 쓱 지우고 빨간 도장을 쾅 찍어 그대로 살려서 보냅니다.

3단계: 목적지 PC의 확인 및 경고장 발송 (TCP 헤더)

  • PC가 영상 패킷을 까봤는데, IP 헤더 이마에 라우터가 찍은 빨간 도장(11 CE)이 묻어 있습니다!
  • "헐! 오는 길에 라우터가 터지려나 보네?"
  • PC는 즉시 서버에게 영수증(ACK)을 보낼 때, TCP 껍데기 플래그에 ECE (ECN-Echo, 나 혼잡 알람 받았음!) 깃발을 꽂아서 서버로 긴급 경고장을 날립니다.

4단계: 서버의 브레이크 밟기 (CWR 플래그)

  • 경고장을 받은 넷플릭스 서버는 "알았어! 속도 반으로 팍 줄일게!" 하며 윈도우 사이즈(CUBIC 등)를 강제로 깎아버립니다.
  • 그리고 다음 영상 패킷을 보낼 때 TCP 헤더에 CWR (Congestion Window Reduced, 나 윈도우 줄였어 안심해!) 깃발을 꽂아 PC에게 알려줍니다.
  • 라우터는 들어오는 양이 확 줄어들었으니 큐의 숨통이 트여 뻗지 않고 살아납니다.

Ⅳ. 왜 이게 위대한가? (버퍼블로트 해결)

  • 패킷 유실(Drop)이 0에 수렴합니다.
  • 패킷을 버리고 다시 쏘려면 1초의 화면 멈춤(재전송 딜레이)이 터지지만, ECN을 쓰면 화질만 살짝 나빠질 뿐 화면이 절대 끊기지 않는 기적의 스트리밍 방어가 달성됩니다. 데이터센터의 1050번 RoCE v2 (RDMA) 인프라망을 안 터지게 유지하는 절대 1순위 심장 제어기입니다.

📢 섹션 요약 비유: 기존 혼잡 제어(패킷 드롭) 방식은 고속도로 톨게이트 직원이 차가 너무 막히면 **'밀고 들어오는 뒤차들을 낭떠러지로 무자비하게 밀어서 죽여버리는 끔찍한 대학살'**입니다. 차를 보낸 택배 회사는 차가 죽어 안 돌아온 것을 한참 뒤에 알고 눈물을 머금고 또 차를 보냅니다. **ECN(명시적 혼잡 통지)**은 톨게이트 직원이 대학살을 멈추고 차를 살려주는 **'경고 딱지 꼼수'**입니다. 차가 너무 막힐 것 같으면, 직원은 차를 밀어 죽이는 대신 지나가는 택배 차량 앞유리에 "여기 톨게이트 터지기 직전임!(CE 도장)"이라는 노란 딱지를 철썩 붙여 통과시킵니다. 이 딱지를 달고 목적지(고객)에 도착하면, 고객은 택배 회사(서버)에 전화를 걸어 "야! 너네 차 앞유리에 톨게이트 터진다는 딱지 붙어있더라! 차 그만 보내!(ECE 경고)"라고 귀띔을 해줍니다. 택배 회사는 즉시 차량 출고 대수를 확 줄여서(CWR 응답) 고속도로의 체증을 싹 풀어버립니다. 차를 1대도 파괴(Drop)하지 않고 편지(비트 마킹) 한 장으로 교통정리를 끝내버리는 평화롭고 완벽한 혼잡 회피 메커니즘입니다.