Cisco Catalyst 9000 スイッチング プラットフォーム QoS and キューイング ホワイトペーパー
このドキュメントは、hkatou Lab が Cisco Catalyst 9500 Architecture White Paper を非公式に翻訳したものです。
原文・画像の著作権は Cisco Systems にあります。
イントロダクション
このドキュメントは、Cisco Catalyst 9000 ファミリ スイッチのクオリティ・オブ・サービス (QoS) とキューイング アーキテクチャについて記載します。バッファ、スケジューリング、ポリシング、リマーキングの機能についての説明です。それは複数のポート間でどのようにバッファを共有するか、オート QoS が簡潔に構築できるか、そしてアプリケーションの要求に応じて、カスタム QoS ポリシーをどのように設定するか、詳細を提供します。
QoS の事例
エンタープライズ ネットワークは、様々なプラットフォームを横断してネットワークに広がり、エンド・ツー・エンドで QoS ソリューションを提供する必要があります。多様なプラットフォームにソリューションを提供するには、多くの場合それぞれの技術において、異なる QoS コンフィギュレーション アプローチを採る必要があります。エンタープライズ ネットワークは、より複雑で、ミッション クリティカル アプリケーションや、日々増大するウェブのマルチメディア アプリケーション トラフィックを運んでおり、QoS はこれらのトラフィックを優先づけすることで、それぞれのアプリケーションが求めるサービス レベルを確実なものにします。
ネットワークは、複雑さが増大するビジネス アプリケーションを扱えなくてはなりません。QoS によりネットワークは差別化という難しいタスクを扱うことができ、ビジネス アプリケーションについて、最も効率的に機器間のリンクを使用します。
QoS は以下のテクニックを追加することにより、ネットワークに保障と予測されたネットワーク トラフィックの選択を助けます。
- スケジューリングによる、帯域幅の保障
- 特定のトラフィックの損失の削減
- ネットワーク輻輳の管理と回避
- ネットワーク トラフィックのシェーピング
- ネットワークを横断するトラフィックに、優先順位の設定
上記のテクニックを用いてあなたのネットワークに QoS を実装することで、以下の優位点を得られるでしょう。
- 帯域幅、レート制限のように、リソースを超えたもののコントロール 例えば、重要なデータベース アクセスを優先するために優先度を与え、FTP 転送はリンク上で消費する帯域幅を制限したりできます。
- ミッション クリティカル アプリケーションとの共存
- 時間に敏感なマルチメディアと音声アプリケーションに、要求される帯域幅と最小遅延が提供できます
- FTP , メール、HTTP , 取引のような他のアプリケーションがリンクを利用するとき、音声のようなミッション クリティカル トラフィックに干渉させず、公平なレベルのサービスを使用できます
さらにネットワークに QoS 機能を実装することで、将来にすべてが統合されたネットワークとなる基盤を手に入れて、輻輳を管理する効率的なテクニックを使用できます
輻輳とは何ですか ?
輻輳は宛先ポートがすべてのパケットを外部へ送信できないときに発生し、いくつかのパケットは想定よりもドロップや遅延が発生します。画像 1. は 2 つのタイプの輻輳で、QoS とキューイングが必要とされるイラストです。
輻輳のタイプ
2 つのタイプの輻輳は画像 1. に示しています :
- 複数ポートから単一ポートへ : 複数の送信元ポートから単一の宛先ポートへ同時に送信するとき、複数の送信元から合計されたトラフィックが届いてしまい、宛先ポートが服装します
- スピード ミスマッチ : 高速なポートで受信して低速なポート (例えば 10Gbps から 1Gbps) で送信するとき、パケットは出力ポートから流れるのに時間がかかるため、結果としてパケットのドロップや遅延となります
なぜ輻輳に配慮しなくてはなりませんか ?
輻輳が発生したときに、輻輳管理機能が適切に設定されていない場合、パケットはドロップされます。パケットがドロップされると、上位プロトコルによっては再送が発生、もしくはネットワークの再収束が必要になる場合があります。これはネットワークの パフォーマンスに影響を与える可能性があります。すでにネットワークが輻輳していると、これが既存のパフォーマンスの問題に追加されてしまい、ネットワーク全体のパフォーマンスがさらに低下する可能性があります。それは ボーダー・ゲートウェイ・プロトコル (BGP) , オープン・ショーテスト・パス・ファースト (OSPF) , リンク・アグリゲーション・コントロール・プロトコル (LACP) のようなプロトコルの場合、一時的もしくは完全に接続が切れてしまう結果になりえます。このようなコントロール プレーン プロトコルのパケットが、輻輳によりドロップすることで、それらのキープ アライブ メッセージが、受信できなくなることで発生します。
ネットワークの収束と輻輳管理は、さらに重要になります。レイテンシやジッターは、音声やビデオのように敏感なトラフィックでは、もし遅延が発生すると厳しい影響があります。バッファの追加は常に簡潔なソリューションにはなりえません。ソリューションを探す前に重要なステップを踏むことで、アプリケーションのトラフィック パターンの何が影響しているか理解してください。
個別のアプリケーションで QoS を確保するために、適切なツールのセットが必要とされます。Cisco Catalyst 9000 ファミリは、エンタープライズ ネットワークで見られる、一般的なアプリケーションを扱うために必要とされるすべてのツールを提供します。
輻輳を管理するう方法はいくつかあります :
- オーバーサブスクリプション比の削減
- 優先するためのトラフィックに、キューイング スケジューラを使用
- 輻輳管理にウェイテッド・ランダム・アーリー・テール・ドロップ (WRED) やウェイテッド・テール・ドロップのように、いくつかのトラフィックを早期にドロップさせるためのアルゴリズムを採用
- ドロップを削減するためにバッファを使用し、送信する前のパケット保存量を増加
- 入力側でトラフィックをポリシングして、トラフィックを出力する前に削減
次のセクションでは、異なるスイッチのモデルで QoS 機能の統合の仕方を議論します。
Cisco Catalyst 9000 ファミリにおける ASIC の QoS の統合
Cisco Catalyst 9000 スイッチング プラットフォームは、エンタープライズ LAN アクセス、ディストリビューション、コアスイッチにおける次世代の Cisco ファミリです。Cisco ユニファイド・アクセス・データ・プレーン (UADP) アプリケーション・スペシフィック・インテグレーテッド・サーキット (ASIC) はこのプラットフォームはより高速なパフォーマンス、多くの新機能と動作を提供します。
Cisco Catalyst 9000 スイッチング プラットフォームは、一般的で強力なハードウェアとソフトウェア基盤で成り立っています。その性質と一貫性は、ネットワークエンジニアと管理者にシンプルさと運用のしやすさをもたらし、トータルで運用コストの削減とよりよい体験を創出します。
一般的なハードウェア
Cisco Catalyst 9000 ファミリのハードウェアは、その内部と外部で一般的なデザインを持ちっています。内部はハードウェアが一般的な ASIC を使用し、Cisco UADP がパケットの扱いに柔軟性を提供します。他の一般的なコンポーネントはスイッチの CPU です。Cisco Catalyst スイッチの歴史において、最初に x86 ベースの CPU を搭載 (Cisco Catalyst 9200 を除く) し、ネットワーク スイッチで通常使用可能なルーティングなどのアプリケーションを超えて、コンテナされたアプリケーションを追加することが加納です。
一般的なソフトウェア
すべての Cisco Catalyst 9000 ファミリ スイッチは、異なる CPU を持つ Cisco Catalyst 9200 を除いて、まったく同じバイナリ イメージの Cisco IOS XE で動作します。Cisco IOS XE は拡張され、オープンで、プログラマブルな OS です。30 年の歴史の中で 1000 を超える機能を持ち、Cisco IOS XE はネットワーキング市場において、間違いなく最も機能が豊富な OS です。Cisco Catalyst 9000 プラットフォームを横断してシングル バイナリ イメージを持ち、モジュラー・クオリティ・オブ・サービス・CLI (MQC) のようなエンド ツー エンドの機能のサポートを有効化し、ネットワークのどのポイントにおいても、同等の動作であることを担保します。この共通性はキャンパス ネットワーク全体でテストするイメージが単一であるため、ソフトウェア リリースの評価試験を行う際に役立ちます。
Cisco Catalyst 9000 のハードウェアとソフトウェア基盤は、基本機能の上に新モデルを構築する時、同じエンド ツー エンドの QoS 機能を有効化します。それは顧客へ一貫性と簡潔性をもたらします。
これらの Cisco Catalyst 9000 ファミリの 5 つのメンバーは、9300 シリーズ スタッカブル スイッチ、9400 シリーズ モジュラー シャーシ、9500 シリーズと 9500 ハイパフォーマンス シリーズ固定コア スイッチ、そして 9600 シリーズです。このセクションでは QoS アーキテクチャの観点から、これらのプラットフォームについて議論します。
Cisco Catalyst 9200 シリーズ アーキテクチャ
Cisco Catalyst 9200 シリーズスイッチは、シンプルなアーキテクチャを持っています。ネットワーク モジュール ポートを含むすべてのフロント パネル ポートは、24- か 48 ポートモデルで 1 つの UADP Mini ASIC に、マルチ ギガビット モデルで 2 つの UADP Mini ASICs に接続されます。UADP Mini として単一 ASIC コアがあることで、その QoS バッファはすべてのポート間で共有されます。すべてのポートは個別のキューイング機能をサポートします。
Cisco Catalyst 9200 シリーズは、StackWise-160 / 80 を使用するスタッカブル スイッチです。それぞれのスイッチは 2 つのスタック インターフェースで、スタック内で別の 2 つのスイッチへ接続できます。そのスタックインターフェースは ASIC の一部であり、スタックリングへパケットを送出します。専用のバッファがスタック インターフェースに割り当てられ、ユーザは設定で変更することはできません。
Cisco Catalyst 9300 シリーズ アーキテクチャ
Cisco Catalyst 9300 シリーズスイッチは、シンプルなアーキテクチャを持っています。ネットワーク モジュール ポートを含むすべてのフロントパネルポートは、UADP 2.0 ASIC に接続されます。モデルによっては、スイッチは 1 つかそれ以上の ASIC にすべてのポートを割り当てます。1 つより多くの ASIC を持つスイッチについては、殆どの場合同じ数のポートに分割して ASIC に収容されますが、これはすべてのポートが ASICs から同じリソースを利用できるようにするためです。QoS バッファは ASIC コアごとに分割され、ASIC コアに接続されたポートの中でのみ共有されます。すべてのポートは個別のキューイング機能をサポートします。
Cisco Catalyst 9300 シリーズは、スタッカブルスイッチです。それぞれのスイッチは 2 つのスタック インターフェースで、スタック内で別の 2 つのスイッチへ接続できます。そのスタックインターフェースは ASIC の一部であり、スタックリングへパケットを送出します。専用のバッファがスタック インターフェースに割り当てられ、ユーザは設定で変更することはできません。
Cisco Catalyst 9300-B スイッチは UADP 2.0 XL ベースで、Catalyst 9300 の他のモデルよりも、より大きなテーブルと UADP 2.0 と比較して QoS についてディープバッファを提供します。
Cisco Catalyst 9400 シリーズ アーキテクチャ
Cisco Catalyst 9400 シリーズ スイッチは、中央処理アーキテクチャをベースにしており、スーパーバイザですべてのパケットが処理されることを意味します。ラインカードはスタブ ASICs と PHYs のみを持っており、透過的であると考えることができます。結果として、スーパーバイザにすべての QoS のリソースが存在しており、それはポートごとのバッファとその他の QoS リソースを含んでいます。中央処理デザインのシンプルさは、既存のラインカードをそのまま使用しつつ、将来スーパーバイザをアップグレードすることで、機能を簡単にアップグレードできる点にあります。
スーパーバイザ アーキテクチャは UADP 2.0 XL がベースになっており、Cisco Catalyst 9300 で使用されている UADP 2.0 と比較して QoS はより大きなテーブルを持っています。
Cisco Catalyst 9500 シリーズ アーキテクチャ
Cisco Catalyst 9500 シーズのそれぞれのモデルは、異なるポート速度と密度を提供しますが、QoS アーキテクチャの観点からは、9500 シリーズは 9300 シリーズと似ています。モデルによって、UADP 2.0 XL と UADP 3.0 のどちらも 9500 シリーズ スイッチには存在しています。表 1. は、それぞれに使用されるモデルと ASICs のまとめです。
モデル | UADP 2.0 XL | UADP 3.0 |
---|---|---|
C9500-32C | 2 ASICs | |
C9500-32QC | 1 ASIC | |
C9500-48Y4C | 1 ASIC | |
C9500-24Y4C | 1 ASIC | |
C9500-16X | 1 ASIC | |
C9500-40X | 2 ASICs | |
C9500-12Q | 2 ASICs | |
C9500-24Q | 3 ASICs |
画像 6. と 7. に Cisco Catalyst 9500 シリーズ スイッチのフロント パネルと ASIC の接続を示します。
ハイパフォーマンス系のすべてのスイッチは UADP 3.0 ASIC を使用し、2 つの ASIC コアの間でユニファイド バッファをサポートします。これはバースト トラフィックの吸収量を増加でき、スイッチのすべてのポート間で、1 つの共有バッファを持つことになります。
Cisco Catalyst 9600 シリーズ アーキテクチャ
Cisco Catalyst 9600 シリーズ スイッチは、中央処理アーキテクチャをベースにしており、スーパーバイザですべてのパケットが処理されることを意味します。ラインカードはスタブ ASICs と PHYs のみを持っており、透過的であると考えることができます。結果として、スーパーバイザにすべての QoS のリソースが存在しており、それはポートごとのバッファとその他の QoS リソースを含んでいます。中央処理デザインのシンプルさは、既存のラインカードをそのまま使用しつつ、将来スーパーバイザをアップグレードすることで、機能を簡単にアップグレードできる点にあります。
スーパーバイザ アーキテクチャは UADP 3.0 がベースになっており、Cisco Catalyst 9500 で使用されている UADP 2.0 XL と比較して QoS はより大きなテーブルを持っており、ASIC コア間はユニファイド バッファになります。
UADP パケット ウォーク
Cisco Catalyst 9000 ファミリで使用されているすべての UADP ASICs は、 イーサネット フレーム or IPv4 / IPv6 ヘッダのフィールドを使用し、QoS 機能をラインレートで提供できます。
パケット ヘッダのマーキングは、ホップ間でサービスレベルをやり取りします。すべての IPv4 / IPv6 パケットはレイヤ 2 とレイヤ 3 のマーカーを持っており、QoS とキューイングに使用するためにデザインされています。しかしそれらはクラスでトラフィックを分類するためにのみ使用されるわけではありません。UADP ASICs は送信元と宛先 IP アドレス、TCP / UDP ポート、他のパケット ヘッダのデータも、分類に使用することができます。
パケット ヘッダの分類は、以下の値を使用することができます :
- レイヤ 2 クラス・オブ・サービス (CoS) : 3 ビット (0 - 7 の値)
- マルチ・プロトコル・ラベル・スイッチング (MPLS) エクスペリメンタル・ビット (EXP) フィールド : 3 ビット (0 - 7 の値)
- レイヤ 3 ディファレンシエイテッド・サービシズ・コード・ポイント (DSCP) , IPv4 の IP プレシデンス タイプ・オブ・サービス (ToS) ; IPv6 のトラフィック クラス (0 - 63 の値)
もしスイッチからパケットが生成された場合、パケット ヘッダにマーキングされていなくても、CPU は優先度を設定してパケットを分類できます。例えば、LACP プロトコル・データ・ユニット (PDUs) はタグなし (=CoS なし) ですが、CPU は内部優先度を用いて、それらをプライオリティ キューでスケジュールできます。
パケット フォーマットについて、追加の詳細情報は付録 C. を見てください。
UADP 2.0 (と 2.0 XL) と 3.0 は、QoS とキューイングについて同じ ASIC パケット ウォークを共有しています。パケットがシステムに入った時、それは内部ディスクリプタに紐付けられます。ディスクリプタは複数バイトから構成され、いくつかのビットは QoS 専用になっています。これらの QoS ビットはパケットヘッダで、入力マーカーごとに初期セットされます。ディスクリプタはスイッチから出るまでにパケットと紐付けられます。最終転送決定されるとすぐに、ディスクリプタはパケットを書き換えるために使用されます。
パケットが UADP ASIC に入った時、復号化のために MACsec ブロックへ行きます。次に、入力 FIFO がパケットのコピーを作成するために使用され、パケット・バッファー・コンプレックス (PBC) で変更されずに保存され、イングレス・フォワーディング・コントローラ (IFC)、は複数の並列ルックアップとディスクリプタでルックアップの結果を保存します。
- もしパケットがスタック インターフェースを越える時、イングレス・キュー・スケジューリング (IQS) ブロックを経由して送信され、スタック・キューイング・アンド・スケジューリング (SQS) ブロックによって、別のスイッチはスタック インターフェースから受信します。
- もしパケットが同じ ASIC 内で送信されるときは、スタック インターフェースはスキップします。
パケットがローカル PBC から、もしくはスタックのどちらか一方から届いた時、それは出力処理の準備が整っていることを意味します。キューイングのための、イーグレス・キュー・システム (EQS) で送信されます。EQS は 2 つのサブブロックでできており、SQS はスタックからパケットを受信すると、アクティブ・キュー・マネジメント (AQM) は、ポート キューを管理します。その結果、入力側でセットされたパケット ディスクリプタからパケットと情報が、イーグレス・フォワーディング・コントローラ (EFC) によって使用され、出力で設定された機能 (画像 12. 緑色の部分) を適用されます。出力ルックアップが完了すると、最終結果がディスクリプタに保存されます。
パケットがディスクリプタで最後の値をベースに書き換えられます。次に、パケットは暗号化され、ASIC の外に送信されます。
パケット ウォークは QoS 処理の観点から、4 つのパートに分割することができます。
- イングレス・フォワーディング・コントローラによる、入力分類 (イングレス クラシフィケーション)、ポリシング、マーキングが動作
- イングレス・キュー・スケジューリング (IQS) とスタック・キューイング・アンド・スケジューリング (SQS) ブロックによる、スタック インターフェースへのキューイングが動作
- アクティブ・キュー・マネージメント (AQM) による、出力キューイングとスケジューリングが動作
- イーグレス・フォワーディング・コントローラ (EFC) による、出力分類、ポリシング、マーキングが動作
画像 12. は 4 つのパートの描写です。それぞれのステップは後のセクションで詳細を記載します。
ASIC はパケットを処理するための、ハードウェア リソースを提供します。スケールの数は、付録 B で提供します。
モジュラー・クオリティ・オブ・サービス コマンド-ライン (MQC) モデル
MQC モデルは、異なる機種を横断して、標準的に QoS を設定する方法です。Cisco Catalyst 9000 ファミリ スイッチは、ポリサー、シェイパー、トラフィック リマーキング機能など、異なる QoS ツールを設定するために、構造化された方法として、同じ MQC モデルを使用します。
すべての MQC ポリシーは、インターフェースに適用されるポリシー マップ、クラス マップがベースになっています。画像 13. は MQC ポリシー構造を示しています。
画像 14. は、QoS ポリシーのサンプルを示しています。
QoS ツールは前に画像 12. に示したように、入力と出力で分類することが可能です。その画像ではパート 1 と 2 が入力ツールを描写しており、3 と 4 が出力ツールを描写しています。2 つの QoS ツールセットは、後述のセクションで議論します。これらのツールの組み合わせが、望まれるクオリティ・オブ・サービスを目的として、使用することができます。
入力ツールセット
信頼
Cisco Catalyst 9000 ファミリ スイッチでは、すべての入力パケットの DSCP は、デフォルトで信頼されます。ポリシーでマーキングが変更されない限り、パケット着信時のマーキングは変更されません。これは古い世代のプラットフォームでは望ましくなく、Cisco Catalyst 3750 シリーズの用に、MPLS QoS を有効にすると、すべての入力トラフィックが非信頼と (ToS / EXP などが) 0 にマークダウンされてしまいます。Cisco Catalyst 9000 プラットフォームでは、ポリシーで変更しない限り、すべてのマーキングは保持されます。
条件付き信頼
Cisco Catalyst 9000 ファミリ スイッチは条件付き信頼をサポートし、特定のタイプ・オブ・サービス (ToS) を信頼します。ポート レベルで設定できる信頼デバイス コマンドは、この機能を容易にします。信頼デバイスコマンドがポートに適用されると、ポートは信頼されたデバイスのみ信頼するようになります。他のデバイスから送信されたパケットは、信頼されず、DSCP , IP プレシデンス , CoS は 0 にリマーキングされます。
interface <interface name>
description IP Phone
switchport access vlan 99
switchport mode access
trust device cisco-phone
条件付き信頼は、1 つのタイプのみポートで有効化できます。しかし、複数のデバイスが 1 つのポートに接続する可能性があるため、その場合は同時に複数のデバイスについて、条件付き信頼を有効にすることはできません。
例えば、IP 電話がスイッチに接続され PC が電話に接続される場合があります。IP 電話は信頼デバイスとして設定されますが、PC はそうではありません。これはモバイル環境で信頼をプロビジョニングする際に問題となる可能性があります。次の例を考えてみましょう。:
- ポート A は接続された機器を信頼に設定され、初期は IP 電話です。
- ポート B は接続された機器を非信頼に設定され、初期は PC です。
移動するため、反対のポートに機器を接続しなおします。この移動によって IP 電話 (現在は非信頼のポート B に接続されている) から発信されたボイス・オーバー・IP (VoIP) の品質が損なわれてしまい、PC (現在は信頼のポート A に接続されている) によって、意図的・計画的な QoS の悪用にネットワークが利用されてしまいます。
1 つの解決策は、デバイスが接続されたポートスイッチの間で、インテリジェントな情報をやり取りすることです。もしスイッチがデバイスを発見して信頼できるように見えたら、動的に信頼を拡大します。もしそうでなければ、信頼しません。現在の Cisco の実装では、Cisco ディスカバリ・プロトコル (CDP) を使用して、インテリジェントな情報のやり取りを行っています。
代表的に IP 電話は、VoIP とシグナリング (それぞれデフォルト値は 5 と 3) の両方について、802.1Q/p CoS 値をマーキングする能力を持っています。さらに、それらは VoIP を DSCP EF に、コール シグナリングを DSCP CS3 にマークする能力も持っています。
クラシフィケーション
入力クラシフィケーションは、ポリシーが適用されたインターフェースで、スイッチにパケットが届いた時に実施されます。
Cisco Catalyst 9000 ファミリ スイッチは、以下のクラシフィケーションを使用します。:
- アクセス・コントロール・リスト (ACLs) (送信元 / 宛先 IP , TCP / UDP ポート , その他)
- DSCP
- IP プレシデンス (ToS)
- IPv6 トラフィック クラス
- dot1q CoS
- MPLS EXP (17.3.1 からサポート)
- ネットワーク・ベースド・アプリケーション・認識 (NBAR) プロトコル
- VLANs
クラシフィケーションは、複数のクラシフィケーション パラメータ間で、"AND" や "OR" などの論理演算子を使用できます。
以下の例は "AND" と "OR" の論理演算子間の典型的な違いです。
class-map match-any VOICE
match ?
access-group Access group
--- Or ---
dscp Match DSCP in IPv4 and IPv6 packets
ノート : "match-any" は、access-group "OR" DSCP 値にマッチします
class-map match-all VOICE
match ?
access-group Access group
--- And ---
dscp Match DSCP in IPv4 and IPv6 packets
--- And ---
vlan VLANs to match
ノート : "match-all" は、access-group "AND" DSCP 値 "AND" Vlan のすべてにマッチします
クラシフィケーション結果は、以下で使用されます :
- ポリシング
- 条件付き or 非条件付きマーキング
UADP ASIC の実装における、ハードウェア入力クラシフィケーションの詳細情報は、付録 A. を参照してください。
ポリシング
入力ポリサーは、入力レートを下げfるために使用される、もう 1 つの QoS ツールです。このセクションでは、超過したトラフィックを早急にドロップさせることで、ポリサーがどのようにトラフィック削減を実現しているか説明します。
MQC モデル経由でポリサーを設定するために、使用するパラメータについて、以下で説明します。
ポリサーレートとバースト
ポリシングの設定には、レートとバーストの 2 つの重要なパラメータがあります。そのレート (コミッテド・インフォーメーション・レート (CIR)) は特定の時間間隔 (通常は Kbps , Mbps , Gbps を参照します) の間、最大限転送することができるデータ量を定義したものです。与えられた時間内に受信できる全体データ量は、バーストと呼ばれます。
これらのパラメータがどのように相互作用するかのシンプルな例として、レート 10Mbps とバースト 11Mbps を使用するポリシーを挙げます。このポリシーは 10Mbps (レート) のデータを、特定の時間間隔で最大 11Mbps で受信できることを指定します。このバーストはどのくらいデータを受信 (バケットをいっぱいにできることを想像してください) できるか、レートはどのくらいデータを転送 (バケットを空にできる速度を想像してください) できるかを定義します。
強調するべき要なポイントは、決バーストは指定されたートよを下回ってはならない、ということです。仮に不可能な設定としてバーストを 8Mbps にセットしたとすると、レートを 10Mbps にセットしても、転送速度として 10Mbps を達成することはできません。もしバケット (バースト受信サイズ) は 8Mb だけ保持することができるため、同様に最大レートは 8Mbps のみになってしまいます。
ピーク インフォメーション レートと最大バースト
ピーク・インフォメーション・レート (PIR) と最大バーストは、次に理解するべきパラメータのセットです。もしレートとバーストが最初のバケットと関連付けられたら、PIR と最大バーストは次のバケットと関連付けられます。最大バーストは、2 つめのバケットの深さを定義づけし、PIR は 2 つめのバケットから転送することができる、データ量を意味します。PIR の 1 つの考え方は、リソースが使用可能であれば、追加して使用することが可能な、追加の小さいバケットといえます。
ハードウェア 間隔
上記のレートに関する定義で、"与えられた時間間隔" の用語の使用は、特定のハードウェアに定義・組み込まれた間隔に関連しています。ポリサー レートの精度は 0.0875% です。ハードウェア インターバルは、トークンがトークン バケットを満たすレートに関連しています。
画像 16. に見られるように、データは与えられた時間間隔でスイッチに到着し始めて、データの総数が定義されたレート (その間隔で) 内に収まる限り転送されます。データカウントが与えられた時間間隔でレートの限界を超えると、次のハードウェア インターバルが始まるまで、データは転送されません。
ハードウェア間隔は通常、CIR が使用される時 Tc" として、PIR の時は "Tp" と呼ばれます。
ポリサー設定
Cisco Catalyst 9000 ファミリ スイッチは、1 レートと 2 レートポリサーをサポートします。画像 17. で、ポリサーの動作順を説明します。
The following is a sample MQC policy for policing: 以下はポリシングに関する MQC ポリシーのサンプルです。 :
class-map match-all dscp46
match dscp ef => Classification
policy-map InputPort
class dsp46
police rate percent 10 => Policer 10 % of interface line rate
interface <interface name>
service-policy input InputPort
マーキング
マーキングは、パケットのさまざまなマーキング用フィールド (CoS , DSCP/IP プレシデンス , EXP) の操作を可能にするもう一つの QoS ツールです。Cisco Catalyst 9000 ファミリ スイッチは、ヘッダを書き換えるために複数の方法を提供します。 (パケットフォーマットの詳細は付録 C を参照してください)
- 条件付きマーキング : もしポリシング レートが超過したら、パケットのマーカーを変更する
- 無条件マーキング : ポリシーに該当するすべてのパケットをマークする
マーキング ポリシー設定
class-map match-all dscp20
match dscp 20 => Classification
class-map match-all dscp21
match dscp 21 => Classification
policy-map InputPort
class dscp20
set dscp af11 => Unconditional marking
class dscp21
police cir percent 10 pir percent 50
conform-action transmit
exceed-action set-dscp-transmit dscp table MARKDOWN
=> Conditional marking, as the DSCP value is changed only
if policing rate is exceeded
violate-action drop
class dscp22
police cir percent 10 pir percent 50
set dscp af11 => Unconditional marking can be combined with policing
interface <interface name>
service-policy input InputPort
変換 (ミューテーション) マップ : これらのマップは、レイヤ 2 CoS ヘッダ情報を元にした、レイヤ 3 DSCP ヘッダの書き換えを許可します。テーブル 2. はヘッダの変換をサポートするリストです。
To : | ||||||
---|---|---|---|---|---|---|
プレシデンス | DSCP / トラフィック クラス | CoS | QoS グループ | EXP | ||
From : | プレシデンス | X | X | X | X | |
DSCP / トラフィック クラス | X | X | X | X | ||
CoS | X | X | X | X | ||
QoS グループ | X | X | X | X | ||
EXP | X | X | X | X |
以下に変換マップの設定の仕方を示します。
table-map CoS2DSCP
map from 1 to 46
policy-map Mutation
class class-default
set dscp cos table CoS2DSCP
ここで "set <to> <from>" はマーカー間の変換を設定します。
ポリシーではテーブルマップを使用する時、以下の機能をサポートします。
- クラス デフォルトのみが、テーブル マップを適用できます
- 変換 : テーブル マップはとある DSCP 値のセット (訳注 : ここは複数を意味するセット) を別の DSCP 値にセットし、出力ポートに適用できます
- リライト : 着信パケットは設定されたテーブル マップに応じて書き換えられます
- マッピング : セットされたポリシーの代わりに、テーブル マップ ベースのポリシーが使用可能です
まとめると、信頼、クラシフィケーション、ポリシング、マーキングは入力転送パスで適用されるツールで、画像 12. のステップ 1 から定義された、"ASICを ブロックごとの QoS ツール" です。これらのツールは入力 QoS ツール セットを定義します。このセクションでは、ツールの使用方法として、MQC ポリシーの例を提供します。
次のセクションでは、画像 12. のステップ 2 を元に、スタック インターフェースのキューイングについて説明します。
異なる ASIC に届けるための、スタック インターフェースへのキューイングとバッファ
入力転送の結果が来た (信頼 or クラシファイドされ、ポリサーやリマークされた) 後、パケットは宛先 ASIC へ向かってスケジュールされます。このステージでパケット ディスクリプタからの情報は、パケットをキューに入れるために使用されます。この情報は入力転送パスで変更されるか、オリジナルとして保存されるでしょう。パケットは書き換えられず、オリジナルの QoS 優先度を持ったまま宛先へ着信します。
PBC からスタック リングへパケットが送信されると、画像 11. "UADP ASIC コア コンポーネント" に示すように、イングレス・キュー・スケジューラ (IQS) ブロックが使用されます。IQS は第 1 レベルのキュー構造を提供し、高優先度のトラフィックが最初に送信されます。これはスタック リング全体でパケットの優先度が確実保持されるようにするために行われます。Cisco Catalyst 9300 シリーズのようにスタック インターフェースは外部にしたり、Cisco Catalyst 9400 , 9500 , 9500 ハイパフォーマンス スイッチのように、内部にすることができます。しかし QoS とキューイングの視点からは、同じ機能を共有できます。
スタック インターフェースは転送するメディアのみ提供し、パケット優先度を変更するための能力は持っていません。パケットがスタックから届いた時、オリジナルの ASIC コアから入ってきた時と全く同じ設定になっています。
スタック インターフェースはスケジューリングについて、8 つの個別キューを提供します。画像 18. に、スタック インターフェースの "TO" と "FROM" を使用するキュー構造を示します。
パケットは出力ポートのスケジューラへ送信され、画像 12. のステップ 3 に示すように、出力ツールを使用してパケットを更に処理します。
出力ツールセット
出力キューイングとスケジューリング
出力ポート スケジューラは、複数ポートのキューとバッファとキューしきい値を提供するもう一つの QoS ツールです。スケジューラはインターフェースからパケットが離れる時、優先順位をつけるために使用されます。すべてのパケットは、異なる優先度によってキューへ振り分けられます。キュー システムは、一般のキューと、アイテムが少ない人のための "特急" キューを持った、地元の食料品店とよく似ています。画像 19. に通常キューと、特急・優先キューのイラストを示します。
キュー構造を提供するために、UADP ASIC はイーグレス・キュー・システム (EQS) ブロックを使用します。主要な EQS のコンポーネントは、以下になります。
- ポート キュー
このタイプのキューは、パケットを同じ方法でグループ化して処理できます。複数のキューがあると、ASIC は次のパケットを取得して、送信するキューを選択できます。食料品店の例を使用すると、すべてのキューは 購入された商品を処理する 1 人のレジ係を表します。特急キューは、処理時間を短縮することで、人々が商品の購入を高速に行え、食料品店を出る方法を表しています。
- ポートは物理キューに分割されています
- すべてのキューはパケットをためておくのに使用できる、バッファ / メモリを持ちます
- ポートごとのキューの数は、1 から 8 個を可変して持つことができます
食料品店の例では、人々は彼らが購入した商品の数に応じて列に並んでいます。同様に、パケットも ASIC でキューに割り当てられる必要があります。UADP ASIC では、パケット ディスクリプタからの情報が、キューにパケットを割り当てるために使用されます。パケットがキューに割り当てられると、スケジューリング アルゴリズムはキューで順番を管理するのに役立ちます。優先 / 特急キューを優先できますが、非優先キューの場合は、輻輳を避けるために、ウェイテッド・ラウンド・ロビン (WRR) が使用されます。
なぜ絶対優先キューなのですか ?
絶対優先キューは、ポートで他の通信をすべて抑制することができ、パケットがある限りキューからパケットを送信します。パケットが絶対優先キューにある時、パケットのスケジューリングは WRR キューを停止し、絶対優先キューのパケットが送信されます。絶対優先キューが空である時のみ、スケジューリング プロセスは、WRR キューからパケットの送信を再開します。
画像 21. は絶対優先キューが WRR キューよりも優先される方法を 3 つのステップで表しています。各シーケンスの矢印は、どのキューが初に処理されるをかを示してます。
UADP ASIC は、ポートごとに 1 つのレベル 1 絶対優先キュー (PQ1) と 1 つのレベル 2 絶対優先キュー (PQ2) をサポートします。PQ1 と PQ2 は WRR スケジューリング アルゴリズムの範囲外で動作します。PQ1 の目的は、最小の遅延で音声トラフィックを処理することです。PQ2 は、もう少し遅延を許容することができる、映像トラフィックを処理するために使用されます。
なぜ WRR なのですか ?
通常のラウンド ロビン アルゴリズムは、送信キューの間で交互に動作し、次のキューに移動する前に、それぞれのキューから同じ数のパケットを送信します。WRR の重み付け比率により、スケジューリング アルゴリズムは、各キューに割り当てられた、重み付けを検査できます。この重み付けは、それぞれのキューがどのくらいの帯域幅でアクセスできるか定義します。WRR スケジューリング アルゴリズムは、他のキューよりも高い重み付け (各間隔) の場合に、キューからより多くのデータを取り出せるように、指定されたキューを偏らせて処理します。
画像 22. は、それぞれのキューから送信されるパケットの数が異なることを示しています。なぜならば 1 つのキューが高帯域幅 / 高い重み付けを持っていると、より多くのパケットがそこから送信され、キューはより頻繁に使用されます。
デフォルト キュー構造は、すべての Cisco Catalyst 9000 ファミリ スイッチ間のすべてのポートで共通化され、速度に関係なく、2 つのキュー モデルをベースとします。デフォルトでは、優先とコントロール トラフィックは Q0 に分離されますが、Q0 は優先キューとして動作しません。
デフォルト キュー設定は、カスタム MQC ポリシーによって変更することが可能です。顧客はポリシー マップで明示的に指定されていない場合でも、クラス デフォルトが常に定義する最小の 1 個から 8 個のキューまで柔軟に使用できます。キュー構造は体系を使用して、多くの通常キューと絶対優先キューの数、キューごとに使用可能なしきい値の数を示します。キュー構造タイプのキーワードは、以下になります。 :
- Q : 通常キュー、もしくは UADP ASIC による WRR キューの数を表す
- P : 絶対優先 (低遅延) キューの数を表す
- T : 通常キューごとのしきい値の数を表す 絶対優先キューはしきい値を実装しません
以下はキュー体系の例と、キューに割り当てたトラフィックのマッピングです。
- 8Q3T : 8 つの通常キュー、キューごとに 3 つのしきい値
- 1P7Q3T : 1 つの優先キュー、7 つの通常キュー、キューごとに 3 つのしきい値
- 2P6Q3T : 2 つの優先キュー (レベル 1 と 2)、6 つの通常キュー、キューごとに 3 つのしきい値
以下は MQC ポリシーのサンプルで、キューの優先度を管理するために、クラス マップとポリシー マップを使用します。WRR 帯域幅はキューごとに調整され、バッファ比率は手動で調整されます。しきい値は後のセクションで説明します。
トラフィックをアサインするには、 DSCP , CoS , QoS グループを使用します。 ACL クラシフィケーションは、キューイング ポリシーでは使用できません。
class-map VOICE
match dscp 46
class-map RT-VIDEO
match dscp 32
* クラスマップのその他の部分は省略
クラシフィケーションは、キューにトラフィックをマッピングします
policy-map 2P6Q3T
class VOICE
priority level 1
queue-buffers ratio 5
class RT-VIDEO
priority level 2
queue-buffers ratio 10
class MGT-CONTROL
bandwidth remaining percent 10
queue-buffers ratio 10
class MULTIMEDIA-CONFERENCE
bandwidth remaining percent 10
queue-buffers ratio 10
class MULTIMEDIA-STREAMING
bandwidth remaining percent 10
queue-buffers ratio 10
class TRANSACTIONAL-DATA
bandwidth remaining percent 10
queue-buffers ratio 10
class BULK-SCAVENGER
bandwidth remaining percent 5
queue-buffers ratio 10
class class-default
bandwidth remaining percent 25
queue-buffers ratio 35
interface <name>
service-policy output 2P6Q3T
=> キューイング MQC ポリシーは、output 方向のポリシーのみサポートされます
17.3(1) から、MPLS EXP をベースにした、出力キューイングがサポートされます。
まとめると、UADP 2.0 ASIC とその後のバージョンでは、すべてのポートで固有の設定を持つことで、非常に柔軟なキューイングモデルをサポートし、異なる数の優先キュー、もしくは帯域幅設定を使用できます。
キュー バッファ
キュー バッファは主に以下で使用されます :
- プライオリティ キューが送信を終了するまで、通常キュー・WRR キューで待機させる
- 高レベルのマイクロ バーストの吸収
- 異なる速度のリンク間 (高速 -> 低速) で、トラフィックを保持する
食料品店の例に戻ると、キュー バッファはお店の責任者が人々を別の列に移動し始める前に、どのくらい多くの人々が 1 列に並ぶことができるかを示します。
マイクロ バーストを説明するため、画像 24. に入力トラフィックのレートを示します。この伸びた棒は、処理されたパケットの数が瞬間的に多くなったことを示します。UADP ASIC は、これらのパケットを廃棄することなく、物理メモリに保存できます。
全体の物理バッファが、UADP ASIC の一部をベースとして複数のセグメントに分割されて、メモリ スペースを使用します :
- スタック インターフェースに向かうようにスケジュールされたパケットについて、To-スタック バッファが使用されます これらは IQS UADP ASIC ブロックによって使用されます。
- スタック インターフェースから受信するトラフィックについて、From-スタック バッファが使用されます これらは SQS UADP ASIC ブロックによって使用されます
- 出力ポート キュー バッファは最大のバッファで、ポート キュー構造によって使用されます。このバッファは異なるキュー、もしくはポート間で共有が可能です。それはアクティブ・キュー・マネジメント (AQM) UADP ASIC ブロックによって使用されます。
これらの 2 つのアプローチは、セグメントにバッファを割り当てるためのものです : そのアプローチとは、静的と動的です。UADP ASIC では、To-スタックと From-スタックのバッファ ブロック、つまり IQS と SQS について、固定アプローチを使用します。しかし出力ポートに固定割当バッファを割り当てることは、バースト トラフィックで発生しうるパケットドロップには、効率的に対処できません。UADP ASIC では、デフォルトでは最小の専用バッファをすべてのポートのキューに持たせ、高バーストを吸収するために、共有プールから動的に追加バッファを加えることができます。共有メモリプールの物理スペースは限られており、トラフィック バーストが来た時にポートキューに割り当てられます。
食料品店の例では、顧客はすべての有効なキューに分散するよりも、1 つのキューに長い列を作ると腹立たしく思うでしょう。すでにいっぱいになっているキューに更に多くの人が来た場合、店舗責任者は物理スペースを広げるために、より列の長さが短いキューから、整列用に一時な線を引くでしょう。スイッチでも同じように、キューが輻輳した時には動的により多くの物理スペースを提供するのです。
ダイナミック・スレッショルド (しきい値)・スケール (DTS) アルゴリズムは、マイクロ バーストに対して UADP ASIC のバッファ パフォーマンスを高めるために導入されました。DTS は UADP ASIC の AQM ブロックの一部です。
DTS は以下の利点を提供します。 :
- バーストの間、ポートごと、キューごとに動的な追加バッファを割り当て
- 共有バッファはマイクロ バーストの間、トラフィックのドロップを削減
- 共有バッファと動的割当のバッファの数の間で、バランスを提供
- 柔軟なバッファ管理 : 専用バッファに共有バッファを追加
DTS は以下の機能を動作させます :
- バッファを使用していないポートから、共有プールを作成
- ポートごと、キューごとに設定可能な、専用しきい値の有効化
- グローバルに設定可能な、最大共有しきい値の有効化
- ハード バッファ (専用) とソフト バッファ (共有) 間で、ポートごとにバッファの分割
- 最初に専用バッファを使用し、次に共有プールの消費が公平になるように使用
以下のステップで DTS から共有プールが構築されます :
ステップ 1. DTS はフリーのポートバッファをまとめて、マイクロバーストの間、動的に分散できる 1 つの共有プールを作成します。全体の合計は、まだトラフィックが無いものと仮定します。画像 26. は共有バッファ スペースが作られたことを示しています。
ステップ 2. 共有プールから作成し、バッファを取得してマイクロ バーストが来ているポートキューへ割り当てます。マイクロ バーストが終了すると、バッファは共有プールへ戻されます。画像 27. は共有プールがどのように消費されるかを示しています。
次に DTS のパラメータと、それらが動的割当バッファとしてどのように使用されるか説明します。画像 28. はメイン パラメータとそれらの相関関係を示します。
専用 / ハード バッファ : これは特定のキューで最小予約されるバッファです。UADP ASIC はレベル 1 優先キューにのみ、ハード バッファを使用します。ハード バッファは画像 28. には表示させていません。しかしそれらは "HardMax" コマンドと呼ばれます。
共有 / ソフト バッファ : これらのバッファはポート キューへ動的に割り当てられますが、他のポート キューによっても共有されます。ソフト バッファを管理するためのパラメータは以下です :
- SoftMin : ポートに与えられる、最小共有バッファです。デフォルトでは、共有バッファの小さな部分が非優先キューに割り当てられ、トラフィックを確実に送信できるようになります。設定によって、削除が可能です。
- SoftMax : ポート キューが共有プールから消費できる、最大のバッファです。これは設定可能なパラメータで、デフォルトは 100 です。
- Soft Start : 共有バッファは使用率を定期的に監視されています。もし全体バッファ使用率が 75% に届くと、ポートごとのバッファの動的割当の一部が削減され始めます。共有バッファの使用率が高くなると、バッファの減少をもっと積極的に行います。
- Soft End : 共有バッファの使用率が最大に達した時、マイクロ バースト (SoftMin と SoftMax が等しい) を吸収するための、追加バッファをポートキューへ提供できなくなります。共有バッファはポート キューごとの SoftMin バッファをまだ提供しており、キューは最小バッファを送信のために持っていますが、追加バッファはありません。
ポートごとと、グローバル共有バッファプール : DTS のメッセージは共有プールの 2 セットがあります。
グローバル : ポート間で共有が許可されたバッファ。このプールはパラメータの前に "Global" の接頭辞を使用します。例 : GlblSMin.
ポート キュー間 : ポート キュー間で共有が許可されたバッファ。このプールはパラメータの前に "Port" 接頭辞を使用します。例 : PortSMin , PortStEnd.
ポート キュー バッファが調整される時、2 つの独立した調整が要求されます : グローバル プールからと、ポート共有プールから行われます。グローバル プールとポート プールの占有率がチェックされ、ポート キューはより大きなバッファを提供する共有プールからバッファを取得し、それを使用してマイクロ バーストを吸収します。
- Q0 は専用 / HardMax バッファを固定的に持っています
- Q0 は HardMax を使用した後、共有プールから消費できます
- Q1 は専用 / HardMax バッファを持っていません しかし SoftMin と同じ値で共有プールから専用にバッファの割当を受けています
- Q0 用の SoftMax は 、HardMax の 4 倍です
- Q0 が優先レベル 1 にセットされている時、SoftMax は HardMax の値と同じに設定されます
- Q1 の SoftMax は GlobalSoftMin (GblSMin) の 4 倍です
ポート キュー設定を読みとるには、"show platform hardware fed [switch] [active] qos queue config interface" コマンドを使用し、前述のバッファの DTS パラメータをスイッチから直接表示させます。
共有プールからポートへバッファの割当を増やすためには、SoftMax しきい値を増やすコマンド "qos queue-softmax-multiplier" を使用します。その最大値は 1200 で、マイクロ バーストを吸収する単一のポート キューの能力が、12 倍になります。このコマンドはポート キューしきい値を向上させ、ポート キューが共有プールから追加バッファを消費できます。共有プールはリースが限られており、それは物理メモリの消費を意味します。従ってすべてのポートがすべてのマイクロ バーストを処理するために、必要なバッファを共有プールから消費できるわけではありません。バッファ共有自体は、同時にスイッチのすべてのポートでマイクロ バーストが発生するわけではないことを、前提としています。もしマイクロ バーストがランダムな瞬間に発生すると、共有バッファはそれらを吸収するために専用の追加バッファを割り当てることができるでしょう。このようにで DTS を使用することによって、UADP ASIC は非常に効率的に PBC を利用できます。
ポートごとの全体バッファの数は、増やすことができませんが、ポート速度に依存して割り当てられたバッファは、ポート キューごとのバッファの数を、デフォルトの割当から変更することができます。
Cisco Catalyst C9300-24UCB と C9300-48UB スイッチは、スタック ポートを無効化するオプションを提供し、16.12(1) から "qos stack-buffer" コマンドをサポートします。これは IQS と SQS からバッファを共有プールに戻す機能です。
UADP 3.0 ベースの Cisco Catalyst スイッチは、17.2(1) からユニファイド バッファ機能を有効にするための、"qos share-buffer" コマンドを使用できます。
表 3. にさまざまな Cisco Catalyst 9000 ファミリのポート速度ごとに割り当てられた全体バッファを示します。
プラットフォーム | キュー | 100M , 1 / 2.5 / 5Gbps | 10Gbps | 25Gbps | 40Gbps | 100Gbps | |||||
---|---|---|---|---|---|---|---|---|---|---|---|
Hard Max | Soft Max | Hard Max | Soft Max | Hard Max | Soft Max | ||||||
Cisco Catalyst
9200 シリーズ |
Q0 | 81
(1Gbps のみ) |
324
(1Gbps のみ) |
408 | 1632 | - | - | - | - | - | - |
Cisco Catalyst
9300 シリーズ |
Q0 | 100 | 400 | 600 | 2400 | 600 | 2400 | 2400 | 9600 | - | - |
Cisco Catalyst
9400 シリーズ |
Q0 | 176 | 700 | 176 | 700 | 176 | 700 | 176 | 700 | - | - |
Cisco Catalyst
9500 シリーズ |
Q0 | 200 | 800 | 1200 | 4800 | 1200 | 4800 | 4800 | 19,200 | – | – |
Cisco Catalyst
9500 ハイパフォーマンス と 9600 シリーズ |
Q0 | 112 | 448 | 240 | 960 | 480 | 1920 | 720 | 2880 | 1920 | 7680 |
Soft
Min |
Soft
Max |
Soft
Min |
Soft
Max |
Soft
Min |
Soft
Max |
Soft
Min |
Soft
Max |
Soft
Min |
Soft
Max | ||
Cisco Catalyst
9200 シリーズ |
Q1 | 4721 (1 Gbps only) | 488 (1 Gbps only) | 1912 | 2448 | – | – | – | – | – | – |
Cisco Catalyst
9300 シリーズ |
Q1 | 150 | 600 | 300 | 1200 | 300 | 1200 | 3600 | 14,400 | – | – |
Cisco Catalyst
9400 シリーズ |
Q1 | 336 | 1344 | 264 | 1056 | 264 | 1056 | 337 | 10,800 | – | – |
Cisco Catalyst
9500 シリーズ |
Q1 | 300 | 1200 | 1800 | 7200 | 1800 | 7200 | 7200 | 28,800 | – | – |
Cisco Catalyst
9500 ハイパフォーマンス と 9600 シリーズ |
Q1 | 336 | 672 | 360 | 1440 | 720 | 2880 | 1080 | 4320 | 2880 | 11,520 |
ノート : 表 3. はほとんどデフォルトの数値を示していますが、プラットフォームごとに若干調整されている場合があります。
以下の設定はポート キューに、どのように与えられたバッファの 100% を再配分するかを示しています。バッファ用の MQC ポリシー (削減された CLI) はポートの出力方向にのみ適用できます。
policy-map 2P6Q3T
class PRIORITY-QUEUE
queue-buffers ratio <number>
class VIDEO-PRIORITY-QUEUE
queue-buffers ratio <number>
class DATA-QUEUE
queue-buffers ratio <number>
class class-default
queue-buffers ratio <number>
バッファを手動で書き換えた時、ユーザは全ポートで一定量のバッファを確保して、割り当てる必要があります。もしバッファが割り当てられていなければ、トラフィックはキューでドロップするでしょう。
例 1. に設定するべきではない例を示します。これはネットワークが停止原因となるでしょう。
例 1.
policy-map 2P6Q3T
class PRIORITY-QUEUE
class VIDEO-PRIORITY-QUEUE
class DATA-QUEUE
queue-buffers ratio 50
class class-default
queue-buffers ratio 50
例 1. は以下の問題があります :
- キュー バッファを 100% まで、2 つのキューのみにすべて割り当ててしまっている
- もしそれぞれのキューがキューバッファの指定を持っていない場合、以下の動作になります :
(100% - 特定のキューにバッファを割り当てて) 次にキューバッファを設定していないキューで均等に分割する
例 1. の結果として、キュー "DATA-QUEUE" と "class-default" はバッファ全体を消費し、それらのキューから出力されようとスケジュールされた、すべてのトラフィック はドロップするでしょう。
例 2. でどのように手動で再配分すれば良いか示します。
例 2.
policy-map 2P6Q3T
class PRIORITY-QUEUE
queue-buffers ratio 10
class VIDEO-PRIORITY-QUEUE
queue-buffers ratio 10
class DATA-QUEUE
queue-buffers ratio 35
class class-default
queue-buffers ratio 45
例 2. のポリシーの結果として、すべてのキューがトラフィックの送信を有効化するためのバッファを持ちます。
もう一つ重要なコマンドとして、バッファ使用率がポート キューごとにどのように変化するか、リアルタイムで示します。このコマンドは、ASIC から値を読み取ります。
Port queue thresholds
- ポート キューしきい値
- ウェイテッド・テール・ドロップ (WTD)
ポート キューしきい値は、キューの最後 (テール・ドロップ) よりトラフィックを早期にドロップするために使用されます。もしポート キューがキューの終わり前で手後亭のトラフィックをドロップする能力を持つと、ポート キューによってその他のトラフィックが管理され、ある種のパケットのためにバッファスペースを確保できます。これはユーザ設定がベースになります。画像 30. に様々なキューしきい値として、DSCP , CoS , IPv4 IP プレシデンス (ToS) , IPv6 トラフィック クラスを、ユーザが柔軟に割り当てできることを示します。
17.3(1) から、同じように MPLS EXP ベースの WTD をサポートします。
もしキュー使用率が TH0 を超えたとき、キューの使用率を TH0 を下回るまで、このしきい値に該当するように設定された、すべての新しいトラフィックはドロップされます。TH1 も同じように動作しますが、トラフィックのグループが異なる (=優先度が高いため、ドロップが遅らせる) ため、TH0 より大きな値を持っています。明示的に定義されていない QoS 優先度を持つトラフィックは、TH2 と一致するため、キューのテール エンドは自動的に縮小します。
UADP ASICs は、ポート キューごとに 3 つまでのしきい値を提供します。1 つのキューの 3 つのしきい値は、同じタイプのパケット ヘッダを使用する必要があります。例として、1 つのキューで 3 つのすべてのしきい値が CoS を使用する場合、他のキューは DSCP のように他のパケット ヘッダを使用することができません。デフォルトでは、TH0 を 80% に設定し、TH1 を 90% に、TH2 を 100% or テール ドロップと同じに設定されています。すべてのトラフィックは初期状態として TH2 に割り当てられておりますが、MQC ポリシー経由でしきい値を変更することができます。しきい値の別名は、ウェイテッド・テール・ドロップ (WTD) で、しきい値は重み付けと同じ意味になります。
以下は WTD を変更するための MQC ポリシーのサンプルです。
policy-map 2P6Q3T
class DATA-QUEUE
queue-limit dscp values af13 cs1 percent 80
queue-limit dscp values af12 percent 90
queue-limit dscp values af11 percent 100
ASIC で設定されたしきい値を見るためには、以下のコマンドを使用します。
キューとしきい値に割り当てられたトラフィック タイプが何なのか見るために、トラフィック タイプをラベルにマッピングし、2 つめのコマンドを使用して、ラベルが適用されているキューを確認する必要があります。この場合は、共有機能を向上させるために、ラベルが使用されます。
Switch# show platform software fed [switch] [active] qos tablemap dir ingress interface <name>
Label legend: DSCP:1 COS:65 UP:73 PREC:81 EXP:89 GROUP:97 CTRL:128 CPU:130
DSCP-to-Label --
0-Label: 1 1-Label: 2 2-Label: 3 3-Label: 4
4-Label: 5 5-Label: 6 6-Label: 7 7-Label: 8
….
COS-to-Label --
0-Label:65 1-Label:66 2-Label:67 3-Label:68
4-Label:69 5-Label:70 6-Label:71 7-Label:72
UP-to-Label --
0-Label:73 1-Label:74 2-Label:75 3-Label:76
4-Label:77 5-Label:78 6-Label:79 7-Label:80
PREC-to-Label --
0-Label:81 1-Label:82 2-Label:83 3-Label:84
4-Label:85 5-Label:86 6-Label:87 7-Label:88
EXP-to-Label --
0-Label:89 1-Label:90 2-Label:91 3-Label:92
4-Label:93 5-Label:94 6-Label:95 7-Label:96
GROUP-to-Label --
0-Label: 0 1-Label: 0 2-Label: 0 3-Label: 0
4-Label: 0 5-Label: 0 6-Label: 0 7-Label: 0
…..
ステップ 2. ラベルの値がキューかしきい値に該当させるために、次のコマンドを使用します。
- ウェイテッド・ランダム・アーリー・ディスカード (WRED)
WRED はキューがいっぱいになるために、帯域を超過したポートのキューで、ランダムにフレームを廃棄するためのアルゴリズムです。WRED はランダム・アーリー・ディスカード (RED) アルゴリズムがベースになっています。
RED と WRED を見る前に、TCP フロー管理を簡単に振り返ってみましょう。フロー管理は、TCP 送信側がネットワークを埋め尽くさないようにします。"TCP スロー スタート" アルゴリズム (RFC2001 で定義) はこれに対処するための解決策の一部です。それはフローを開始する時に指示し、1 つのパケットが送信されると、次に確認応答 (ACK) を待ちます。ACK が受信されると、TCP エンドポイントは 2 つのパケットを送信し、さらにデータを送る前に、次の ACK を待ちます。パケットの数を段々と増加させて送信します。これはフローが送信レベル (パケットを x 個送信) に達するまで継続し、ネットワークに混雑を伴う負荷を発生させないように、管理します。混雑が発生した場合、スロースタート アルゴリズムは、ウィンドウ サイズ (ACK を待つ前に送信したパケットの数) を抑制します。これによりネットワークがそれらをドロップせずに処理できる数に、送信が正規化されます。
RED はキューが一杯になり始めるか監視します。しきい値を超過すると、パケットはランダムにドロップさせられます。これらのパケットは高優先 or 低優先フローから選択され、単一のフロー or 複数の TCP フローからなる場合もあります。もし複数のフローに影響があると、上記で説明したように、それぞれのフローのウィンドウ サイズで考慮すべき影響が出てしまいます。
RED とは異なり、WRED ではパケットをドロップする時に完全なランダムではありません。WRED はパケットの優先度 (CoS , DSCP , トラフィック クラス , IP プレシデンス値) を考慮して、ドロップするパケットを選択します。この処理は高優先度のフローは影響を受けず、大きなウィンドウ サイズを保持でき、送信側から受信側へパケットを送る際、遅延を最小化に抑えることができます。
WRED の実装は、UADP 2.0 かそれ以降 (AQM ブロック内) で、アプラクサミトゥ・フェア・ドロップ (AFD) アルゴリズムとキューの使用率がベースになっています。AFD はパケットのドロップ確率を、低しきい値と高しきい値の平均をとして計算するために使用されます。WRED しきい値は、WTD しきい値とは異なるものです。
17.3(1) から MPLS EXP ベースとした WRED もサポートされます。パケットがキューに来た時、WRED は最初に計算されます。WRED に基づいて、キューが帯域幅を超過した場合、パケットは最初の WRED 計算でドロップされ、次にテールドロップでドロップされます。
画像 31. に AFD で計算された WRED の例を示します。この計算は低しきい値の CoS 0 , 1 と、高しきい値の CoS 2 ,3 の平均をベースにしています。
AFD はドロップの確率を以下のように計算します :
- CoS 0 ,1 が低優先度 = 20 と 高 = 30 の場合パケットの重み付けは以下 : (20 + 30) / 2 = 重み付け 25 or CoS 2 , 3 より前にパケットをドロップさせはじめる ドロップの確率は、(1 / weight) = 1 / 25 = 0.04
- CoS 2 ,3 が低優先度 = 60 と 高 = 80 の場合パケットの重み付けは以下 : (60 + 80) / 2 = 重み付け 70 or CoS 0 , 1 より後にパケットをドロップさせはじめる ドロップの確率は、(1 / weight) = 1 / 70 = 0.01428
CoS 0 , 1 のドロップ確率は、ドロップが早く開始され、キューをいっぱいになるとさらに増加するため、確率も常に高くなります。
それぞれのポート キューは WRED クラシフィケーションの 1 つのタイプのみを使用できます。例えば、もし DSCP 値を使用すると、同じポート キューでは CoS は使用できません。しかし同じポートの別のキューでは、DSCP ではなく CoS を使用できます。
policy-map 2P6Q3T
class DATA-QUEUE
random-detect dscp-based
random-detect dscp 10 percent 60 80
class BULK-QUEUE
random-detect cos-based
random-detect cos 1 percent 60 80
Cisco Catalyst 9000 ファミリ スイッチは、以下の WRED をサポートします :
- UADP 2.0 と 2.0 XL ASIC は 8 個のポートキューから、4 個の WRED キューまで有効にできます
- UADP 3.0 ASIC) は 8 個のポートキューまで 、WRED をサポートします
UADP ASIC バージョンに関係なく、以下をサポートします :
- ポート キューは WRED を使用しないと WTD を使用します
- WRED は優先キューでサポートされません
- クラスマップごとに 3 つの WRED レンジまでサポートされ、1 つのレンジはパケット クラシファイアーのレンジによって使用することが可能です
class <queuing-class-map>
random-detect cos 1 percent 10 20 (range1)
random-detect cos 2 percent 30 40 (range2)
random-detect cos 3 percent 50 60 (range3)
まとめ : キューイング、バッファリング、しきい値の出力 QoS ツールは、ビジネス クリティカルなトラフィックの管理と優先付けを助けることが可能です。しかし出力ポートでドロップの削減を助けるために、いくつかのテクニックが存在します :
- UADP ASIC コア間でバースト要件に従って、アクティブ ポートを分散し、コアの物理バッファスペースを共有するポートが少なくなるようにします。
- 分散のサンプル 1 : コア 1 に 1 つのポートのみとします このモデルは 1 つのポートがすべての UADP ASIC コアのバッファを消費する必要がある場合に使用され、残りのポートで高レベルのマイクロ バーストが発生しない場合に使用できます
- 分散のサンプル 2 : すべてのアクティブポートは、すべての ASIC コアを横断して等しく分散させます このモデルは、すべてのアクティブ ポートが似たレベルのマイクロバーストがある場合に使用されます ; このため PBC リソースの使用率を、異なる UADP ASIC コアを横断して、等しく分散できます
均等なポート分散
以下のようにコマンドでマッピングを確認でき、フロント パネル ポートをインスタンスにマッピングできます
- "qos queue-softmax-multiplier <100-1200>" コマンドを使用します このコマンドは、DTS セクションで説明したものです マイクロ バーストを吸収するために、PBC の能力を増加させるには、1200 に近い値を使用します
- ポートごとのキューの数を削減します 例えば 8 つではなく、3 つののキューを使用します すべてのキューが共有プールから専用のバッファを持ちますが、ことはグローバル プールの全体サイズを減らしてしまいます いくつかのキューは共有プールが大きなサイズを持ちます
出力シェーピング
シェーピングは出力 QoS ツールで、ポート キューのパケット送信を制限するために使用できます。シェーピング機能はポリシングとは異なり、パケットをドロップする前に空いたバッファ スペースを使用しようと試みます。しかしポリシングはパケットをすぐにドロップします。バッファされたパケットは、ポートが次の送信サイクルが来ると送信されるでしょう。画像 34. にシェーピングとポリシングの違いを示します。
17.3(1) から出力キューイングで MPLS EXP も他と同様にサポートされました。
シェーピングとポリシング
シェーピングは、一定量のトラフィックがバッファされ、バーストがなくなったときポートから送信されます。
バッファリングは送信を遅らせるため、パケットに遅延を加えることになります。
UADP ASIC はすべてのポートキューについて、シェーパーを提供します。以下はシェーピングを設定するためのサンプル MQC シェーピングです :
policy-map Shaper
class Voice
shape average percent 10
class Video
shape average percent 20
class Signaling
shape average percent 5
class Transactions
shape average percent 30
まとめ : シェーピングは主にキューの優先度をコントロールするために使用されます。それは WRR キューでいくらかのスペースを残すため、優先キューの合計帯域幅を制限します。
出力クラシフィケーション、ポリシング、マーキング
画像 35. に 2 つの注釈の例を示します。1 つめは入力側で、2 つめは出力側です。オリジナル パケットの代わりに、入力結果を出力側で使用します :
- IFC は入力パケットの DSCP を 10 から 30 にリマークします
- しかし EFC は出力ポート 2 で MQC ポリシーを使用し、DSCP 30 から 40 へリマークを指示し、出力ポート 1 は IFC の結果を保持します
2 ステージ リマーキング
以下は 2 ステージ リマーキングを設定するための MQC ポリシーの例です :
まとめ : 出力クラシフィケーション、ポリシング、マーキングは、QoS に関する UADP ASIC の機能を更に拡張します。それらは複数の送信元ポートから、パケットを取り出すためのオプションを提供し、1 つの出力 MQC ポリシーのみを適用する選択肢を提供します。さらに 2 ステージ リマーキング or ポリシングのオプションも提供します。
階層型 QoS
階層型 QoS (HQoS) は、2 つの MQC ポリシーに親と子として 2 つのレベルに積み重ねられる出力ツールで、ポリシーの粒度を高めることができます。親ポリシーは上位側のレベルで、子は下位側のレベルです。管理者は QoS を以下のように使用できます。 :
- 親クラスは子ポリシーで、複数キューをシェープできるようにします
- 特定のポリシー マップのアクションを、集約トラフィックに適用します
- クラス固有のポリシー マップ アクションを、適用する
Cisco Catalyst 9000 ファミリ スイッチの重要な優位点の一つは、ハードウェアで HQoS をサポートすることです。
以下 4 つの組み合わせを HQoS でサポートします。:
- ポート シェーパー
- 集約ポリサー
- ポートごと、VLAN ごとのポリシー
- 親ポリシーがシェーパーを使用
ポート シェーパー
HQoS ポート シェーパーは、class-default を使用してすべての出力トラフィックにシェーパーを適用します。このシェープされた帯域幅は、追加した子ポリシーで特定が可能です。
以下の例は、HQoS ポート シェーパー設定のデモです。
policy-map PARENT
class class-default
shape average percent 10
service-policy CHILD
policy-map CHILD
class VOICE
priority level 1
police rate percent 20
class C1
bandwidth remaining percent 10
class C2
bandwidth remaining percent 20
class C3
bandwidth remaining percent 70
HQoS ポート シェーパー ポリシーの注意点 :
- 親ポリシーで class-default クラスのみ、使用されます
- 子ポリシーで 1 つ or 2 つの優先キューのみ、許可されます
- 子ポリシーのクラスごとに、異なる帯域幅が許可されます
集約ポリサー
HQoS 集約ポリサーは、class-default を使用してすべての出力トラフィックにポリサーを適用します。この減少された帯域幅は、追加した子ポリシーで特定が可能です。
以下の例は、HQoS 集約ポリサー設定のデモです。
policy-map PARENT
class class-default
police cir percent 30
service-policy CHILD
policy-map CHILD
class C1
set dscp 10
class C2
set dscp 20
class C3
set dscp 30
HQoS 集約ポリサーと シェーパー ポリシーの注意点 :
- テーブル マップは、子ポリシーで set action として使用可能です
ポートごと、VLAN ごとのポリシー
ポートごと、VLAN ごとのポリシーは、複数の HQoS 親ポリサーに適用され、それぞれのポリサーはクラシファイアとして VLAN にマッチします。それぞれの VLAN で個別のポリサーで帯域幅を削減され、追加子ポリシーが適用されます。
以下の例は、HQoS ポートごと、VLAN ごとのポリサー設定のデモです。
policy-map PARENT
class vlan10
police rate percent 10
service-policy CHILD
class vlan20
police rate percent 20
service-policy CHILD
class vlan30
police rate percent 30
service-policy CHILD
policy-map CHILD
class C1
set dscp 10
HQoS ポートごと、VLAN ごとのポリサーの注意点 :
- テーブル マップは、子ポリシーで set action として使用可能です
- 複数のクラスは親ポリシーで許可されます
親ポリシーのシェーパー使用
複数 HQoS シェーパーは親ポリシーに適用され、それぞれのシェーパーはトラフィック クラスにマッチします。それぞれ個別にシェーピングで帯域幅を削減され、追加子ポリシーが適用されます。
以下の例は、HQoS 親ポリシー シェーピング設定のデモです。
policy-map PARENT
class C1
shape average percent 10
service-policy CHILD
class C3
shape average percent 20
service-policy CHILD
class class-default
shape average percent 30
service-policy CHILD
policy-map CHILD
class C1
police rate percent 10
set dscp 10
class C2
police rate percent 20
set dscp 20
class C3
police rate percent 30
set dscp 30
HQoS 親ポリシー シェーパーの注意点 :
- テーブル マップは、子ポリシーで set action として使用可能です
ポリシーマップ カウンター
入力と出力 QoS ツールは、UADP ASIC で処理されるパケットの可視化に統計情報を提供します。
ポリシーマップはアクションで使用されるものをベースに、異なるカウンターをサポートします。 :
- もしマーキングかポリシングを使用していると、ポリシーマップはいくつのパケット or バイトが、クラスマップにマップされたか or ポリサーによって破棄されたか表示します
- もしキューイング アクションがインターフェースで設定されていると、ポリシーマップはキューに入った・ドロップされたパケットの数 or バイト数のカウンターをサポートします
- もし同じポリシーが 2 つ or より多くのポートあいだで共有されていると、カウンターはポリシーを共有するすべてのポートあいだで集約されません
- QoS ポリシー マップ カウンターは、以下の手法で取得てきます :
- YANG モデルの運用と設定
- SNMP MIB : CiscoCBQoSMIB
The following outputs provide sample counters based on different tools:
Note: The CLI outputs were collected with software release 16.9(2).
● Marking and policer policy counters (applicable for ingress and egress):
Notes:
◦ If a policy with the same name is shared on multiple ports, the policy map counters will be aggregated, as the TCAM entries are shared between the ports. As result, an interface without traffic might see increments, but the TCAM usage will be reduced, as the entries are shared.
◦ If policy-map counters are needed per port, create policy maps with different names and the TCAM entries will not be shared.