핵심 인사이트 (3줄 요약)

  1. 본질: WRED(Weighted Random Early Detection)는 라우터 큐(대기열)가 꽉 찼을 때 뒤에 오는 패킷을 한꺼번에 모조리 다 썰어버리는 무식한 꼬리 자르기(Tail Drop) 현상을 막기 위해, 큐가 다 차기 전에 미리 눈치껏 "무작위로(Random) 조금씩 솎아내어(Early Detection)" 부하를 사전에 빼주는 스마트 혼잡 회피 알고리즘이다.
  2. TCP 글로벌 동기화 방지: Tail Drop이 발생하면 100대의 PC가 동시에 패킷이 죽었다고 판단하여 전송 속도를 0으로 확 줄였다가 동시에 확 올리는 미친 파도타기(TCP Global Synchronization)가 발생하는데, WRED는 패킷을 무작위로 1~2개씩만 툭툭 죽여서 PC들이 시차를 두고 부드럽게 속도를 줄이도록 유도한다.
  3. 가중치(Weighted)의 차별성: 그냥 무작위로 아무거나 죽이는 게(RED) 아니라, 패킷 이마에 붙은 DSCP 금수저 딱지(Weighted)를 보고 "아, 황족(EF) 패킷은 버릴 확률을 1%로 하고, 천민(BE) 패킷은 버릴 확률을 50%로 하자!"라며 차별적인 살생부를 적용한다.

Ⅰ. 개요 및 필요성 (Context & Necessity)

  • 개념: 라우터의 버퍼(큐) 혼잡이 발생하기 이전에, 트래픽의 IP 우선순위(DSCP)에 따라 차등화된 확률(Probability)로 패킷을 선제적으로 폐기하여 TCP의 혼잡 제어 메커니즘을 부드럽게 유도하는 Active Queue Management(AQM) 기술.

  • 필요성: 라우터 큐가 100칸이다. 일반 라우터는 100칸이 꽉 찰 때까지 가만히 구경하다가, 101번째부터 들어오는 패킷은 그게 VIP든 뭐든 모조리 다 모가지를 날려버린다(Tail Drop). 이때 하필 잘 가고 있던 TCP 세션 수십 개가 동시에 꼬리가 잘린다. TCP는 패킷이 유실되면 "헉! 길 막힌다! 전송 속도 반으로 줄여(혼잡 제어)!"라고 반응한다. 수십 대의 PC가 동시에 속도를 0으로 줄였다가, 큐가 비면 다시 동시에 속도를 풀악셀로 밟는다. 네트워크 그래프가 미친 듯이 출렁거리며 낭비된다(TCP Global Synchronization). 이걸 막을 부드러운 브레이크가 필요했다.

  • 💡 비유: Tail Drop이 영화관 입구에서 100명이 꽉 찼을 때 **"101번부터는 입장 불가! 문 닫아!"**라고 매몰차게 셔터를 내리는 것이라면, WRED는 영화관이 한 70명쯤 찼을 때부터 줄 서 있는 사람들 중 **무작위로 몇 명의 어깨를 툭툭 치며 "오늘은 자리 없으니 다른 데 가보세요(사전 폐기)"**라고 조금씩 빼내어 입구에 몰려드는 인파 자체를 부드럽게 줄여나가는 기술입니다.

📢 섹션 요약 비유: WRED는 고속도로 톨게이트 전방 10km 지점에 세워둔 **"우회 권고 전광판(조기 경보)"**입니다. 톨게이트가 완전히 막혀서 차들이 다 같이 급브레이크를 밟고 연쇄 추돌(TCP 동기화)을 일으키기 전에, 멀리서부터 차들을 한두 대씩 국도로 미리 빼내어 교통 흐름을 부드럽게 유지합니다.


Ⅱ. WRED의 동작 파라미터와 살생부 그래프 (Deep Dive)

1. WRED의 3가지 동작 구간 (수위 조절)

WRED는 큐(버퍼)에 물이 얼마나 찼는지 수위(Queue Depth)를 보고 행동을 결정한다.

  1. 최소 임계치 (Minimum Threshold) 미만 구간:
    • 큐가 0% ~ 30% 정도만 찼다. 아주 널널하다.
    • 라우터 행동: "다 통과! 단 1방울도 안 버림!" (Drop 확률 0%)
  2. 최소 임계치 ~ 최대 임계치 (Maximum Threshold) 사이 구간 ★핵심:
    • 큐가 30% ~ 80% 사이로 찼다. 슬슬 위험하다.
    • 라우터 행동: "여기서부터 Random(무작위) 살생을 시작한다!" 큐가 차오를수록 패킷을 버릴 확률을 1%에서 10%까지 서서히 높이면서 뒤에서 오는 패킷들을 도끼로 툭툭 쳐낸다.
  3. 최대 임계치 (Max Threshold) 초과 구간:
    • 큐가 80%를 넘어 100%를 향해 간다. 댐이 터지기 직전이다.
    • 라우터 행동: "자비는 없다! 들어오는 족족 100% 확률로 모조리 죽여버려!(Tail Drop 발동)"

2. Weighted(가중치)의 진가: 차별적 살생부

WRED의 진정한 무서움은, 위에서 말한 1~3번의 임계치 수위를 **"DSCP 딱지(신분)마다 다르게 설정"**한다는 것이다.

  • BE (천민 패킷):
    • 최소 임계치를 20%로 낮게 잡는다. 즉, 큐가 20%만 차도 "어이 천민들, 너희부터 버려질 준비 해라"라며 가장 먼저 사살(Drop)이 시작된다.
  • AF31 (우등생 패킷):
    • 최소 임계치를 50%로 잡는다. 큐가 절반 찰 때까지는 절대 버리지 않고 안전하게 지켜주다가, 50%를 넘어야 솎아내기 시작한다.
  • EF (황족 패킷):
    • WRED 자체를 거의 적용하지 않거나, 최소 임계치를 90%로 잡아서 세상이 멸망하기 직전까지 절대 버리지 않고 살려둔다.
 ┌─────────────────────────────────────────────────────────────┐
 │                WRED 확률적 폐기(Drop Probability) 그래프         │
 ├─────────────────────────────────────────────────────────────┤
 │ Drop 확률(%)                                                  │
 │  100 |                                 /| (최대 임계치 돌파 시 100% 즉사)│
 │      |                                / |                   │
 │   10 |                              /   |                   │
 │      |                            /     |                   │
 │    0 |__________________________/_______|______ 큐에 쌓인 패킷량│
 │                               (Min)   (Max)                 │
 │                                                             │
 │   ▶ 큐가 Min 수위를 넘는 순간부터 랜덤하게 패킷 모가지를 날리기 시작하며, │
 │      Max 수위에 도달하면 자비 없이 전부 Tail Drop 시켜버린다!          │
 └─────────────────────────────────────────────────────────────┘

3. TCP와 UDP에 미치는 영향

  • TCP: WRED가 패킷을 하나 툭 죽이면, 그걸 눈치챈 PC의 TCP 윈도우 사이즈가 절반으로 뚝 꺾인다. 즉, 라우터가 원하는 대로 "스스로 속도를 줄이는(혼잡 회피)" 착한 반응을 보인다.
  • UDP: 얘는 피도 눈물도 없어서 WRED가 패킷을 죽이든 말든 신경 안 쓰고 계속 10Gbps로 쏟아붓는다. 그래서 WRED는 UDP 폭주를 막기 위해 울며 겨자 먹기로 UDP 패킷들을 계속 썰어버려야 한다.

📢 섹션 요약 비유: WRED는 배가 가라앉으려고(혼잡) 할 때, 배가 완전히 침몰하기 전에 미리 "가장 싼 짐(BE 패킷)"부터 무작위로 하나씩 바다에 던져서(Random Drop) 배의 무게를 가볍게 만들어 서서히 안정을 찾는 고도의 생존 전략입니다.