8. • 수신된 패킷의 헤더 정보를 참조하여 그 패킷에 QoS Profile을 할당하고, 그 정보를 Traffic Manager에 전달
• 그렇다면 “수신된 패킷의 헤더 정보”라는게 뭘까? Next Page
Classifier
8
Classifier
QueueScheduler
Marker
Policer
BufferManager
Traffic Manager
Packet
9. • Ingress Port/Interface, Egress Port/Interface
• Source MAC Address (SA), Destination MAC Address (DA)
• EtherType
• PCP/CoS/802.1p, DEI
• VLAN ID
• Source IP Address*, Destination IP Address*
• Protocol ID*
• TOS/IP-Precedence/DSCP
• Source Port Number*, Destination Port Number*
• TCP Flags
Classification Fields
9
• PCP/CoS/802.1p: Ethernet 프레임(VLAN 헤더)에 명시적으로 QoS 등급을 표기
• TOS/IP-Precendence/DSCP: IP 패킷(IP 헤더)에 명시적으로 QoS 등급을 표기
• 5 tuple: Source IP, Destination IP, Protocol ID, Source Port, Destination Port
이 5개로 IP flow 구별이 가능함
10. • Ingress Port: 패킷이 유입된 입력
포트
• Egress Port: 패킷이 송신될 출력
포트
• Ingress Interface: 패킷이 유인된
입력 인터페이스
• Egress Interface: 패킷이 송실된
출력 인터페이스
Layer 1: Ingress & Egress Port/Interface
10
GE1
GE2
GE3
GE4
Ingress Port
Packet
Egress Port
L2 SW
Packet
Router
GE1
ge1.100
ge1.200
GE2ge2
GE3
GE4
VLAN ID
ge3
ge4.100
ge4.200
Ingress Interface
Packet
Packet
Egress Interface
11. • Destination MAC address: L2 망에서의 목적지 주소
• Source MAC address: L2 망에서의 송신지 주소
• Type: IPv4 (0x0800), ARP (0x0806), etc.
• VLAN header
• PCP (Priority Code Point): L2 레이어에서 이더넷 프레임의 우선 순위 표시. 802.1p 또는 CoS(Class of Service)라고
도 부름 0 (lowest priority) ~ 7 (highest priority)
• DEI (Drop Eligible Indicator): L2 스위치에서 트래픽 혼잡 발생시 해당 필드가 1인 프레임이 먼저 폐기됨
• VID (VLAN ID)
Layer 2: Ethernet Header
11
DEI
(1b)
VID
(12b)
PCP
(3b)
TPID=0x8100
(2B)
DA
(6B)
SA
(6B)
Type
(2B)
Data/Payload
(46B ~ 1500B)
FCS
(4B)
DA
(6B)
SA
(6B)
Type
(2B)
Data/Payload
(46B ~ 1500B)
FCS
(4B)
Untagged Ethernet II Frame
VLAN Tagged Ethernet II Frame
VLAN Header
12. • TOS/IP-Precedence/DSCP: L3 레이어에서 IP 패킷의
우선 순위를 표시
• Protocol ID: IGMP (1), IGMP (2), TCP (6), UDP (17)
• Source IP Address: IP망에서의 송신지 주소
• Destination IP Address: IP망에서의 수신지 주소
Layer 3: IP Header
12
• IP-Precedence: 0 (우선순위낮음)
~ 7 (우선순위높음)
• D: Minimum Delay
• T: Maximum Throughput
• R: Maximum Reliability
• C: Minimize Cost
• 현재는 TOS 대신 DSCP로 사용됨
• CU: Currently Unused
• 다음장….
VER IHL TOS Total Length
Identification 0 Fragment Offset
TTL Protocol ID Header Checksum
Source IP Address
Destination IP Address
IP option (if any)
IPv4 Header (variable size, up to 60B, default 20B)
DAMAC
6B
SAMAC
6B
EType
0x0800
2B
IP Header CRC
4B
IP Datagram
0b 4b 8b 16b 19b 31b
DF MF
20B~60B
20B
Class Selector
bits 0 1 2 3 4 5 6 7
DSCP CU
bits 0 1 2 3 4 5
IP-Prec
6 7
0D
IP Type Of Service (RFC 1349)
IP DiffServ Code Point (RFC 2474)
T R C
13. • DSCP 상위 3비트를 Class Selector라 부르며 기존 TOS의 IP-Precedence와 상호 호환 유지. 또한 VLAN Tagged Frame의
PCP(802.1p)와도 1:1 매핑 0 (우선순위 낮음) ~ 7 (우선순위 높음)
• 우선 순위가 가장 낮은 등급 (예: Internet traffic)
• 4개의 class가 존재하며, 각 class에 대해 3개의 drop precedence 값을 가짐
• AFx1(xxx 010b)면 drop 확률이 낮고, AFx3(xxx 110b)면 drop 확률이 높음 congestion 발생시에 AFx1 보다 AFx3이 먼저 폐기
• 우선 순위가 가장 높은 등급 (예: IPTV multicast traffic, VoIP traffic)
Layer 3: DSCP
13
Class Selector
bits 0 1 2 3 4 5 6 7
DSCP CU
bits 0 1 2 3 4 5
IP-Prec
6 7
0D
IP Type Of Service (RFC 1349)
IP DiffServ Code Point (RFC 2474)
T R C
0 (000b)
PCP (802.1p)3b
IP-Precedence3b
0 (000b)
Class Selector3b
0 (000b)
DSCP6b
0 (000 000b)
DSCP Name
Best Effort
1 (001b) 1 (001b) 1 (001b) 8 (001 000b) CS1
2 (010b) 2 (010b) 2 (010b) 16 (010 000b) CS2
3 (011b) 3 (011b) 3 (011b) 24 (011 000b) CS3
4 (100b) 4 (100b) 4 (100b) 32 (100 000b) CS4
5 (101b) 5 (101b) 5 (101b) 40 (101 000b) CS5
6 (110b) 6 (110b) 6 (110b) 48 (110 000b) CS6
7 (111b) 7 (111b) 7 (111b) 56 (111 000b) CS7
10 (001 010b) AF11- - -
12 (001 100b) AF12- - -
14 (001 110b) AF13- - -
18 (010 010b) AF21- - -
20 (010 100b) AF22- - -
22 (010 110b) AF23- - -
26 (011 010b) AF31- - -
28 (011 100b)- - -
30 (011 110b)- - -
AF32
AF33
46 (101 110b)- - - EF
34 (100 010b) AF41- - -
36 (100 100b)- - -
38 (100 110b)- - -
AF42
AF43
14. Layer 4: TCP/UDP Header
14
DAMAC
6B
SAMAC
6B
EType
0x0800
2B
CRC
4B
UDP
Header
UDP Packet
Source Port Numbrer Destination Port Number
UDP Length
0b 16b 31b
UDP Checksum
UDP Data
20B~60B 8B
8B
DAMAC
6B
SAMAC
6B
EType
0x0800
2B
CRC
4B
TCP
Header
TCP Packet
Source Port Numbrer Destination Port Number
Sequence Number
0b 16b 31b
THL
TCP Data
20B~60B
Acknowledgment Number
Window Size
TCP Checksum Urgent Pointer
TCP option (if any)
20B
Reserved
4b 10b
IP Header
(Protocol ID=17)
20B~60B
IP Header
(Protocol ID=6)
TCP Header (variable size, up to 60B, default 20B)
F
I
N
S
Y
N
R
S
T
P
S
H
A
C
K
U
R
G
HTTP GET
TCP Destination Port = 80
TCP Source Port = Ephemeral port # (ex. 50000)
HTTP 200 OK
TCP Destination Port = 50000
TCP Source Port = 80
https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers
…
15. • L1: Ingress Port/Interface
• L2/L3: Source MAC Address, Source IP Address
• L1: Ingress Port/Interface
• L2/L3: Source MAC Address, Source IP Address
• L4: TCP/UDP Port Number
• L1: Ingress Port/Interface
• L2/L3: Source MAC Address, Source IP Address
• L1: Egress Port/Interface
• L2/L3: Destination MAC Address, Destination IP Address,
• L1: Ingress Port/Interface
• L2/L3: Source MAC Address, Source IP Address
• L1: Egress Port/Interface
• L2/L3: Destination MAC Address, Destination IP Address,
• L4: TCP/UDP Port Number
• L2: PCP(802.1p)
• L3: DSCP
Classification Category
15
16. • 패킷의 여러 필드들을 동시에 참조하여 QoS 서비스 등급(QoS Profile)을 정함
• End-to-End Flow base QoS(IntServ)를 위해 망의 각 node(Switch/Router)에서 수행 (비현실적)
• 단말/서버와 연결된 스위치/라우터에서 이를 수행하고, 그 결과를 802.1p 혹은 DSCP 필드에 마킹함
• 패킷에 표기된 QoS 값을 보고 QoS 서비스 등급(QoS Profile)을 정함
• 802.1p: L2 스위치/Router
• IP DSCP: Router
Type of Classification
16
L2 802.1p
IP DiffServ
Network
MF Classifer BA Classifer
PC RouterL2 SW ServerRouter
IP Network
DSCP = BE DSCP = BE
802.1p = 3
DSCP = AF31 DSCP = AF31
DSCP = BE DSCP = BE DSCP = AF31 DSCP = AF31
DSCP = BEDSCP = AF31DSCP = AF31
802.1p = 3
DSCP = AF31
Multi-Field Classification
Behavior Aggregate Classification
marking marking
marking
marking
17. • Marking 정보
• Policing 정보
• Queuing 정보
• Buffer Management 정보
Multi-Field Classification Table
17
Rule
#
Ingress
Port #
Egress
Port #
SAMAC DAMAC EType VLAN ID SAIP DAIP
Protocol
ID
DSCP SPTCP/UDP DPTCP/UDP
6B 6B 2B
802.1p
(PCP)
3b 12b 4B 4B 1B 1B 2B 2B
QoS Profile
Layer 1 Layer 2 (Ethernet) Layer 3 (IP) Layer 4 (TCP/UDP)
TCP
Flag
6b
1
2
3
4
5
6
7
8
9
10
… …
Rule Description: How to identify packets?
Rule Action: What to do
with the packet?
DEI
1b
19. • Marking 정보
• Policing 정보
• Queuing 정보
• Buffer Management 정보
Behavior Aggregate Classification Table
19
802.1p
0
1
2
3
4
5
6
7
QoS Profile
BE
CS1
AF11
AF12
AF13
EF
…
QoS ProfileDSCP
3b 6b
802.1p Table DSCP Table
20. QoS Profile
20
Classifier
Traffic Manager
Queue
Scheduler
Marker
Policer
Buffer
Manager
QoS Profile for Marker
1. 802.1p in VLAN Tag
- Marking or not
- 802.1p value
2. DSCP in IP Header
- Marking or not
- DSCP value
QoS Profile for Queue Scheduler
1. Queue ID
QoS Profile for Policer
1. Policing or not
2. Policer ID
3. Green (Conforming) Action
- Pass, Drop or Mark & Pass
4. Yellow (Loosely Conforming) Action
- Pass, Drop or Mark & Pass
5. Red (Non Conforming) Action
- Pass, Drop or Mark & Pass
QoS Profile for Buffer Manger
1. Drop Precedence Level
21. CLI Example
21
# access-list acl-num 1 sip 1.1.1.0/24 dip 20.1.1.0/24 protocol tcp sp any dp 50-100
Access Control List number 1번 정의
Source IP address : 1.1.1.0/24 (= 1.1.1.0 ~ 1.1.1.255)
Destination IP address : 20.1.1.0/24 (= 20.1.1.0 ~ 20.1.1.255)
TCP Packet (Protocol ID = 6)
TCP Source Port number : any (= 0 ~ 65535)
TCP Destination Port number : 50 ~ 100
24. • 802.1p와 DSCP 필드를 동시 marking도 가능
QoS Profile for Marker
24
Packet
In
Packet
Out
Queue
Scheduler
Classifier Marker Policer
Buffer
Manager
QoS Profile for Marker 1. 802.1p in VLAN Tag
- Marking or not
- 802.1p value
2. DSCP in IP Header
- Marking or not
- DSCP value
EType
2B
Data CRC
4B
ETPID
0x8100
2B
TCI
2B
DAMAC
6B
SAMAC
6B
3b
DEI VLAN ID
1b 12b
802.1p
(PCP)
VLAN Tag
VER IHL DSCP Total Length
Identification 0
Fragment
Offset
TTL Protocol ID Header Checksum
SAIP
DAIP
IP option (if any)
IPv4 Header (variable size, up to 60B, default 20B)
DAMAC
6B
SAMAC
6B
EType
0x0800
2B
IP Header CRC
4B
IP Datagram
0b 4b 8b 16b 19b 31b
DF MF
20B~60B
20B
25. CLI Example
25
# access-list acl-num 1 sip 1.1.1.0/24 dip 20.1.1.0/24 protocol tcp sp any dp 50-100
# set-packet-qos acl-num 1 802.1p 7
# set-packet-qos acl-num 1 ip dscp EF
acl-num 1에 match되는 패킷의 802.1p 값을 7로 세팅(Marking)
acl-num 1에 match되는 패킷의 DSCP 값을 EF로 세팅 (Marking)
참고
27. • Enterprise 서비스를 제공하는 통신 사업자가 기업과 계약(SLA)된 대역폭 만큼만 패킷이 통신 사업자망으로 유
입될 수 있도록 대여폭 제어
• Residential 서비스를 제공하는 통신 사업자가 가입자별 대여폭 제어 혹은 P2P와 같은 특정 응용에 대한 대역
폭 제어, 예전에… KT가 삼성 4K Smart TV로 가는 트래픽만 골라 대역폭 제어한 사건이 있었음
Policer Objective
27
20Mbps
20Mbps
20Mbps
20Mbps
10Mbps
10Mbps
10Mbps
20Mbps
10Mbps의 대역폭만 사용하기로 하고 월
50만원씩 지불하기로 했는데, 약속(SLA)
을 어기고 있군…
장비의 Policer 기능을 이용하여 대역폭을
10Mbps로 제한 !!!
28. • Meter: 입력 트래픽의 유입율(bps)을 기 정의된 Traffic Profile(약속된 대역폭)과 비교하여 그 결과(Green,
Yellow, Red)를 Policer Action Block(Pass, Mark, Drop)에 전달함
• Policer Action Block
• Pass: 패킷을 보냄
• Drop: 패킷을 폐기함
• Mark: L2 802.1p, L2 DEI, IP DSCP 값을 변경 후 패킷 전송
• 약속 이상으로 유입된 트래픽(패킷)에 대해 drop probability를 높일 수 있음 (DEI 1로 set, DSCP AFx1 AFx3로
변경, 또는 DSCP EF/AFxx에서 BE로 변경)
• DiffServ권고안에서는 본 기능(Policer)을 Traffic Conditioner라 함
Policer Components
28
Meter
Policer
Packet
In
Packet
Out
Dropper
Marker
수십~수백/수천(?)개의 Policer 블록 존재
29. • RFC 2697: srTCM (Single Rate Three Color Marker)
• RFC 2698: trTCM (Two Rate Three Color Marker) 오늘 주제
Two Rates & Three Colors
29
Two Rates & Three Colors
CIR
Committed
Information
Rate
PIR
Information Rate (bps)
red
yellow
green
Peak
Information
Rate
• CIR (Committed Information Rate): 통신 사업자와 가입자
(Enterprise or Residential user)간에 SLA(Service Level
Agreement)를 통해 서로 합의된 대역폭(bps)으로, 통신 사업자
망은 이 대역폭(CIR) 만큼 가입자 트래픽을 guarantee해야 할 의
무가 있음 (no packet loss)
• PIR (Peak Information Rate): 수신 패킷의 유입률이 CIR 값을
넘어서더라도 망에 congestion이 발생하지 않는 선에서 통신 사
업자 망에서 받아 줄 수 있는 대역폭을 PIR로 정의 (PIR > CIR).
즉, CIR 까지는 guarantee하고 CIR이 넘더라도 PIR 까지는 받아
줄 수 있으나 guarantee는 못함
• Green: 수신 패킷의 유입률(bps)이 CIR(bps) 이하인 경우 그 패
킷은 Green
• Yellow: 수신 패킷의 유입률이 CIR 보다 크지만 PIR 이하인 경우
그 패킷은 Yellow
• Red: 수신 패킷의 유입률이 PIR 이상인 경우 그 패킷은 Red
예: 어떤 Enterprise 가입자에 대해 SLA를 통해 CIR=10Mbps, PIR=15Mbps로 설정을 하였다면,
Enterprise 가입자로 부터 유입되는 트래픽에 대해서 Metering을 수행하고, (1) 유입률이 CIR(10Mbps) 이하인 Green 패킷은
DSCP=AF로 마킹 및 패킷 포워딩하고, (2) CIR(10Mbps)은 넘었지만 PIR(15Mbps) 이하인 Yellow 패킷은 DSCP=BE로 마킹 및 패킷 포
워딩(이후 네트워크 상에 다른 라우터에서 congestion이 발생하게 되면 DSCP=BE에 해당하는 패킷은 drop 될 수도 있음)하고, (3)
PIR(15Mbps) 이상인 Red 패킷은 drop시킴
30. Token Buckets
30
BT
BT
Token Bucket 1 (P)
BT (Byte Token) drops into the Bucket
at the rate of PIR/8 tokens per second
Max Token Count
= PBS
BT
Current Token
Count = Tp
BT
BT
BT
BT BT
BTBT
Token Bucket 2 (C)
BT (Byte Token) drops into the Bucket
at the rate of CIR/8 tokens per second
Max Token Count
= CBS
BT
BT
BT
BT BT
BT
Current Token
Count = Tc
Token Bucket 1 (P)
• Token Bucket에 Token 채우기: 이 Token Bucket으로는 초당
"PIR/8"개의 Byte Token(이하 Token)이 채워짐. 예를 들어,
PIR=8Mbit/s(bps)이면 이를 byte로 환산하면 1Mbyte/s이고 즉,
초당 1M(1,000,000)개의 Token이 채워짐 (Token 1개 = 1byte)
• Token Bucket의 최대 Token 개수: 이 Token Bucket에는 최대
PBS(Peak Burst Size) 만큼의 Token이 들어 갈 수 있음. 예를 들어,
PBS=8Kbyte이면 이 Token Bucket에는 최대 8K(8,000)개의 Token
이 저장될 수 있음. 그 이상의 Token은 저장 될 수 없음.
• Token Bucket에서 Token 빠져 나가기: 패킷이 유입되면, 해당 패
킷 크기 만큼 이 Token Bucket에 담겨 있는 Token이 없어짐. 예를
들어, Token Bucket에 8,000개의 Token이 있고, 1,000byte 패킷(IP
header 포함)이 유입되면, Token Bucket에는 7,000개의 Token이
남게 됨
Token Bucket 2 (C)
• Token Bucket에 Token 채우기: 이 Token Bucket으로는 초
당 "CIR/8"개의 Token이 채워짐
• Token Bucket의 최대 Token 개수: 이 Token Bucket에는 최
대 CBS(Committed Burst Size) 만큼의 Token이 들어 갈 수
있음. 그 이상의 Token은 저장 될 수 없음
• Token Bucket에서 Token 빠져 나가기: 패킷이 유입되면,
해당 패킷 크기 만큼 이 Token Bucket에 담겨 있는 Token
이 차감됨
31. • 최초 2개의 Token Bucket은 각각 PBS, CBS 만큼의 Token으로 가득차 있음
• 이제 사이즈가 B byte인 패킷이 하나 들어 옴
• 먼저 Token Bucket 1의 현재 Token 개수(Tp)와 B를 비교. 만약 B 보다 Token 개수가 적으면 이 패킷은 Red 패
킷이 됨
• 그렇지 않으면 이번에는 Token Bucket 2의 현재 Token 개수(Tc)와 B를 비교. 만약 B 보다 Token 개수가 적으면
이 패킷은 Yellow가 됨. 그리고 Token Bucket 1의 Token 개수(Tp)에서 B 만큼 차감
• 위 두가지 경우에 해당되지 않으면 그 패킷은 Green. 그리고 Token Bucket 1, 2의 Token 개수(Tp와 Tc)에서 각
각 B 만큼 차감
• 패킷 수신때 마다 이 과정이 계속 반복됨
• 그리고 Token Bucket 1, 2에는 초당 PIR/8, CIR/8 개의 Token이 채워짐
Token Buckets Operation
31
BT
BT
Token Bucket 1 (P)
BT (Byte Token) drops into the Bucket
at the rate of PIR/8 tokens per second
Max Token Count
= PBS
Token Bucket 2 (C)
BT (Byte Token) drops into the Bucket
at the rate of CIR/8 tokens per second
Max Token Count
= CBS
BT
BT
BT
BT BT
BT BT
Current Token
Count = Tp
Current Token
Count = Tc
BT
BT
BT
BT BT
BTBT
32. Token Buckets Example
32
Packet 1
1,000,000 Tokens/s
Max
8,000 TokensCurrent Token
(Tp) = 1,000
500,000 Tokens/s
Max
4,000 TokensCurrent Token
(Tc) = 600
PIR = 8Mbps
PBS = 8KByte
CIR = 4Mbps
CBS = 4KByte
1500byte Packet Size (1500)
> Tp (1000)
Packet 1
Packet is Red
Token Bucket 1 Token Bucket 2
Packet 2
1,000,000 Tokens/s
Max
8,000 TokensCurrent Token
(Tp) = 1,000
500,000 Tokens/s
Max
4,000 TokensCurrent Token
(Tc) = 600
PIR = 8Mbps
PBS = 8KByte
CIR = 4Mbps
CBS = 4KByte
800byte Packet Size (800)
> Tc (600)
Packet 2
Packet is Yellow
Token Bucket 1 Token Bucket 2
Packet Size (800)
< Tp (1000)
Tp (200) = Tp (1000) - 800
Packet 3
1,000,000 Tokens/s
Max
8,000 TokensCurrent Token
(Tp) = 1,000
500,000 Tokens/s
Max
4,000 TokensCurrent Token
(Tc) = 600
PIR = 8Mbps
PBS = 8KByte
CIR = 4Mbps
CBS = 4KByte
300byte Packet Size (300)
< Tc (600)
Packet 3
Packet is Green
Token Bucket 1 Token Bucket 2
Packet Size (300)
< Tp (1000)
Tp (700) = Tp (1000) - 300 Tp (300) = Tc (600) - 300
Case 1
Case 2
Case 3
33. Pseudo-Code in RFC 2698
33
Let us assume that
Token Bucket 1 is P
Token Bucket 2 is C
Tp is number of Token (Token Count) in a P
Tc is number of Token (Token Count) in a C
Initially
Tp(0) = PBS /* Token Count of Token Bucket 1(P) is initially full */
Tc(0) = CBS /* Token Count of Token Bucket 2(C) is initially full */
A packet of size B bytes arrives at time t
- If Tp(t) - B < 0, then the packet is red, else
- If Tc(t) - B < 0, then the packet is yellow and Tp is decremented by B, else
- the packet is green and both Tp and Tc are decremented by B
34. • Pass: 패킷 송출
• Mark: 802.1p (PCP), DEI, DSCP 값 변경
• SLA를 지킨 Green 패킷에 대해 E2E QoS 보장을 위해 QoS 등급을 높이는데 사용될 수도 있고,
• 또는 Yellow 패킷에 대해 QoS 등급을 낮추는데 사용됨 (망 어딘가에서 congestion 발생 시 이 패킷 먼저 폐기하라
는 표기)
• Drop: 패킷 폐기
Policer Action
34
Change 802.1p (PCP)
Set DEI
Change DSCP (Class Selector)
Change DSCP (Drop Probability): AFx1 AFx3
Green
Yellow
Red Drop
Mark
Pass
Change WRED Drop Precedence Level
35. • Policing 수행 유무
• 만약 Policing을 한다면 어떤 Policer 블록(Policer
ID)을 통해 처리할 것인가?
• Metering 결과로 나온 Green/Yellow/Red 패킷에
대한 처리 방안
• 만약 Marking을 한다면 marking할 필드 정의
QoS Profile for Policer
35
acket
In
Packet
Out
Queue
Scheduler
Classifier Marker Policer
Buffer
Manager
Marking Information
- Marking Field
: 802.1p (PCP), DEI, DSCP
- Marking Value
- WRED Drop Precedence Level
Meter
Dropper
Policer
#1
Marker
Meter
Dropper
Policer
#2
Marker
Meter
Dropper
Policer
#N
Marker
...
QoS Profile for Policer 1. Policing or not
2. Policer ID
3. Green (Conforming) Action
- Pass, Drop or Mark & Pass
4. Yellow (Loosely Conforming) Action
- Pass, Drop or Mark & Pass
5. Red (Non Conforming) Action
- Pass, Drop or Mark & Pass
36. CLI Example
36
# access-list acl-num 1 sip 1.1.1.0/24 dip 20.1.1.0/24 protocol tcp sp any dp 50-100
# police id 10 acl-num 1 cir 10Mbps cbs 3000B pir 30Mbps pbs 5000B green-action pass yellow-action set-
packet-qos dscp BE red-action drop
acl-num 1에 match되는 패킷에 대해서 CIR=10Mbps, CBS=3000Byte, PIR=30Mbps, PBS=5000Byte 파라미터로 Rate
Limiting을 하여 green packet은 보내고(pass), yellow packet은 DSCP 값을 0(BE)으로 마킹 하여 보내고, red packet은
버림(drop)
38. • 입력포트의 대역폭이 출력포트보다 큰 상황에서 지속적인 패킷 유입
• 여러 입력포트들로 부터 유입된 트래픽이 특정 한 출력포트로 몰릴때
• Congestion 발생시에 어떤 트래픽을 송출하고(우선순위가 높은 패킷들), 어떤 트래픽을 폐기할 것인지를 결정
• Scheduler는 congestion 발생시에만 효과를 발휘함. 즉, congestion 미발생 상황에서는 어떤 scheduling
algorithm을 적용하던 또는 적용하지 않던 들어온 패킷 순서로 출력포토로 송출됨
Queue Scheduler
38
FE
FE
FE
FE
GE
GE 1Gbps
100Mbps
Multi Layer Switch
Congestion !!!
1
FE
FE
FE
FE
GE
GE
100Mbps
Multi Layer Switch
Congestion !!!
2
100Mbps
100Mbps
100Mbps 출력, 900Mbps 폐기
100Mbps 출력, 100Mbps 폐기
39. • 패킷이 출력 포트(Egress Port)로 나가기 위해서 대기 하고 있는 곳으로(줄을 서시오!) 보통 출력 포트당 하나
이상의 Queue가 할당 되어 있음 (복수개의 Queue = 공항에 보딩패스 줄 (일반석, 모닝캄회원, 일등석/비지니
스석))
• 좀 더 정확히 얘기하면 패킷은 Packet Buffer/Egress Memory에 저장되어 있고, Queue에는 Packet Descriptor
(패킷이 저장되어 있는 위치 정보)가 있는 것임
• 복수개의 Queue들 중 하나를 골라 그 Queue에서 대기하고 있는 패킷을 출력 포트로 출력함 그렇다면 무
슨 기준으로 Queue를 고르지? Scheduling Algorithm (Next Page)
Queue & Scheduler
39
Q1
...
Classifier
Q2
Qn
Queue Scheduler
Output Port
Queue ID = Q1
Queue ID = Q2
Queue ID = Qn
Packet
40. • First In, First Out Queuing (FIFO)
• Strict Priority Queuing (SPQ) = Priority Queuing (PQ)
• Fair Queuing (FQ)
• Weighted Fair Queuing (WFQ)
• Weighted Round Robin (WRR) = Class Based Queuing (CBQ)
• Deficit Weighted Round Robin (DWRR) = Deficit Round Robin (DRR)
• FIFO와 FQ 알고리즘은 Fairness 개념만을 제공. 즉, 패킷별 차등화에 적합하지 않음 본 설명에서 제외
• FIFO: 출력포트마다 하나의 Queue만이 존재하고, 들어온 순서데로 나감
• FQ: 출력포트마다 복수개의 Queue가 존재하나, 각 Queue에 대기하고 있는 패킷들에 대해 동일한 양을 출력함
Scheduling Algorithm
40
41. • 높은 우선 순위(Higher Priority) 큐에 대기하고 있는 패킷이 항상 먼저 서비스 됨 (출력 포트로 항상 먼저 나가
게 됨)
• Priority (ex. High, Medium, Low)
• Latency, Jitter에 민감한 응용 패킷에 대한 QoS 품질 보장
• 높은 우선 순위 큐로 유입되는 패킷의 양이 출력 포트의 대역폭을 넘어서는 경우, 낮은 우선 순위(Lower
Priority) 큐에 대기하고 있는 패킷은 전혀 서비스가 안됨 (Starvation 문제) Policing으로 문제 해결 가능
Strict Priority Queuing (SPQ)
41
[Q1] Priority: High
[Q2] Priority: Medium
[Q3] Priority: Low
300B200B 400B 300B100B
600B300B400B
Output Port
600B300B400B 300B200B 400B 300B100B
SPQ Scheduler
400B 500B500B 400B 500B500B
High Priority Queue(Q1)에서 대기하고 있던 패킷들이 모두 송출 된 후에,
Medium Priority Queue(Q2) 패킷들이 송출되고,
마지막으로 Low Priority Queue(Q3) 패킷들이 송출됨
42. • 각 Queue에 “Weight”를 할당하게 되며, 이 Weight는 서비스 될 패킷 개수(Number of Packets) 비율임
• SPQ의 starvation 현상을 방지하면서 Weight의 비율대로 패킷 서비스가 가능함
• Weight가 “패킷 개수”를 의미하기 때문에 Variable Length Packet 환경의 Ethernet/IP 망에서는 부적합함
• 예: 64B VoIP 패킷과 1500B Internet 패킷을 2:1로 서비스 했을 경우, VoIP 128B 출력되고 Data 1500B 출력
Weighted Round Robin (WRR)
42
[Q1] Weight: 2
[Q2] Weight: 1
[Q3] Weight: 1
300B200B 400B 300B100B
600B300B400B
Output Port
600B300B400B 500B 300B200B 400B 300B100B
WRR Scheduler
Packet Service Ratio = Q1:Q2:Q3 = 2:1:1
[Q1] Weight: 2
[Q2] Weight: 1
[Q3] Weight: 1
300B200B 400B 300B100B
600B300B400B
Output Port
WRR Scheduler
Service Round Ratio = Q1:Q2:Q3 = 2:1:1
400B 500B500B
400B 500B500B
500B400B
600B300B400B 500B300B200B 400B 300B100B 500B400B
Q1
Q3
Q1
Q2
Packet 개수 비율로 서비스
1 round = Q1-Q1-Q2-Q3
Queue 서비스 비율로
서비스
(Scheduler가 각 Queue를
방문하는 비율)
1 round = Q1-Q2-Q1-Q3
43. • 각 Queue에 “Weight”를 할당하게 되며(WRR과 동일), 이 Weight는 서비스 될 패킷의 비트수 (Number of
Bits) 비율임
• Weighted Bit-By-Bit Round Robin이라 할 수 있음
• Variable Length Packet에 대해서도 정확히 Weight 비율대로 서비스 가능. 즉, WRR의 문제점 해결
• 구현이 복잡함
Weighted Fair Queuing (WFQ)
43
Bit-by-Bit Service Ratio
= Q1:Q2:Q3 = 2:1:1
[Q1] Weight: 2
[Q2] Weight: 1
[Q3] Weight: 1
300B200B 400B 300B100B
600B300B400B
400B 500B500B
PacketSegmentation
Last bit of
300B Pkt
Last bit of
100B Pkt
Last bit of
400B Pkt
Last bit of
500B Pkt
Last bit of
300B Pkt
Last bit of
600B Pkt
Last bit of
200B Pkt
Last bit of
300B Pkt
Last bit of
500B Pkt
Last bit of
400B Pkt
Last bit of
400B Pkt
1 bit
Output Port
600B300B400B 500B300B200B 400B 300B100B500B400B
Bit-by-Bit WRR
Scheduler
Packet
Reassembler
수신된 패킷을 Bit 단위로 Segmentation Reassembly가 완료된 패킷 순서대로 출
력 포트 송신
본 그림은 WFQ 설명의 이해를 위한 논리적인 그림이
며, 실제로 Segmentation/Reassembly를 수행 하는지는
알 수 없음
44. • Weight: 출력 포트 대역폭에 대한 패킷 서비스 비율 (WFQ와 동일한 개념)
• Quantum: 각 큐에 할당된 Weight값에 비례하는 값으로 Byte 단위를 가짐. Scheduler가 Round Robin으로 큐
방문 시에 Deficit Counter에는 Quantum값만큼이 보충됨
• DeficitCounter: Queue visit time시에 해당 큐가 보낼 수 있는 최대 Byte 수. 만약 송신 패킷 크기(Byte)가
DefictCounter(Byte) 보다 크게 될 경우, 그 패킷은 출력 포트로 송신 될 수 없으며, 잉여 DeficitCounter 값은
다음 scheduling time(Next Service Round)에서 사용이 됨
• Variable Length를 고려하지 못한 WRR의 단점을 보완 Byte 단위 개념의 Weight
• 구현의 복잡함의 제약이 있는 WFQ의 단점을 보완 구현이 용이함
Deficit Weighted Round Robin
44
300B200B 400B 300B100B
600B300B400B
Output Port
DWRR Scheduler
400B 500B500B 600B300B400B 500B300B200B 400B 300B100B500B400B
Q1 Weight: 2
Quantum=1000, DeficiCounter=0B
Q2 Weight: 1
Quantum=500, DeficitCounter=0B
Q3 Weight: 1
Quantum=500, DeficitCounter=0B
• Weight의 비율이 Q1:Q2:Q3 = 2:1:1이므로, 그 비율대
로 Quantum 값을 할당. 본 예제에서는 Q1:Q2:Q3 =
1000:500:500으로 함
• 초기 DeficitCounter 값은 모두 0임
50. Shaper behind of Queue
50
[Q1]
[Q2]
[Q3]
300B200B 400B 300B100B
600B300B400B
400B 500B500B
Output Port
SPQ/WRR/WFQ/DWRR
Scheduler
Shaper
51. • TCP ACK 수신 없이 한번에 전송할 수 있는 TCP 패킷(Maximum Segment Size) 개수
• 패킷 손실 발생시 현재의 congestion window를 50% 감소 (전송 대역폭을 반으로 감소)
• 이후 RTT마다 congestion window를 1씩 순차적으로 증가 (정상속도에 도달되는 시간이 오래 걸림)
TCP Algorithm
51
52. Shaping vs. Policing
52
Target Traffic Rate
Offered Traffic
Bandwidth(bps)
time
Rate Shaped Traffic
Bandwidth(bps)
time
Buffered
time
Bandwidth(bps)
time
Bandwidth(bps)
Target Traffic Rate
Offered Traffic
Rate Limited Traffic
Drop
FTP over a 128-Kbps rate-limited connection
ftp> put testfile
local: testfile remote: testfile
150 Opening BINARY mode data connection for 'testfile'.
100% |**********************************| 373 KB 00:00 ETA
226 Transfer complete.
382332 bytes sent in 35.61 seconds (10.48 KB/s)
FTP over a 128-Kbps traffic-shaped connection
ftp> put testfile
local: testfile remote: testfile
150 Opening BINARY mode data connection for 'testfile'.
100% |**********************************| 373 KB 00:00 ETA
226 Transfer complete.
382332 bytes sent in 24.73 seconds (15.10 KB/s) 121Kbps 84Kbps
62. • Congestion이 발생하게 되면, Queue(Buffer)가 overflow 날 것이고, 이때 패킷을 어떻게 폐기 처분할 것인지에
대한 방안이 요구됨 (잘 버리자!!!)
• Buffer Manger는 각 Queue별로 패킷을 어떤 방식으로 Discard할 것인지 그 방안을 제공함
• Tail-Drop
• RED (Random Early Detection)
• WRED (Weighted RED)
Buffer Manager
62
FE
FE
FE
FE
GE
GE
100Mbps
Congestion !!!
100Mbps
100Mbps
Output Port
Classifier
B
C
D
E
F
A
BD
EF
A
K
H
I
JL
L
Q1
Q2
Q3
...
J C
G
G
H
100Mbps
Queue Full !!!
63. • Queue에 패킷이 더 이상 들어갈 자리가 없으면(Queue Full) 그 이후에 들어오는 패킷은 Drop한다. 즉, Queue
에 들어갈 자리가 있으면 그 패킷은 서비스가 되고, 그렇지 않은 패킷은 버려지는 것임
• TCP Global Synchronization 현상 발생
Tail-Drop
63
Output Port
Q1
Q2
Q3
Drop
Drop Probability
1
0 Queue Size
Max Size
• Drop Probability(폐기 확률) = 1 : 패킷을 버림
• Max Queue Size : Queue에 담을 수 있는 패킷들의
총 크기(Total # of bytes)
65. • Queue에 쌓인 패킷들의 크기가 THmin 보다 작은 경우, 패킷들을 받아 들임
• Queue에 쌓인 패킷들의 크기가 THmin에서 THmax 사이인 경우, 확률적으로 패킷들을 받아 들임. 이 말은
곧 확률적으로 패킷을 Drop 한다는 의미. 폐기 확률은 Pmax에 비례
• Queue에 쌓인 패킷들의 크기가 THmax 보다 큰 경우, 도착한 패킷들을 모두 버림
RED (Random Early Detection)
65
Output Port
Q1
Q2
Q3
THminTHmax
THminTHmax
Drop
THminTHmax
Drop
1
2
3
1
0 Queue Size
Max SizeThmin Thmax
Pmax
Drop Probability
66. • 하나의 Queue내에 THmin/THmax/Pmax가 여러 개(본 그림에서는 3개) 존재하여, 이 Drop Precedence
Level(TH1 or TH2 or TH3)에 따라서 Drop되는 경우가 달라짐
WRED (Weighted RED)
66
12 3456
1 TH1min
2
3
4
5
6
TH1max
TH2min
TH3min
TH2max
TH3max
TH1 Packets
TH2 Packets
TH3 Packets
1
0 Queue Size
Max SizeTh1min Th1max
P3max
Th2min Th2max Th3min Th3max
P2max
P1max
Drop Probability
67. WRED + Policer
67
Change 802.1p (PCP)
Set DEI
Change DSCP (Class Selector)
Change DSCP (Drop Probability): AFx1 AFx3
Green
Yellow
Red Drop
Mark
Pass
Change WRED Drop Precedence Level
10MbpsPacket
Green
Drop Precedence Level = 3(Default value)
Policer
Yellow
Green
Yellow
Drop Precedence Level = 2
Queue Buffer Manager
12 3456
1 TH1min
2
3
4
5
6
TH1max
TH2min
TH3min
TH2max
TH3max
Drop Precedence Level 1
Drop Precedence Level 2
Drop Precedence Level 3
68. QoS Profile for Buffer Manager
68
Packet
In
Packet
Out
Queue
Scheduler
Classifier Marker Policer
Buffer
Manager
QoS Profile for Buffer Manger 1. Drop Precedence Level
69. CLI Example
69
# access-list acl-num 1 sip 1.1.1.0/24 dip 20.1.1.0/24 protocol tcp sp any dp 50-100
# wred acl-num 1 drop-level 3
acl-num 1에 match되는 패킷이 WRED enabled Queue로 서비스 될 경우, Drop level 3에 적용 받게 함
# buffer-mgr out-port 5 queue 1 wred drop-level-1 th-min 10% th-max 30% p-max 0.8 drop-level-2 th-min 20%
th-max 50% p-max 0.5 drop-level-3 th-min 60% th-max 95% p-max 0.2
# buffer-mgr out-port 5 queue 2 red th-min 30% th-max 80% p-max 0.7
# buffer-mgr out-port 5 queue 3 tail-drop
출력 포트 3번의 Q1은 WRED로 설정하고, 3개의 Drop level을 다음과 같이 설정
Drop Level 1 : THmin = 10%, THmax = 30%, Pmax = 0.8
Drop Level 2 : THmin = 20%, THmax = 50%, Pmax = 0.5
Drop Level 3 : THmin = 60%, THmax = 95%, Pmax = 0.2
출력 포트 3번의 Q2는 RED로 설정하고, Drop level을 다음과 같이 설정
THmin = 30%, THmax = 80%, Pmax = 0.7
출력 포트 3번의 Q3는 Tail-drop으로 설정