네트워크/QoS

QoS Congestion Management & Avoidance (혼잡관리 와 혼잡회피 방법)

고미-고미 2022. 5. 20. 17:38
728x90

● QoS Congestion Management 정의

 

Interface가 처리할 수 있는 대역폭 이상의 트래픽이 집중되어 버퍼가 가득 차는 상태를 혼잡상태라고 하고, 혼잡상태를 관리하기 위한 방법을 혼잡관리 라고 합니다. 혼잡관리는 큐잉(Queuing)과 스케줄링(Sched-uling)의 조합으로 이루어집니다.

 

큐잉(Queuing)은 버퍼(Buffer)를 의미하며 임계치를 넘어선 패킷을 임시로 저장하는 저장소이자 혼잡상태를 탐지하는 알고리즘 입니다. 큐잉은 Output Interface가 혼잡 상태일 때 활성화 되고 혼잡상태가 해결되면 비활성화 됩니다.  

 

혼잡이 발생하게 되면 큐(Queue)는 가득 차게되고 패킷은 큐잉 알고리즘에 의해 재배치 됩니다. 높은 우선 순위를 가진 패킷이 먼저 전송될 수 있도록 하는데 해당 지점에서 스케줄링 알고리즘이 개입하여 어떤 패킷이 다음에 전송될지 결정 합니다. 스케줄링 알고리즘은 항상 활성화 되어 있습니다. 

 

  ○ Queuing Algorithm의 종류

알고리즘 설명
First-In First-Out
(FIFO)
- FIFO는 단일 큐를 가지고 있으며, 패킷은 순서도래 Output Queue에 도착하고, 도착한 순서대로 전송 됩니다. 해당 알고리즘에서 모든 트래피이 동일한 Class에 소속 됩니다.
Round Robin
(RR)
- RR에서 2개 이상의 큐를 가지고 있으며 순차적으로 서비스하는 알고리즘 입니다. RR은 모든 큐가 동일하게 서비스 되기 때문에 우선순위가 존재하지 않습니다. 

- RR을 사용하면 균등 서비스는 가능하지만 우선순위가 있는 트래픽에 대한 처리는 할 수 없어 실시간 트래픽에 적절하지 않습니다. 
Weighted Round Robin (WRR) - RR을 개선한 알고리즘으로 우선순위가 있는 트래픽을 처리할 수 있도록 하였습니다. 각각의 큐에 가중치를 부여하고, 이 가중치를 기반으로 하여 인터페이스에 대역폭을 할당 합니다.
Priority Queuing
(PQ)
- PQ는 4개의 큐 (High, Medium, Nomal, Low)의 집합이고 각각의 큐는 FIFO가 적용 됩니다. 우선순위가 가장 높은 high-priority queue는 항상 먼저 서비스가 되고 lower-priority queue는 high-priority queue가 모두 비어진 이후 서비스 됩니다. 이러한 큐잉 알고리즘의 특성상 높은 우선순위에 있는 패킷은 연속적인 서비스를 제공할 수 있지만 낮은 우선순위에 있는 패킷은 무한 대기상태에 빠질 수 있습니다.
Weighted Fair Queuing
(WFQ)
- 해당 알고리즘은 대역폭을 트래픽의 흐름(flow)의 수량에 따라 자동으로 나누고 트래픽 수량에 따라 공정한 대역폭을 할당 합니다. 가중치는 IP Precedence를 이용하며, 해당 값에 따라 같은 양의 트래픽을 가지는 흐름(flow)이라도 차이를 두는 방식 입니다. 

고속의 네트워크 환경에서는 확장성을 가지기 어렵고 트래픽 흐름(flow) 사이 차별화 매커니즘 구현이 어렵다는 단점이 있습니다. 
Class-Base Weighted Fair Queuing (CBWFQ) - 해당 알고리즘은 최대 256개의 큐를 생성할 수 있고 이는 트래픽 클래스를 256개 까지 분류할 수 있습니다. 각각의 큐는 클래스에 할당 된 대역폭을 기준으로 되며, WFQ이 기능이 확장된 알고리즘으로 사용자 친화적인 트래픽 클래스를 제공합니다.

- CBFWQ는 QoS 마킹, 프로토콜, ACL, Input Interface의 정보를 이용하여 트래픽 분류를 수행 하고 클래스에 할당 합니다. 클래스에는 대역폭, 가중치, 큐 제한 그리고 최대 패킷 제한 설정을 할 수 있습니다. 다만 CBWFQ는 우선순위 큐가 존재하지 않아 지연을 보장할 수 없어 실시간 데이터 트래픽에는 적절하지 않습니다. 
Low-Latency Queuing
(LLQ)
- LLQ는 CBWFQ와 Priority Queueing(PQ)를 조합한 알고리즘이고 실시간 트래픽의 요구사항을 충족시키기 위해 개발되었습니다. 해당 알고리즘을 이용하면 CBWFQ에 서비스 되기 전 트래픽은 PQ에 할당되어 할당 된 대역폭 만큼은 서비스를 받을 수 있습니다. 모든 실시간 트래픽은 PQ에 할당되어 먼저 서비스 됩니다. 

 

LLQ 알고리즘은 실시간 트래픽과 비-실시간 트래픽이 혼합된 환경에서 사용하기 적절한 알고리즘 입니다. LLQ를 통해 높은 우선순위가 있는 실시간 트래픽에 안정적인 지연과 대역폭을 제공 하고, 혼잡상황에서 실시간 트래픽이 할당된 임계점을 넘기게 되면 폴리싱이 발생하여 우선순위가 낮은 트래픽에서 대역폭 고갈이 발생하지 않도록 합니다. 유의해야 할 점은 트래픽 클래스에 대역폭을 할당하지 않으면 다른 클래스들과 대역폭을 공유하여 사용한다는 것 입니다.

 

CBWFQ와 LLQ의 조합으로 트래픽 클래스별로 큐를 생성합니다. CBWFQ 큐는 CBWFQ 스케쥴러에 의해 각각 클래스의 대역폭을 보장 합니다. LLQ가 생성한 High-Priority Queue는 항상 먼저 서비스 되지만, 혼잡상황 발생 시 LLQ 우선순위 클래스가 폴리싱되며 우선순위 때문에 CBWFQ가 서비스 되지 못하는 것을 방지 합니다. LLQ 설정 시 폴리싱 비율은 대역폭의 양 또는 인터페이스 대역폭의 비율로 설정 할 수 있습니다. 

LLQ 두개의 다른 트래픽 클래스를 LLQ에 할당할 수 있어 다른 폴리싱 비율을 서로 다른 트래픽 클래스에 적용할 수 있습니다. 예를 들어 보이스 트래픽은 10Mbps를 초과하는 혼잡상황에서 폴리싱이 발생하고 비디오 트래픽은 100Mbps에서 폴리싱이 발생하도록 설정 할 수 있습니다.

 

 

 

 

QoS Congestion Avoidance 정의

 

혼잡회비 기술은 네트워크 트래픽을 모니터링하여 부하를 예측하고 패킷 드랍을 통해 혼잡상황을 회피하는 것을 의미합니다. 

 

  ○ Packet Drop 수행 방법 (Tail Drop, RED, WRED)

 

기본적인 패킷 드랍 매커니즘은 테일-드랍 (tail drop)이고 테일-드랍은 모든 트래픽을 동일하게 처리하고 서비스 클래스 사이에 차이를 두지 않습니다. 테일-드랍이 발생하는 상황은 Output Interface Queue가 가득 찼을 경우 이며 이후 Queue에 진입하는 모든 패킷 드랍이 발생 합니다. 테일-드랍이 발생하면 TCP global synchronization현상이 발생하기 때문에 TCP 통신에서 반드시 회피해야하는 상황입니다. 

테일-드랍이 발생하지 않도록 하기 위해 큐가 가득차기 전 무작위로 패킷을 드랍 시키는 Random Early Detection (RED) 기법을 사용하여 혼잡상황이 발생하지 않도록 합니다. RED는 버퍼의 크기와 성능을 모니터링하여 큐에 정의된 최소 임계치를 초과하면 패킷 드랍을 수행 합니다. 

Cisco社는 RED를 개선하여 Weight RED (WRED) 기법을 발표하였습니다. RED와 WRED은 무작위로 패킷을 드랍한다는 점은 동일하나, WRED는 IP Precedence or DSCP 값을 이용하여 우선순위가 낮은 패킷을 먼저 드랍합니다. 예를 들면 IPP값이 3인 패킷은 IPP값이 5인 패킷보다 먼저 드랍되고, DSCP AFx3 인 패킷은 AFx2 보다 먼저 드랍되고 AFx2인 패킷인 AFx1 패킷보다 먼저 드랍됩니다. 

WRED는 IP Explicit Congestion Notification (ECN) bit를 사용하여 혼잡상황이 발생 했음을 알립니다. ECN 정보를 이용하여 종단장비에게 혼잡상황이 발생했음을 알리고 종단장비는 패킷전송 비율을 감소 시킵니다. 

728x90