QoS - CBWFQ

CBWFQ(Class-based Weighted Fair-queue)

CBWFQ は、WFQ(Weighted Fair-queue)に、Class というグループを
定義して、優先制御を行う方式
です。

WFQ の基本動作については、以下に解説しています。
WFQ の基本動作

WFQ には以下のような欠点があります。

  • ユーザにてクラス分けが出来ない
  • 帯域保障が出来ない
    (どんなパケットでも、パケット破棄が発生する可能性がある)

CBWFQ はには以下のような特徴があります。

 

クラス分けをユーザにて変更可能

WFQ の複数の Flow をまとめて、class という単位でキューを作成します。
この時の Flow のまとめかたをユーザでカスタマイズすることが可能です。

 

最低の帯域保証を設定できる

各 class ごとに輻輳時に最低限確保したい帯域を指定することが可能です。

当然輻輳時の最低帯域保障ですから、輻輳が発生していない場合は、
指定した 最低帯域を超えた帯域を使用することが可能です。

Cisco IOS の場合、「bandwidth」コマンドを使用して、最低帯域保障を
設定することが可能です。

 

CBWFQ のクラス分け手順

CBWFQ は MQC(Modular QoS CLI)にてクラスの分類を行います。

大きく以下の 4 つの手順を実施します。

  • クラス分類の設定
  • マッチ条件の設定
  • ポリシーの定義
  • インタフェースへの適用

 

クラス分類の設定

router(config)# class-map [ match-any | match-all ] name

match-any と match-all はオプションで、意味は以下の通り。

  • match-any
    クラスマップで指定した複数の条件のうち、どれか 1 つの条件に
    一致した場合
  • match-all
    クラスマップで指定した複数の条件のうち、全ての条件に一致した場合
    デフォルトは「match-all」です。

クラス数は最大で 64 まで分類可能です。

 

マッチ条件の設定

続いて、class-map 内で、マッチ条件を設定します。

マッチ条件は、様々な条件を指定することが出来ます。

router(config-cmap)# match access-group
router(config-cmap)# match any
router(config-cmap)# match class-map
router(config-cmap)# match cos
router(config-cmap)# match destination-address mac
router(config-cmap)# match discard-class
router(config-cmap)# match [ip] dscp
router(config-cmap)# match field
router(config-cmap)# match fr-dlci
router(config-cmap)# match input-interface
router(config-cmap)# match ip rtp
router(config-cmap)# match mpls experimental
router(config-cmap)# match mpls experimental topmost
router(config-cmap)# match not
router(config-cmap)# match packet length
router(config-cmap)# match port-type
router(config-cmap)# match [ip] precedence
router(config-cmap)# match protocol
router(config-cmap)# match protocol citrix
router(config-cmap)# match protocol fasttrack
router(config-cmap)# match protocol gnutella
router(config-cmap)# match protocol http
router(config-cmap)# match protocol rtp
router(config-cmap)# match qos-group
router(config-cmap)# match source-address mac
router(config-cmap)# match start
router(config-cmap)# match tag

ポリシーの定義

続いて、設定したクラスごとに、ポリシーを定義します。
ポリシーの定義で、最低帯域保障や最大パケット数の設定を行います。

最低帯域保障は「bandwidth」コマンドで指定します。

router(config-pmap-c)# bandwidth [ {kbps} | percent {value} | remaining percent {value}]

指定方法は 3 通り。

  • bandwidth {kbps}
    帯域で指定する場合
  • bandwidth percent {value}
    物理インタフェースの割合で指定する場合
  • bandwidth remaining percent {value}
    他のクラスに割り当てられていない帯域幅の割合で指定する場合

ここで、ユーザが設定したどのクラスにも分類されないパケットは、
「class-default」というクラスに分類
されます。

class-default」内の QoS 動作は FIFO となります。
(WFQ 動作にすることも可能)

ちなみに、使用できる帯域幅は物理帯域の 75% を上限としています。
残りの 25% はルーティングアップデートや keepalive パケット などで
使用するためこのような仕様となっています。

上限 75% を変更したい場合は、インタフェース内で以下のコマンドを
設定します。

router(config-if)# max-reserved-bandwidth <1-100>

また、各クラスに最大パケット数を設定することも可能です。

router(config-pmap-c)# queue-limit {value}

queue-limit のデフォルト値は「64」です。

 

インタフェースへの適用

最後にインタフェースにポリシーを適用します。

router(config-if)# service-policy [input | output] {policy-map-name}

 

設定例

ここまで説明してきた全体の設定例を記載しておきます。

class-map match-all CL-A
matchdscp 43
class-map match-all CL-B
match access-group 110
class-map match-any CL-C
matchprecedence 2
match protocol ftp
!
policy-map TEST
class CL-A
bandwidth percent 30
class CL-B
bandwidth percent 40
class CL-C
bandwidth percent 5
class class-default
queue-limit 128 packets
!
interface FastEthernet0/0
ip address 157.2.170.149 255.255.255.0
service-policy output TEST
!
access-list 110 permit ip any 10.1.1.0 0.0.0.255

 

設定の確認

設定の確認は「show policy-map interface」コマンドで実施します。

R1#show policy-map interface fastEthernet 0/0
FastEthernet0/0

Service-policy output: TEST

Class-map: CL-A (match-all)
0 packets, 0 bytes
5 minute offered rate 0000 bps, drop rate 0000 bps
Match:dscp 43
Queueing
queue limit 64 packets
(queue depth/total drops/no-buffer drops) 0/0/0
(pkts output/bytes output) 0/0
bandwidth 30% (30000 kbps)

Class-map: CL-B (match-all)
0 packets, 0 bytes
5 minute offered rate 0000 bps, drop rate 0000 bps
Match: access-group 110
Queueing
queue limit 64 packets
(queue depth/total drops/no-buffer drops) 0/0/0
(pkts output/bytes output) 0/0
bandwidth 40% (40000 kbps)

Class-map: CL-C (match-any)
0 packets, 0 bytes
5 minute offered rate 0000 bps, drop rate 0000 bps
Match:precedence 2
0 packets, 0 bytes
5 minute rate 0 bps
Match: protocol ftp
0 packets, 0 bytes
5 minute rate 0 bps
Queueing
queue limit 64 packets
(queue depth/total drops/no-buffer drops) 0/0/0
(pkts output/bytes output) 0/0
bandwidth 5% (5000 kbps)

Class-map: class-default (match-any)
26 packets, 2492 bytes
5 minute offered rate 0000 bps, drop rate 0000 bps
Match: any
26 packets, 2492 bytes
5 minute rate 0 bps

queue limit 128 packets
(queue depth/total drops/no-buffer drops) 0/0/0
(pkts output/bytes output) 26/2492

関連記事

QoSとは
QoSの基本

QoS - クラス分類とマーキング
クラス分類とマーキングについて学んでいきましょう

QoS - それぞれの機能
QoSの3つの基本機能について

QoS - 輻輳制御 (Queueing)
輻輳制御 (Queueing)についての解説

QoS - プライオリティ・キューイング(PQ)
プライオリティ・キューイングについての解説

QoS - カスタムキューイング(Custom queueing)
カスタム・キューイングについての解説

QoS - カスタムキューイング(Custom queueing)その2
カスタム・キューイングについての解説

QoS - WFQ(Weighted Fair Queue)その1
WFQ(Weighted Fair Queue)についての解説

QoS - WFQ(Weighted Fair Queue)その2
WFQ(Weighted Fair Queue)についての解説

QoS - IP Precedence
IP Precedenceについての解説

QoS - DSCP
DSCPについての解説

QoS - CBWFQ
CBWFQについての解説

QoS - LLQ (Low Latencey Queuing)
LLQについての解説

QoS - WRED(Weighted Random Early Detection)
WREDについての解説

QoS - ポリシングとシェーピング
ポリシングとシェーピングについての解説

QoS - GTS(Generic Traffic Shaping)
GTSについての解説

メールマガジン

ネットワ-ク初心者のみなさま。
ネットワークの基礎知識を疎かにすることは
大変危険です!!

「初心者にも理解できるネットワーク技術」

これを読めばネットワークの基礎が分かる!!
ネットワーク関連の仕事に就きたいとお考えの学生の方や、ネットワークに興味があって転職を考えている社会人の方、まずは登録してみてください。

もちろん無料です!!

↓メールマガジン購読はこちら↓

メールアドレス: