[Network Protocol] IP QoS 소개

by 파시스트 posted Oct 27, 2015
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

안녕하세요? NetmaniasTalk입니다.

오늘도 네트워크 초보자님들을 위한 코너로써 유선망에서의 QoS에 대해서 설명드리도록 하겠습니다.

Network에서 QoS라 함은 (1) 중요한 패킷(예. IPTV, VoIP, Business Traffic)과 그렇지 않은 패킷(예. 일반 인터넷 트래픽)을 구분하고, (2) 망에 Congestion이 발생(1GE 포트로 2Gbps의 트래픽이 나가야 하는 상황)하였을때 중요한 패킷을 먼저 보내 주고, 그렇지 않은 패킷은 drop하는 행위입니다.

오늘은 이 중에 (1)번, 즉 망에서 중요/비중요를 판별하기 위해 패킷을 어떻게 분류하는지에 대해 소개 드리겠습니다.

패킷 분류(Packet Classification)는 아래와 같이 크게 2가지 타입이 존재합니다.

 

  • Multi-Field(MF) Classification: 패킷 헤더 내에 포함된 다양한 필드들(예. IP 주소, TCP/UDP Port # 등)을 참조하여 그 패킷이 중요한 패킷인지 아닌지를 분류함
  • Behavior-Aggregate(BA) Classification: 패킷에 이미 QoS 정보가 포함되어 있어(Ethernet 패킷의 경우 802.1p CoS 필드, IP 패킷의 경우 DSCP 필드, MPLS 패킷의 경우 EXP 필드), 간단히 그 필드만 보면 중요한지 아닌지를 판단할 수 있는 분류 방법

 


통상적으로 가입자(아래 그림은 기업고객을 예로 함)가 망쪽으로 패킷을 송신하면, 그 패킷을 수신하는 첫번째 라우터가 MF Classification을 수행하고, 그 결과로 패킷 내에 QoS 정보(CoS, DSCP, EXP 중에 하나 또는 여러개)를 marking 합니다. 그러면 이후 라우터들은 그 QoS 정보만을 보고 패킷의 중요성을 판단할 수 있게 됩니다. 즉, 가입자와 연결된 첫번째 라우터(Edge Router)가 MF Classification을 수행하고 이후 라우터(Core Router)는 BA Classification을 수행하게 되지요.


1.gif


 


자. 그럼 패킷 헤더내에 어떤 필드들이 이 Classification에 사용되는지 좀 더 자세히 설명 드리겠습니다.


BA Classification

Ethernet 패킷의 경우 VLAN Tag가 붙을 수 있고, 이 VLAN Tag 내에 3bit의 802.1p(CoS) 필드가 있어, Ethernet 망(L2 switch로 구성되어 Ethernet MAC 주소 기반으로 MAC Learning 및 Switching하는 망)에서는 이 802.1p를 통해 패킷의 중요도를 판단할 수 있습니다. (예. VoIP의 802.1p=7, Internet의 802.1p=0)

MPLS 패킷의 경우 4Byte의 MPLS header가 붙게 되는데, 이 헤더내에 EXP라는 3bit 필드가 있습니다. 그래서 MPLS 망(MPLS router로 구성되어 label switching을 하는 망, 요즘 대부분의 통신사업자의 backbone은 MPLS를 사용함)에서는 EXP 필드를 통해 패킷의 중요도를 판단할 수 있습니다.

IPv4 패킷의 경우 8bit 크기의 TOS(Type of Service)라는 필드가 있으며, RFC 2474에서 이 중에 상위 6bit를 DSCP(DiffServ Code Point)라고 정의하였습니다. 그리고 총 14개의 DSCP 값을 미리 정의하고(EF, AF41, AF42, AF43, AF31, AF32, AF33, AF21, AF22, AF23, AF11, AF12, AF13, BE), 각 값마다 QoS의 중요도에 대한 표준을 잡아 놓았습니다. 그래서 IP 라우팅 망(IP 패킷의 Destination IP 주소 기반으로 패킷을 포워딩하는 망)에서는 이 DSCP를 통해 패킷의 중요도를 판단할 수 있습니다.


 

MF Classification

MF Classification은 들여다 봐야 하는 패킷의 헤더들이 좀 많습니다.

일단 L2 망에서는 패킷의 송신자(단말)와 수신자(단말)를 구분할 수 있는 Source MAC Address와 Destination MAC Address가 포함 될 수 있구요.

IPv4 망에서는 패킷의 송신자와 수신자를 표시하는 Source IP Address, Destination IP Address, 그리고 IP 헤더 다음에 L4 헤더가 무엇인지를 나타내는 Protocol ID(TCP=6, UDP=17)가 포함될 수 있구요

L4 헤더가 TCP나 UDP라면 TCP/UDP 모두에 들어 있는 Destination Port 혹은 Source Port를 통해 어떤 응용(예. HTTP=80)인지를 구분할 수 있기 때문에 이 Port 정보가 포함될 수 있습니다.

결국 MF Classification에서 들여다 보는 필드는 "누가(송신자) 누구에게(수신자) 어떤 응용(Port 정보)을 보내냐?"를 분석하여 그 패킷의 중요도를 결정하게 되는 것입니다.

그리고 한가지! "5-tuple"이란 용어가 있는데요. 이 5-tuple에 포함되는 필드는 {Source IP Address, Destination IP Address, Protocol ID, Source Port #, Destination Port #}입니다. 결국 방금전에 설명 드린 것과 같이 5-tuple은 "누가 누구에거 어떤 응용을 보내느냐?"를 구분할 수 있는 필드의 모음입니다.

그리고 또 한가지! 많은 분들이 아시는 바와 같이 업계에서는 이 MF Classifier를 ACL(Access Control List)이라고 부릅니다.

 


2.gif


 


다음에 기회가 되면 제가 경험했던 해외 사업자망(TPS 망)에서의 QoS 정책에 대해서 소개해 드리도록 하겠습니다. (책에 나오지 않는 실전 이야기)


지난번에 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)에 대해서 설명 드리겠습니다.


 


  • SPQ는 Queue에 대기하는 패킷이 존재하면 무조건 이 패킷부터 출력포트로 내 보내 주는 알고리즘입니다. 그래서 보통 출력포트당 4~8개의 Queue가 있으면 이 중에 하나만 SPQ로 정의하고, 가장 중요한 패킷들은 이 Queue를 통해 나가도록 합니다.
  • DWRR/WFQ는 각 Queue에 정의(CLI로 설정)한 weight 값(정수값이든 %이든 아니면 대역폭 bps이든)에 의거하여 그 비율만큼 출력포트로 패킷을 내보낼 수 있는 기회(권한)를 가지는 Queue입니다.


 




총 9가지 예를 가지고 이 방식의 동작 원리에 대해서 설명 드리도록 하겠습니다. 본 예에서는 100Mbps Fast Ethernet Port에 3개의 Queue가 있다고 가정합니다.




3.gif





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 트래픽이 나가게 됩니다.




4.gif





 


Example (6)


동일 설정(Q1:Q2:Q3 = 5:3:2) 상황에서 Q1~Q3로 유입되는 트래픽의 총 합이 100Mbps입니다. 즉, 출력포트 100Mbps 보다 크지 않은 상황(같은 상황)이고 이 경우 출력포트에 Congestion이 발생하지 않았으므로 각 Queue의 weight에 영향을 받지 않고 모든 트래픽이 출력 포트로 나가게 됩니다.


 




5.gif





 


 


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).


위 설명을 동영상으로 시청하고 싶으시면  넷매니아즈 e-Learning, "Per-Hop Packet Processing" 참조


출처 - http://blog.naver.com/netmaniascom/80144308664






Articles

1 2 3 4 5 6 7