WRED, Mesh-Optimized, Burst-Optimized . .
QOS에 대해 아직 모르는 것이 너무 많다. 오늘은 이것에 대해 정리해보려 한다.
QOS (Quality Of Service)
QoS 동작에서 Ip.Precedence 와 class-map , policy-map 이해가 필요.
송신자가 Ip Precedence 를 마킹 , 트래픽을 우선순위를 정의해서 차등 처리할 수 있도록 한다.
0 ~ 7 까지 총 8단계의 우선순위를 가진다.
기본적으로 , 대부분의 트래픽은 Ip Precedence = 0 으로 설정되어
들어온 순서대로 큐잉 및 전송 (Best-Effort 방식으로 처리된다)
또한
Ip Precedence가 마킹 된 패킷이 들어온다 해도, 네트워크 장비가 그 값을 해석하고 QoS 정책으로 반영하지 않으면 아무 영향이 없다.
그러면 TCP 포트 80 (HTTP) 트래픽을 IP Precedence 5로 마킹하고 QoS 정책을 적용해보자.
1. ACL 정의 - TCP 80 트래픽을 지정
2. Class-map - 위 ACL과 매핑
3. Policy-map - Precedence 5로 마킹
4. Interface에 적용 .
여기서
Class를 구분하는 것의 의미는 Software Queue를 의미한다.
포트를 나가기 전 Hardware Queue 순서에 따라 패킷이 나가게 된다 (FIFO)
Software Queue에서 Hardware Queue로 이동과 관련한 정책이 QoS .
A class, B class, C class 3개의 클래스로 class-policy 가 구분되면 Software Queue가 3개 생성.
A class 에서 Hardware Queue 로 3개의 패킷씩 이동. B class 에서는 1개씩 이동한다 같은 Policy가 만들어진다.
* 하드웨어 Queue는 장비마다 정해져 있으며 소프트웨어 Queue 사이즈는 설정 가능.
* 10개를 넘는 소프트웨어 Queue (클래스) 생성은 권장되지 않는다 .
따라서 QoS는 Hardware Queue가 가득 Full 되어야 동작한다.
이러한 큐의 Full 그리고 큐사이 이동을 . . Congestion Management 라 한다.
관련 기술로는 WFQ, CBWFQ, LLQ 와 관련한 내용이 있다.
그렇다면
Congestion Avoidance는 ?
Hardware Queue가 가득 차지 않으면 QoS가 동작하지 않는다며 . . 혼잡을 피하면 Queue가 가득 찰 일이 없는 거 아니야 ?
맞다.
Congestion Avoidance 는 Software Queue에서 동작하는 기술이다.
대표적으로 WRED 가 있다.
Software Queue가 꽉 차기 전에 일부 패킷을 랜덤하게 Drop하는 방식이다
Drop은 무작위지만 QoS 마킹에 따라 우선순위별로 차등 적용된다.
* 드랍은 손실을 의미할까 ?
: 아니다 . TCP에서 드롭을 받으면 속도를 자동적으로 줄이고 Drop 된 부분을 재송신받아 재조립한다.
오히려 큐가 100%가 찼을 때 , Tail Drop 발생하게 되면 송신 측이 속도를 줄이는 것이 느려지고 안정화에 시간이 걸린다.
** Tail Drop은 버틸 만큼 버티다가 무너지는 방식.
그런데 지금까지 말한 WRED는 Software queue에서 동작한다 . . 는 현대적 모델에서는 맞지 않는 말이다.
WRED는 Hardware Egress Queue (ASIC 내 큐) 에 직접 적용된다. (특히 Nexus, Catalyst 9000 시리즈)
* Congestion Avoidance , Congestion Management 기술들은 asic 내 적용.
WRED 의 설정 옵션에는 Burst Optimized 와 Mesh Optimized 옵션이 있다.
Burst 옵션은 순간적인 트래픽 급증을 수용하고 , 천천히 드롭 시작
Mesh 옵션은 꾸준한 트래픽 혼잡이 올 수 있으니 , 초반부터 드롭을 시작
그렇다면 한 장비 내에서 일부 모듈은 mesh-optimized, 일부는 burst-optimized 로 설정해도 되나 ?
결론은 "된다"
Cisco NX-OS 기반에서 일반적으로 적용되는 큐 사용률 기준의 동작 수치 예시
burst-optimized는 큐가 70% 이상 찼을 때부터 Drop 확률 1~5% 시작
mesh-optimized는 큐가 30% 이상 찼을 때부터 Drop 확률 5% 시작