티스토리 뷰
[AI 네트워크 #07] ECN(Explicit Congestion Notification)과 WRED 혼잡 제어
Untitle Blog 2026. 8. 28. 09:58목차
안녕하세요, 네트워크 엔지니어 여러분.
지난 5강과 6강을 거치면서 우리는 무손실(Lossless) 이더넷을 가능케 하는 PFC(802.1Qbb)에 대해 공부했습니다. PFC는 패킷 드롭을 막아주는 고마운 존재이지만, 거칠게 작동하는 '급브레이크'와 같습니다. PFC Pause 신호가 자주 떨어질수록 트래픽 흐름이 멈칫거리고, 자칫 잘못하면 6강에서 배운 PFC Deadlock이라는 대재앙으로 이어질 위험을 안고 있죠.
비유하자면, 고속도로에서 앞차가 갑자기 완전 정지(PFC)하기 전에, "앞쪽에 정체가 시작되고 있으니 미리 속도를 줄이세요"라고 가속 페달을 살짝 떼도록 유도하는 스마트한 능동형 크루즈 컨트롤이 필요합니다.
AI 백엔드 네트워크에서 그 스마트한 능동형 속도 조절 장치 역할을 담당하는 것이 바로 ECN (Explicit Congestion Notification)입니다. 오늘 스터디 노트에서는 PFC와 ECN의 아름다운 협력 관계와 WRED 임계치 설정의 비밀을 파헤쳐 보겠습니다. 이론적 설명은 어렵습니다. 저도 자주 읽어봐야 겠습니다. ㅎㅎ

1. PFC(강제 정지)와 ECN(사전 속도 조절)의 협력 관계
우선 레거시 네트워크에서의 혼잡 제어 방식과 AI 패브릭의 방식을 비교해 보겠습니다.

- 레거시 WRED (Weighted Random Early Detection): 레거시 환경에서 WRED는 버퍼가 차오르면 패킷을 무작위로 버려서(Drop) 송신측 TCP가 "아, 패킷이 유실됐으니 정체가 생겼구나!" 하고 스스로 속도를 줄이게(TCP Window Congestion Control) 만들었습니다. 하지만 4강에서 배웠듯, RoCE v2 환경에서 패킷 드롭은 절대 금물입니다.
- AI 패브릭 ECN (Explicit Congestion Notification): ECN은 패킷을 단 1개도 버리지 않습니다. 스위치 버퍼가 일정 수준 이상 차오르면, 지나가는 IP 패킷 헤더의 특정 비트(CE Bit)에 "지금 버퍼 정체 중!"이라는 표시만 살짝 남겨서 통과시킵니다.
🚗 도로 상황으로 비유하는 PFC와 ECN의 역할 분담
- ECN (사전 속도 조절): 고속도로 전방 전광판에 "3km 앞 정체 시작" 메시지를 띄워 운전자(서버 RNIC)가 스스로 서서히 가속 페달을 떼게 만드는 가벼운 경고 메커니즘입니다.
- PFC (강제 정지 / 비상 브레이크): ECN 경고에도 불구하고 트래픽이 폭주하여 버퍼가 턱밑까지 차올랐을 때, 추돌 사고(패킷 드롭)를 막기 위해 물리적으로 엑셀을 강제 차단하는 비상 브레이크입니다.
즉, 평상시에는 ECN이 우아하게 속도를 밀당(Throttling)하며 트래픽을 관리 하고, 진짜 위급할 때만 PFC 브레이크가 개입하도록 설계하는 것이 AI 네트워크 튜닝의 정석입니다.
2. ECN 마킹 메커니즘 (IP Header 내 ECN 2비트 활용)
그렇다면 스위치는 지나가는 패킷에 어떻게 ECN 표시를 남길까요? 정답은 IPv4 / IPv6 헤더의 ToS(Type of Service) 필드 내 2비트 공간에 있습니다.

⚙️ ECN 2비트의 4가지 상태값
- 00 (Not-ECT): ECN 기능을 지원하지 않는 일반 패킷.
- 01 또는 10 (ECT - ECN-Capable Transport): 송신측 서버(RNIC)가 "나는 ECN 경고 신호를 알아들을 수 있는 똑똑한 장비다"라고 선언하며 패킷을 보낼 때 세팅하는 값 (주로 10 사용).
- 11 (CE - Congestion Encountered): ★ 핵심! ★ 스위치가 패킷을 통과시키면서 버퍼 정체를 감지했을 때, 기존 10이었던 비트를 11로 교체하여 인코딩한 상태.
🔄 End-to-End ECN 피드백 루프 (DCQCN 메커니즘)

- Sender(송신측 RNIC): ECN을 지원한다는 의미로 IP 헤더에 ECN=10을 태깅하여 패킷을 보냅니다.
- Switch(스위치): 스위치 버퍼 점유율이 정해진 임계치(Kmin)를 넘어서면, 지나가는 패킷의 ECN 비트를 ECN=11 (CE)로 변경하여 수신측으로 흘려보냅니다.
- Receiver(수신측 RNIC): ECN=11로 마킹된 패킷을 받으면, "아! 중간 스위치 버퍼가 터지기 직전이구나!"라고 판단합니다.
- CNP (Congestion Notification Packet) 발송: 수신측 RNIC는 즉시 송신측 RNIC로 CNP 제어 패킷을 보냅니다. CNP를 받은 송신측 RNIC는 데이터 주입 속도(Rate)를 하드웨어 레벨에서 밀리초 단위로 유연하게 감속시킵니다.
3. WRED 프로파일 설정: Kmin(최소 임계치), Kmax(최대 임계치), Probability 설정법
엔지니어가 스위치를 설정할 때 가장 골머리를 썩이는 부분이 바로 "언제부터 ECN 마킹을 시작할 것인가?"에 대한 버퍼 임계치(Threshold) 값 설정입니다. 이를 WRED / ECN 프로파일이라고 부릅니다.

- Kmin (최소 임계치): ECN 마킹이 시작되는 버퍼 시점입니다. 버퍼 점유량이 Kmin 이하일 때는 ECN 마킹을 전혀 하지 않습니다.
- Kmax (최대 임계치): ECN 마킹 확률이 100%가 되는 버퍼 시점입니다. Kmin과 Kmax 사이에서는 버퍼가 차오르는 비율에 비례하여(Probabilistic) 패킷에 CE 비트를 확률적으로 마킹합니다.
- Probability (최대 마킹 확률): Kmax 도달 시 ECN 비트를 마킹할 비율(보통 10% ~ 100% 설정).
💡 베테랑의 스터디 노트: 400G 스위치 ECN 튜닝 가이드
- 너무 작은 Kmin 설정: 트래픽이 조금만 들어와도 ECN이 발동하여 네트워크 대역폭을 100% 뽑지 못하고 속도가 주춤거립니다.
- 너무 높은 Kmin 설정: ECN이 제대로 속도를 줄이기도 전에 PFC Pause 급브레이크가 바로 걸려버립니다.
- 추천 베스트 프랙티스: 400G 스위치 포트 기준으로 Kmin은 보통 150KB ~ 300KB, Kmax는 1.5MB ~ 3MB 수준으로 설정하여 ECN 경고가 PFC Pause(XOFF)보다 훨씬 앞선 시점에 부드럽게 발동되도록 튜닝합니다.
4. 스위치 ASIC 버퍼 메모리 할당 전략 (Shared Buffer vs Dedicated Buffer)
마지막으로 ECN과 PFC가 실제로 작동하는 무대인 스위치 ASIC의 버퍼 메모리 구조를 이해해야 합니다.
최신 Merchant Silicon ASIC(Cisco Silicon One, Broadcom Tomahawk 등)의 내부 버퍼는 수십~수백 메가바이트(MB) 수준으로 한정되어 있습니다.

- Dedicated Buffer (전용 버퍼): 각 포트와 큐마다 고정으로 할당된 최소한의 공간입니다.
- Shared Buffer (공유 버퍼 Pool): 특정 포트에 순간적인 마이크로 버스트(Micro-burst) 트래픽이 몰릴 때, 다른 안 쓰는 포트의 버퍼를 가져다 쓸 수 있는 거대한 공유 공간입니다.
🎯 AI 백엔드 망에서의 버퍼 할당 전략
AI 트래픽은 Elephant Flow(거대 트래픽)가 특정 포트로 몰리는 특성이 강합니다.
따라서 스위치 QoS 설정 시, 일반 포트의 Dedicated 버퍼는 최소화하고 Shared Buffer의 비율을 극대화(Dynamic Threshold Allocation)하여 순간적인 Burst를 흡수한 뒤, 그 사이 ECN이 작동하여 속도를 줄이도록 유도하는 것이 정석입니다.
💡 7강 요약 및 엔지니어 스터디 노트
공부해 보니 ECN은 무손실 이더넷에 "지능과 우아함"을 더해주는 핵심 기술이었습니다. ECN이 능동적으로 속도를 제어해 주지 않는다면, PFC 브레이크가 끊임없이 걸리면서 패브릭 전체의 성능이 요동치게 될 것입니다.

이로써 SECTION 2 (RoCE v2 및 무손실 제어) 과정을 모두 마쳤습니다! RoCE v2(4강), PFC(5강), PFC Watchdog(6강), ECN(7강)으로 이어지는 무손실 4총사의 원리를 공부 했습니다.
다음 SECTION 3부터는 이 패브릭 위에 실제로 IP 경로를 만들어내고 가상화 오버레이를 올리는 라우팅 & 오버레이 패브릭 설계 (LLD) 영역으로 들어가 보겠습니다.
'레거시 엔지니어를 위한 AI 네트워크 패브릭 구축' 카테고리의 다른 글
| [AI 네트워크 #10] 프론트엔드 네트워크: EVPN-VXLAN 기반의 관리 및 K8s 오버레이 (0) | 2026.09.01 |
|---|---|
| [AI 네트워크 #09] BGP ECMP와 로드 밸런싱의 한계 극복 (Adaptive Routing) (1) | 2026.08.30 |
| [AI 네트워크 #08] eBGP 라우팅 아키텍처: RFC 7938 기반 무손실 라우팅 (0) | 2026.08.29 |
| [AI 네트워크 #06] PFC Deadlock(데드락)의 공포와 해결책 (PFC Watchdog) (1) | 2026.08.27 |
| [AI 네트워크 #05] 패킷 드롭은 절대 불가! PFC(Priority-Based Flow Control) 완벽 가이드 (0) | 2026.08.26 |
| [AI 네트워크 마스터 클래스 #04] InfiniBand vs Ethernet: RoCE v2(RDMA over Converged Ethernet)의 등장 (1) | 2026.08.25 |