오늘도 네트워크 초보자님들을 위한 코너로써 유선망에서의 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 필드), 간단히 그 필드만 보면 패킷의 중요도(QoS 관점에서의 중요도)를 판단할 수 있는 분류 방법
통상적으로 가입자(아래 그림은 기업고객을 예로 함)가 망쪽으로 패킷을 송신하면, 그 패킷을 수신하는 첫번째 라우터가 MF Classification을 수행하고, 그 결과로 패킷 내에 QoS 정보(CoS, DSCP, EXP 중에 하나 또는 여러개)를 marking 합니다. 그러면 이후 라우터들은 그 QoS 정보만을 보고 패킷의 중요성을 판단할 수 있게 됩니다. 즉, 가입자와 연결된 첫번째 라우터(Edge Router)가 MF Classification을 수행하고 이후 라우터(Core Router)는 BA Classification을 수행하게 되지요.
자. 그럼 패킷 헤더내에 어떤 필드들이 이 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)이라고 부릅니다.
제가 PC를 통해 올레TV 동영상을 받으면서 Wireshark으로 패킷을 캡쳐해 보니 TOS=0x08(DSCP=0x02)로 보이던데요.
근데 이 값은 DiffServ 표준에 나오는 EF, AFxx 등의 표준 값이 아닌 것으로 보입니다.
그럼 KT는 표준을 지키지 않는 건가요?
DSCP=0x02(0000 10)은 표준 값이 아니네요.
아마도 802.1p 3bit = MPLS EXP = 3bit의 값을 그래도 IP DSCP에 매핑시켜 주기 위해 DSCP도 하위 3bit만 사용한 것으로 추측이 되네요.
중요한건 그 값 자체라기 보다는
(1) 어떤 응용을 어떤 QoS 값(802.1p, EXP, DSCP)으로 정의하고,
(2) 그 QoS 값에 대해 어떤 QoS 처리(Queueuing)를 하는 것일듯 합니다.
감사합니다. 너무 쉽게 설명해주셔서 많은 도움이 됬습니다.
정말 감사합니다. 근데 궁금한게 몇개 있어서 댓글 답니다. 일단 제가 알기로는 marking 과정에서 marking 한 패킷은 policing 을 거쳐 1단계 분류자에서 나눈 클래스에 맞는 queue 에 매핑되고, queuing 과정에 들어가는걸로 아는데요.. 여기서 queuing 하는 우선순위는 marking 과정에서 marking 한 dscp 나 ip precedence 와 같은 우선순위와 무슨 관계가 있는거죠? queuing 과정에서 우선순위를 정해서 output port 로 출력한다면, marking 한 우선순위들은 의미가 없어지는것 아닌가요?