지난번에 QoS에 대해서 아래와 같이 정의를 하였었는데요.
Network에서 QoS라 함은 (1) 중요한 패킷(예. IPTV, VoIP, Business Traffic)과 그렇지 않은 패킷(예. 일반 인터넷 트래픽)을 구분하고, (2) 망에 Congestion이 발생(1GE 포트로 2Gbps의 트래픽이 나가야 하는 상황)하였을때 중요한 패킷을 먼저 보내 주고, 그렇지 않은 패킷은 drop하는 행위입니다.
오늘은 (2)번 즉, 중요한 패킷을 먼저 보내는 방법(Scheduling Algorithm)에 대해서 소개해 드리겠습니다.
(1)번에 의해서 패킷이 분류가 되면, 이제 이 패킷이 출력포트(Output Port)로 나가기 위해 Queue에 매핑이 됩니다(예. VoIP 트래픽은 1번 Queue, VoIP 트래픽은 2번 Queue, Internet 트래픽은 3번 Queue). 통상적으로 하나의 출력포트에는 4개에서 8개의 Queue가 존재하며, 각 Queue에서 대기하는 패킷 중에 어떤 패킷을 먼저 뽑아 내보내 줄 것인지를 결정하는 다양한 Scheduling Algorithm이 있습니다.
오늘은 이 중에 SPQ(Strict Priority Queueing)와 DWRR/WFQ(Deficit Weighted Round Robin/Weighted Fair Queueing)에 대해서 설명 드리겠습니다.
총 9가지 예를 가지고 이 방식의 동작 원리에 대해서 설명 드리도록 하겠습니다. 본 예에서는 100Mbps Fast Ethernet Port에 3개의 Queue가 있다고 가정합니다.
Example (1)
100Mbps 출력 포트로 총 220Mbps의 트래픽이 나가려고 합니다. 결과적으로 이 중에 100Mbps만큼은 나갈 것이고, 나머지 120Mbps 대여폭 만큼에 해당하는 트래픽은 drop이 되겠는데요.
Q1:Q2:Q3의 weight값을 5:3:2로 설정하였습니다. 이 말은 Q1은 50Mbps 까지 내보낼 수 있고, Q2는 30Mbps, Q3는 20Mbps 까지 내보낼 수 있다는 얘기입니다. 따라서 Q1으로 유입된 80Mbps 트래픽 중에 50Mbps만 나가고(30Mbps 트래픽은 drop), Q2로 유입된 50Mbps 트래픽 중에 30Mbps만 나가고(20Mbps 트래픽은 drop), Q3로 유입되는 90Mbps 트래픽 중에 20Mbps만 나가게 됩니다(70Mbps 트래픽은 drop).
Example (2)
동일 설정(Q1:Q2:Q3 = 5:3:2) 상황에서 Q1으로는 아무런 특래픽이 들어 오지 않고, Q2, Q3로 각각 100Mbps 트래픽이 유입됩니다. 이 경우, Q2와 Q3는 3:2로 대역폭을 나누게 되고, 따라서 Q2로는 60Mbps 트래픽이, Q3로는 40Mbps 트래픽이 나가게 됩니다.
Example (6)
동일 설정(Q1:Q2:Q3 = 5:3:2) 상황에서 Q1~Q3로 유입되는 트래픽의 총 합이 100Mbps입니다. 즉, 출력포트 100Mbps 보다 크지 않은 상황(같은 상황)이고 이 경우 출력포트에 Congestion이 발생하지 않았으므로 각 Queue의 weight에 영향을 받지 않고 모든 트래픽이 출력 포트로 나가게 됩니다.
Example (8)
Q1은 SPQ이고, Q2, Q3는 각각 Weight가 2:1인 DWRR/WFQ 큐입니다. Q1이 SPQ이므로 Q1으로 유입되는 트래픽은 출력포트 대역폭을 넘지 않는다면 무조건 먼저 나갑니다. 그래서 Q1으로 유입된 70Mbps 트래픽은 모두 나가게 되구요.
이제 남은 30Mbps 대역폭을 Q2와 Q3가 2:1로 나누게 되므로 Q2로는 20Mbps가 나가고(80Mbps 트래픽 drop), Q3로는 10Mbps 트래픽이 나가게 됩니다(90Mbps 특래픽 drop).
VoiP 트래픽은 1번 Queue, VoIP 트래픽은 2번 Queue, Internet 트래픽은 3번 Queue 상황이고, port가 100M인 경우
에.
(1번 Queue : SFQ, 2번, 3번 Queue : DWRR/WFQ)
Congestion이 없는 상황에서도 Internet 트래픽의 트래픽만 20M로 줄이는 것이 가능할 가요?
예1. 1번,2번 트래픽은 0인 경우..Internet 트래픽이 50M, 70M인경우에 20M로 줄이는 것이 가능할까요?
예2. 1번 2번 트래픽은 각각 40M, 30M인 경우 Internet 트래픽이 80M인 경우.. 20M로 줄임
가장 일반적으로 사용하는 방법이 Rate Limiting (Policing) 입니다.
Policing에 대한 글은 아래 링크를 참조하세요.
1. https://www.netmanias.com/bbs/view.php?id=blog&no=252
2. https://www.netmanias.com/bbs/view.php?id=blog&no=293
상세한 설명 감사합니다!
802.1p의 pcp가 3bit여서 0~7까지 8단계로 우선순위를 구분할 수 있는데 위 자료에서는 포트별로 큐가 3개씩 있는 것으로 이해했습니다.그러면 0,1,2 단계는 우선순위는 첫번째 큐에 할당되고 3,4,5단계는 두번째 큐에 할당되는 식으로 동작하는 건가요??
그리고 그림에서 weight이 5,3,2로 단순히 설정되었는데요 원래는 weight이 큐별로 들어온 패킷의 갯수를 의미하니까 첫번째 큐가 우선순위가 높다고 하더라도 데이터가 별로 없는 상황에서는 오히려 두번째나 세번째 큐의 weight이 높아질수도 있는 것으로 이해하면 되나요?
마지막으로 우선순위를 데이터 타입이 아닌 단말기별로 지정할 수도 있나요?? 예를 들면 특정 Mac 주소나 IP 주소를 가진 호스트를 priority 0으로 지정하는 거죠. 시스코 장비는 Default CoS를 포트별로 지정할 수도 있는 것으로 찾아 봤는데, 1번 포트에 가장 높은 우선순위인 '7'을 지정해 놓으면 그 포트에 연결되는 단말기에서 나오는 모든 데이터는 가장 높은 우선순위를 갖게 되지 않나요? 만약 이게 가능하다면 이 포트에는 우선순위별로 여러 개의 큐가 있을 이유가 없어지긴 하네요...
두서가 없고 길기만 한데 개념을 정리하는데 필요할 것 같아 늦은 시간이지만 질문 드립니다. 감사합니다.