[QoS] 1: 개념

Quality of Service

수 많은 패킷을 주고 받는 상황에서 다른 패킷 보다 먼저 처리해야하는 중요한 패킷이 있기 마련이다. 그런 패킷을 위한 것이 바로 QoS이다.
VoIP처럼 실시간으로 패킷을 주고 받으면서 지연되지 않도록, 그리고 중요한 트래픽의 대역폭을 보장하고 특정 트래픽을 제한할 때 사용한다.

Qos 작업은 6가지로 분류할 수있고, 1~6번 순서대로 흐름이 진행된다.

  1. Classification (트래픽 분류)
  2. Policing (폴리싱)
  3. Marking (우선순위 표시)
  4. Congestion Avoidance (혼잡 회피)
  5. Queueing (큐잉)
  6. Scheduling (스케줄링)
  7. Switch QoS 설정
QoS 간략 흐름

1. Classification – 트래픽 분류

QoS 정책을 설정하기 앞서 먼저 QoS를 적용할 패킷을 구분한다.

예를 들면,
(1) 특정 IP에서 온 패킷
(2) 특정 인터페이스에서 온 패킷
(3) 특정 우선순위(IP Precedence/DSCP/CoS)를 가진 패킷

이렇게 말이다.


2. Policing – 폴리싱

사용 가능한 속도를 제한한다. 통신사업자가 많이 사용한다고 한다.
100Mbps로 Policing한다 = 최대 속도가 100Mbps까지 나온다.


3. Marking – 우선순위 표시

프레임에 우선 순위를 표시하는 것이다. 만일, 우선순위를 설정하지 않았다면, 실시간 처리가 필요한 패킷이 지연될 수 있다.
프로토콜에 따라 지정/지정 불가하다.

3-1. Ethernet 프레임과 802.1Q 프레임

Ethernet 프레임에는 우선수위를 표시할 필드가 없다.
즉, 우선순위를 표시할 수 없다.

802.1Q 프레임의 Tag 필드에 CoS(Priority) 항목이 있다.
우선수위를 표시할 수 있다.
즉, Trunking 포트를 통해 송수신되는 트래픽은 우선순위를 표시할 수 있다.

3-2. IP 헤더

출처: What 8-bit field exists in IP packet for QoS?, ITExamAnswers, https://itexamanswers.net/question/what-8-bit-field-exists-in-ip-packet-for-qos

IP 헤더에서 IP Precedence 혹은 DSCP를 이용해 우선순위를 표시할 수 있다.
IP Precedence : 값 0~7, 값이 클수록 우선순위가 높아진다.
DSCP : 값 0~63, 값의 크기의 따른 의미는 없다. 보통 VoIP에 DSCP 값 46을 부여한다. 46을 EF(Expected Forwarding)이라고 한다.
* DSCP 값 참고 : Cisco Configuration Guides

3-3. Marking 사용 예시

토폴로지1. Marking 사용 예시

① ② : 802.1Q TAG의 CoS 필드를 사용한다.
③ : Serial은 Ethernet 방식이 아닌 RS232C, RS422A, RS485 방식을 사용한다. 그래서 IP헤더의 IP Precedence나 DSCP를 사용한다.
④ : Access 포트는 우선순위를 표시할 수 없어서 IP헤더의 IP Precedence나 DSCP를 사용한다.
⑤ : 802.1Q TAG의 CoS 필드를 사용한다.


4. Congestion Avoidance -혼잡 회피

프레임을 임시 저장할 큐가 가득 차 있는 상태를 혼잡이라고 표현한 것 같다. 큐가 가득 차있는 상태에서 프레임을 폐기하는 것을 혼잡 회피라고 한다. 혼잡 회피는 크게 3가지 방법이 있다.

TailDrop, WTD, WRED

4-1. TailDrop

간단하다. 큐가 가득 찼을 때, 이후에 도착하는 패킷들을 모조리 폐기하는 방법이다.

4-2. WTD

Weighted Tail Drop

CoS / DSCP 값에 따라 Taildrop이 일어나는 임계치(Threshold라고도 함)를 다르게 하여 폐기하는 방법이다. UDP가 많은 환경에서 사용하면 혼잡 제어에 유리하다고 한다.

4-3. WRED

Weighted Random Early Detection

WRED를 설명하기 앞서 먼저 ‘Global TCP Synchronization’에 대해 알아보도록 하자.


* Global TCP Synchronization이란?
TCP와 같이 신뢰성이 필요한 통신은 패킷 1개를 보내고 Ack를 받아야 다음 패킷을 보낸다. 하지만 계속 이렇게 통신하면 당연히 통신속도는 느려질 것이다.
이 문제를 해결하고자 상대 Ack없이 한번에 보낼 수 있는 패킷 수를 지정하는 ‘Window Size’라는 개념을 도입했다. 에러가 없다면 Window Size가 큰 것이 유리할 거고, 에러가 빈번하다면 Window Size가 작은 것이 유리할 것이다.
한 번에 1500개 TCP 패킷을 보냈는데 그 중 상대가 500개를 못받은 상황이 있다고 가정해보자. 에러가 발생한 상황인데, 이럴 때는 Window Size를 줄여서 패킷을 보낸다. 한번에 보내는 패킷량이 적어지니 통신 속도도 낮아질 것이다. 이 상황에서 만약 PC가 여러 대 있다면..? 여러 대의 PC가 상대에게 지금 에러났으니 재전송 요청을 할 것이다. 이미 에러가 발생한 상황이므로 상대가 Window Size를 줄여서 재전송한다. 결과적으로 전체 패킷 수가 줄어들고 링크 사용률도 낮아질 것이다.
이렇게 동시에 TCP Window Size 바꾸는 것을 ‘Global TCP synchronization’이라고 한다.


WRED는 Global TCP Synchronization을 방지하기 위해 TailDrop(전체 에러)가 발생하기 전 임의의 패킷을 폐기한다. 그렇게 되면 특정 장비에서만 에러가 발생한다고 인식하고 Window Size를 줄인다.

즉, 대의를 위해 일부를 희생한다고 생각하면 될 것 같다.


5. Queueing – 큐잉

프레임을 전송하기 전 임시로 보관하는 장소를 Queue라고 한다.
그리고 이 Queue를 처리하는 것을 Queueing이라고 한다.

통신장비는 입력큐/출력큐를 갖고 있다. (장비마다 큐의 개수가 다르다.)
– 입력큐: 프레임 수신 후 처리하기 전 보관하는 큐
– 출력큐: 처리 후 외부로 전송하기 전 보관하는 큐
큐 전송 방법에 따라 표준큐/우선큐로 나눈다. 우선큐에 저장된 프레임이 더 먼저 전송된다.


6. Scheduling – 스케줄링

Queue에 저장된 프레임을 외부로 전송한다.
Scheduling 방식은 크게 3가지로 나뉜다.

WRR, DWRR, Strict-priority queueing

6-1. WRR

Weighted Round Robin

정해진 비율대로 차례차례 돌아가며 프레임을 전송한다.

6-2. DWRR

Deficit Weighted Round Robin

순서(차례)가 되어도 전송할 프레임 크기보다 deficit counter 작으면, 프레임을 전송하지 않고 deficit counter를 증가시킨 뒤 다음 차례에 전송한다.

6-3. Strict-priority Queueing

최우선 큐잉

우선큐에 저장된 프레임을 먼저 전송한다.
보통 VoIP 프레임을 최우선큐잉한다.


7. Switch QoS 설정

QoS 설정은 MQC 관련 명령어와 mls qos 관련 명령어가 있다.

7-1. MQC 관련 명령어

Modular QoS CLI

스위치나 라우터에서 사용되는 QoS 명령어 체계이다. 스위치에서는 주로 Marking이나 Policing을 위해 사용한다.

– 설정4단계
(1) class-map : QoS 작업 대상 분류
(2) policy-map : QoS 정책 표시
(3) service-policy : policy-map 적용
(4) show policy-map interface <INTERFACE> : QoS 동작 확인

7-2. mls qos 관련 명령어

Queue 별 대역폭 비율, 길이, 매핑 등 Queue와 관련된 설정이다.

답글 남기기

이메일 주소는 공개되지 않습니다.