RED로 버퍼 포화 전에 네트워크 혼잡 제어하기

RED(Random Early Detection)의 확률적 패킷 드롭 방식, 임계값 모델, WRED·ECN 조합과 네트워크 혼잡 제어 활용을 정리한다.

2026-08-14 · 최초 발행 2025-08-10

버퍼가 가득 차기 전에 혼잡 신호를 보내는 방식

라우터나 스위치의 버퍼가 포화되면 패킷 손실이 발생하고, 그 영향은 곧 네트워크 성능 저하로 이어진다. RED(Random Early Detection)는 버퍼가 완전히 찰 때까지 기다리지 않고, 혼잡 징후가 보이는 시점부터 확률적으로 패킷을 드롭해 TCP의 혼잡 윈도우 축소를 유도하는 알고리즘이다.

버퍼가 가득 찬 뒤에만 새 패킷을 폐기하는 Tail Drop과 달리, RED는 큐 점유 상태를 기준으로 사전에 반응한다. 여러 TCP 연결이 한꺼번에 윈도우를 줄이는 상황을 완화하고, 큐가 길어지면서 생기는 지연도 줄이는 것이 목적이다.

큐 점유율에 따라 달라지는 드롭 결정

RED의 처리는 최소 임계값과 최대 임계값 사이에서 달라진다. 평균 큐 크기가 최소 임계값보다 낮으면 패킷을 버리지 않는다. 두 임계값 사이에서는 점유율이 높아질수록 드롭 확률을 높이며, 최대 임계값을 넘으면 Tail Drop으로 전환해 새로 들어오는 패킷을 모두 버린다.

최소 임계값 미만최소 임계값 ~ 최대 임계값최대 임계값 초과버리기로 결정유지하기로 결정패킷 도착버퍼 점유율 확인No DropRandom DropTail Drop패킷 처리확률 계산패킷 Drop

이 과정은 패킷 하나하나를 무작위로 버리는 데 목적이 있지 않다. TCP 연결이 손실 신호를 받아 전송량을 조절하도록 하면서, 큐가 포화 상태에 도달하는 일을 줄이는 데 초점이 있다.

평균 큐 크기로 계산하는 확률

RED의 패킷 드롭 확률 p는 평균 큐 크기 avg와 임계값으로 정한다.

  • avg가 최소 임계값 min_th 미만이면 p = 0
  • avgmin_th와 최대 임계값 max_th 사이이면 p = (avg - min_th) / (max_th - min_th) * max_p
  • avgmax_th를 초과하면 p = 1

max_p는 최대 확률값이며 일반적으로 0.1~0.2다.

YesNoYesNo평균 크기 계산avg < min_th?Drop 확률 = 0avg < max_th?Drop 확률 =(avg-min_th)/(max_th-min_th)*max_pDrop 확률 = 1

임계값과 최대 확률은 고정된 정답이 아니다. 네트워크 환경에 맞춰 조정해야 하며, 적절한 값을 찾기 어렵다는 점도 RED 운영의 제약이다.

Tail Drop보다 앞서 개입할 때 얻는 효과

RED는 버퍼 포화 전에 개입하므로 심각한 혼잡에 이르기 전 성능 저하를 줄일 수 있다. Tail Drop 환경에서는 여러 TCP 연결이 동시에 윈도우를 축소하는 글로벌 동기화가 발생할 수 있지만, RED의 랜덤 드롭은 이를 완화한다.

랜덤 드롭은 TCP 연결에 동일한 확률로 영향을 주므로 공정성 측면에서도 이점이 있다. 또한 버퍼가 꽉 찰 때까지 패킷을 쌓지 않아 큐 지연을 낮출 수 있다.

다만 패킷의 중요도를 구분하지 않는 경우 중요한 패킷도 드롭될 수 있다. 짧은 시간에 대량의 패킷이 들어오는 버스트 트래픽에 대한 대응도 제한적이다.

우선순위와 플로우를 고려한 변형

RED의 제약을 보완하기 위해 여러 변형이 사용된다.

  • WRED(Weighted RED)는 IP Precedence나 DSCP 같은 우선순위에 따라 서로 다른 드롭 확률을 적용한다.
  • FRED(Flow RED)는 개별 플로우 단위로 드롭 확률을 계산해 공정성을 더 높인다.
  • Adaptive RED는 네트워크 상황에 따라 RED 파라미터를 자동으로 조정한다.
REDWREDFREDAdaptive RED우선순위 기반 차별적 드롭플로우 기반 공정성 향상자동 파라미터 조정

장비와 Linux에서의 설정 예시

Cisco 라우터에서는 다음 명령으로 우선순위 0 트래픽에 최소 임계값 32, 최대 임계값 256, 최대 확률 1/10을 적용하는 WRED 설정을 둘 수 있다.

Router(config-if)# random-detect
Router(config-if)# random-detect precedence 0 32 256 10

Linux에서는 tc로 인터페이스에 RED 큐잉 규칙을 적용할 수 있다. 아래 설정은 eth0에 최소 임계값 30000바이트, 최대 임계값 90000바이트, 드롭 확률 0.1을 지정한다.

tc qdisc add dev eth0 root red limit 500000 min 30000 max 90000 avpkt 1000 burst 20 probability 0.1

ECN으로 손실 대신 혼잡을 알리는 방법

ECN(Explicit Congestion Notification)은 패킷을 드롭하는 대신 특수 마킹으로 혼잡을 전달하는 메커니즘이다. RED와 함께 사용하면 평균 큐 크기가 최소 임계값과 최대 임계값 사이에 있을 때 패킷 폐기 대신 ECN 비트를 설정할 수 있다.

수신자는 마킹을 확인해 송신자에게 혼잡을 알리고, 송신자는 패킷 손실 없이 전송 속도를 조절한다. 이 조합은 패킷 손실 없이 혼잡을 제어해 네트워크 성능을 높일 수 있다.

QoS 정책에서 여전히 남아 있는 RED의 역할

RED는 약 30년 전에 개발됐지만 여전히 많은 네트워크 장비에서 기본 혼잡 제어 메커니즘으로 쓰인다. CoDel(Controlled Delay), PIE(Proportional Integral controller Enhanced)처럼 발전된 알고리즘도 등장했지만, RED는 단순성과 효율성 때문에 계속 사용된다.

대규모 데이터센터와 ISP 네트워크에서는 RED 또는 WRED가 QoS(Quality of Service) 구현의 핵심 요소로 활용된다. 네트워크 아키텍처를 설계하거나 성능 문제를 진단할 때는 트래픽 엔지니어링, QoS 정책, 클라우드와 가상화 환경의 성능 최적화 관점에서 이 동작을 함께 볼 필요가 있다.

RED혼잡 제어TCPQoS버퍼 관리