QoSを設定する場合、ほとんどの場合「CBWFQ」か「LLQ」になると思われます。
今回は、「CBWFQ」か「LLQ」についての違いとコンフィグの検証をCiscoCMLで検証します。
- CBWFQ (Class Based Weighted Fair Queue)
- LLQ (Low Latency Queuing)
「CBWFQ」か「LLQ」との違い
- CBWFQ
Queue1/Queue2/Queue3…Queue n = 帯域制御のQueueとして動きます。 - LLQ
Queue1=Priority Queueとして動きます。
Queue2/Queue3…Queue n = 帯域制御のQueueとして動きます。
結果的に、「CBWFQ」は帯域制御になり、「LLQ」は優先制御+帯域制御になります。
一般的にPriority Queueに入れるFlowは、音声や会議システムなどの遅延にシビアな通信なります。
Priority Queueに入ったパケットは最優先でEgressインターフェイスから出て行きます。
NW構成(CBWFQ)
PC1 -> 1.1.1.1 通信で、最低帯域保証10%確保する
PC2 -> 1.1.1.1 通信で、最低帯域保証15%確保する
PC3 -> 1.1.1.1 通信で、最低帯域保証20%確保する
PC4 -> 1.1.1.1 通信で、最低帯域保証はしない
show policy-map interface
R2#show policy-map interface
GigabitEthernet0/0
Service-policy output: POLICY_MAP_PARENT //親Policy-map
Class-map: class-default (match-any)
31770 packets, 3129793 bytes //各Class-mapを通過したパケットの合計
5 minute offered rate 3000 bps, drop rate 0000 bps
Match: any
Queueing
queue limit 64 packets
(queue depth/total drops/no-buffer drops) 0/0/0
(pkts output/bytes output) 31770/3129793
shape (average) cir 100000000, bc 400000, be 400000
target shape rate 100000000 //shaping設定値(100Mbps)
Service-policy : POLICY_MAP_CHILD //子Policy-map
——————————————————————————-
Class-map: Queue1 (match-all) //Class-map(Queue1)
7725 packets, 757050 bytes //Class-map を通過したパケット
5 minute offered rate 0000 bps, drop rate 0000 bps
Match: access-group name PC1_ACL //Class-mapに導くACL
Queueing
queue limit 64 packets //queueの深さ
(queue depth/total drops/no-buffer drops) 0/0/0
(pkts output/bytes output) 7725/757050
bandwidth 10% (10000 kbps) //帯域制御の値(10Mbps)
——————————————————————————-
Class-map: Queue2 (match-all) //Class-map(Queue2)
7724 packets, 756952 bytes //Class-map を通過したパケット
5 minute offered rate 0000 bps, drop rate 0000 bps
Match: access-group name PC2_ACL //Class-mapに導くACL
Queueing
queue limit 64 packets //queueの深さ
(queue depth/total drops/no-buffer drops) 0/0/0
(pkts output/bytes output) 7724/756952
bandwidth 15% (15000 kbps) //帯域制御の値(15Mbps)
——————————————————————————-
Class-map: Queue3 (match-all) //Class-map(Queue3)
7725 packets, 757050 bytes //Class-map を通過したパケット
5 minute offered rate 0000 bps, drop rate 0000 bps
Match: access-group name PC3_ACL //Class-mapに導くACL
Queueing
queue limit 64 packets //queueの深さ
(queue depth/total drops/no-buffer drops) 0/0/0
(pkts output/bytes output) 7725/757050
bandwidth 25% (25000 kbps) //帯域制御の値(25Mbps)
——————————————————————————-
Class-map: class-default (match-any) //Class-map(class-default)
8596 packets, 858741 bytes //Class-map を通過したパケット
5 minute offered rate 0000 bps, drop rate 0000 bps
Match: any //Class-mapに導くACL無し(any)
queue limit 64 packets
(queue depth/total drops/no-buffer drops) 0/0/0
(pkts output/bytes output) 8596/858741
R2-Config
hostname R2
!
▼▼▼Class-map設定部分▼▼▼
class-map match-all Queue1
match access-group name PC1_ACL
class-map match-all Queue3
match access-group name PC3_ACL
class-map match-all Queue2
match access-group name PC2_ACL
!
▼▼▼子Policy-map 設定部分▼▼▼
policy-map POLICY_MAP_CHILD
class Queue1
bandwidth percent 10
class Queue2
bandwidth percent 15
class Queue3
bandwidth percent 25
▼▼▼親Policy-map 設定部分▼▼▼
policy-map POLICY_MAP_PARENT
class class-default
shape average 100000000
service-policy POLICY_MAP_CHILD
!
interface GigabitEthernet0/0
ip address 10.12.1.2 255.255.255.0
service-policy output POLICY_MAP_PARENT
!
interface GigabitEthernet0/1
ip address 192.168.1.254 255.255.255.0
!
interface GigabitEthernet0/2
ip address 192.168.2.254 255.255.255.0
!
interface GigabitEthernet0/3
ip address 192.168.3.254 255.255.255.0
!
interface GigabitEthernet0/4
ip address 192.168.4.254 255.255.255.0
!
ip route 0.0.0.0 0.0.0.0 10.12.1.1
!
▼▼▼ACL 設定部分▼▼▼
ip access-list extended PC1_ACL
permit ip host 192.168.1.100 host 1.1.1.1
ip access-list extended PC2_ACL
permit ip host 192.168.2.100 host 1.1.1.1
ip access-list extended PC3_ACL
permit ip host 192.168.3.100 host 1.1.1.1
ip access-list extended PC4_ACL
permit ip host 192.168.4.100 host 1.1.1.1
!
control-plane
!
end
NW構成(LLQ)
PC1 -> 1.1.1.1 通信で、最大帯域5%確保する
PC2 -> 1.1.1.1 通信で、最低帯域保証10%確保する
PC3 -> 1.1.1.1 通信で、最低帯域保証15%確保する
PC4 -> 1.1.1.1 通信で、最低帯域保証はしない
show policy-map interface
show policy-map interface
R2#show policy-map interface
GigabitEthernet0/0
Service-policy output: POLICY_MAP_PARENT //親Policy-map
Class-map: class-default (match-any)
54780 packets, 5396727 bytes //各Class-mapを通過したパケットの合計
5 minute offered rate 3000 bps, drop rate 0000 bps
Match: any
Queueing
queue limit 64 packets
(queue depth/total drops/no-buffer drops) 0/0/0
(pkts output/bytes output) 54761/5394865
shape (average) cir 100000000, bc 400000, be 400000
target shape rate 100000000 //shaping設定値(100Mbps)
——————————————————————————-
Service-policy : POLICY_MAP_CHILD //子Policy-map
queue stats for all priority classes:
Queueing
queue limit 64 packets
(queue depth/total drops/no-buffer drops) 0/0/0
(pkts output/bytes output) 24/2352
——————————————————————————-
Class-map: Queue1 (match-all) //Class-map(Queue1)
13324 packets, 1305752 bytes //Class-map を通過したパケット
5 minute offered rate 0000 bps, drop rate 0000 bps
Match: access-group name PC1_ACL //Class-mapに導くACL
Priority: 5% (5000 kbps), burst bytes 125000, b/w exceed drops: 0
//priorityの最大帯域制御の値(5Mbps)
——————————————————————————-
Class-map: Queue2 (match-all) //Class-map(Queue2)
13323 packets, 1305654 bytes //Class-map を通過したパケット
5 minute offered rate 0000 bps, drop rate 0000 bps
Match: access-group name PC2_ACL //Class-mapに導くACL
Queueing
queue limit 64 packets //queueの深さ
(queue depth/total drops/no-buffer drops) 0/0/0
(pkts output/bytes output) 13323/1305654
bandwidth 10% (10000 kbps) //帯域制御の値(10Mbps)
——————————————————————————-
Class-map: Queue3 (match-all) //Class-map(Queue3)
13324 packets, 1305752 bytes //Class-map を通過したパケット
5 minute offered rate 0000 bps, drop rate 0000 bps
Match: access-group name PC3_ACL //Class-mapに導くACL
Queueing
queue limit 64 packets //queueの深さ
(queue depth/total drops/no-buffer drops) 0/0/0
(pkts output/bytes output) 13324/1305752
bandwidth 15% (15000 kbps) //帯域制御の値(15Mbps)
——————————————————————————-
Class-map: class-default (match-any) //Class-map(class-default)
14809 packets, 1479569 bytes //Class-map を通過したパケット
5 minute offered rate 0000 bps, drop rate 0000 bps
Match: any //Class-mapに導くACL無し(any)
queue limit 64 packets
(queue depth/total drops/no-buffer drops) 0/0/0
(pkts output/bytes output) 15245/1522297
R2-config
hostname R2
!
▼▼▼Class-map設定部分▼▼▼
class-map match-all Queue1
match access-group name PC1_ACL
class-map match-all Queue3
match access-group name PC3_ACL
class-map match-all Queue2
match access-group name PC2_ACL
!
▼▼▼子Policy-map 設定部分▼▼▼
policy-map POLICY_MAP_CHILD
class Queue1
priority percent 5
class Queue2
bandwidth percent 10
class Queue3
bandwidth percent 15
▼▼▼親Policy-map 設定部分▼▼▼
policy-map POLICY_MAP_PARENT
class class-default
shape average 100000000
service-policy POLICY_MAP_CHILD
!
interface GigabitEthernet0/0
ip address 10.12.1.2 255.255.255.0
service-policy output POLICY_MAP_PARENT
!
interface GigabitEthernet0/1
ip address 192.168.1.254 255.255.255.0
!
interface GigabitEthernet0/2
ip address 192.168.2.254 255.255.255.0
!
interface GigabitEthernet0/3
ip address 192.168.3.254 255.255.255.0
!
interface GigabitEthernet0/4
ip address 192.168.4.254 255.255.255.0
!
ip route 0.0.0.0 0.0.0.0 10.12.1.1
!
▼▼▼ACL 設定部分▼▼▼
ip access-list extended PC1_ACL
permit ip host 192.168.1.100 host 1.1.1.1
ip access-list extended PC2_ACL
permit ip host 192.168.2.100 host 1.1.1.1
ip access-list extended PC3_ACL
permit ip host 192.168.3.100 host 1.1.1.1
ip access-list extended PC4_ACL
permit ip host 192.168.4.100 host 1.1.1.1
!
control-plane
!
end
まとめ
- CBWFQ
各Queueに最低帯域保証を設定して、FLowに対して帯域保証を提供する。 - LLQ
Priority Queueと他Queueに最低帯域保証を設定して、FLowに対して優先制御と帯域保証を提供する。
Priority Queueには最大帯域設定が必要 - CBWFQ、LLQは共に輻輳が起こってから動作する。