◆ ポリシングとは
ポリシングとは、特定のトラフィックに対してインターフェース上で受信または送信できる帯域幅を制限
できる技術です。ポリシングの実装には、「Class-Based Policing」によるポリシングと「CAR」による
ポリシングの大きく2種類があります。違いは以下の通りです。なお、推奨は Class-Based Policing です。
各機能 |
Class-Based Policing |
CAR |
イネーブル方式 |
MQC上で設定 |
インターフェース上で設定 |
設定用コマンド |
policeコマンドを使用 |
rate-limitコマンドを使用 |
適合トラフィックと
超過トラフィックへのアクション |
3つのアクション
confrom, exceed, violation |
2つのアクション
conform, exceed |
トークンバケット方式 |
シングルトークンバケット
デュアルトークンバケット |
シングルトークンバケット |
レート制限の手法 |
シングルレート
デュアルレート
|
- |
◆ シングルトークンバケットとデュアルトークンバケットの違い
簡単に言えば、policeコマンド構文で「violate-action」を使用しなければ、シングルトークンバケット
が採用されて、policeコマンド構文で「violate-action」を使用した場合は、デュアルトークンバケットの
アルゴリズムが採用されます。さらに詳細に学習したい方は以下の技術解説をご参考頂ければと思います。
・ Class-Based Policing - シングルトークンバケットの仕組み
・ Class-Based Policing - デュアルトークンバケットの仕組み
◆ シングルトークンレートとデュアルレートの違い
簡単にいえば、policeコマンド構文で「 cir 」キーワードと「 pir 」キーワードの2つを指定して、2つの
レートを指定した場合にデュアルレートとなります。これらのキーワードを指定せずCIR値、Bc値、Be値
だけを指定した場合にはシングルレートとなります。一般的に、Policingはシングルレートで実装されます。
◆ Class-Based Policingコマンド
CARではルータのインターフェースに対して直接ポリシングの設定を行いますが、Class-Based Policingでは、
classに対してポリシングの設定を行います。Class-Based PolicingのポリシングはCARのポリシングと同様、
トークンバケット方式を採用しているが、Class-Based Policingではシングルトークンバケット方式だけでなく
デュアルトークンバケット方式もサポートします。※ 値(Valid values)はIOSバージョンにより異なります。
◆ Class-Based Policingのコマンド構文:シングルレート( シングルトークンバケット方式 or デュアルトークバケット方式
)
(config)# policy-map name
(config-pmap)# class name
(config-cmap-c)# police bps burst-normal burst-max conform-action action exceed-action action violation-action action
構成要素 |
説明 |
bps |
CIR(保証された平均レート)。単位は「bps」。Valid values are 8000 to 2000000000。 |
burst-normal |
Bc(通常バーストサイズ)。単位は「bytes」。Valid values are 1000 to 51200000。 |
burst-max |
Be(超過バーストサイズ)。単位は「bytes」。Valid values are 1,000 to 51200000。
|
conform-action |
CIRのレート以内の場合のアクション。デフォルト値は「transmit」。
|
exceed-action |
CIRのレートを越えた場合のアクション。デフォルト値は「drop」。 |
violation-action |
通常バーストと超過バーストを越えた場合のアクション。デフォルト値は「drop」。
|
※ burst-maxはシングルトークンバケットの場合、つまり「violation-action」が使用されていない場合は無視される値となります。
主なアクション |
説明 |
transmit |
パケットが転送される。 |
drop |
パケットが廃棄される。 |
set-dscp-transmit |
パケットを新しいDSCP値に変更した上で転送する。 |
set-prec-transmit |
パケットを新しいIPプレシデンス値に変更した上で転送する。 |
set-qos-transmit |
パケットを新しいQoSグループの値に変更した上で転送する。 |
上記の設定でポリシーマップを作成後、最後にインターフェースに作成したポリシーマップを適用します。
◆ Class-Based Policingの適用
(config)# interface interface-id
(config-if)# service-policy input | output policy-name
◆ 参考:Cisco推奨のBc値とBe値の算出方法
対象 |
公式 |
公式の詳細 |
normal burst( Bc ) |
Bc = CIR × 1/8 × 1.5 |
Bc = configured rate ×(1byte)/(8bits)× 1.5 seconds |
extended burst(Be) |
Be = Bc × 2 |
Be = normal burst × 2 |
|