QoSの概要
ネットワークは通常、ベストエフォート型の配信方式で動作します。この場合、すべてのトラフィックはプライオリティおよび適切なタイミングで配信される可能性に関して同等です。輻輳が発生した場合に廃棄される可能性も、すべてのトラフィックで同等です。
QoS機能を設定すると、特定のネットワーク トラフィックを選択し、相対的な重要性に応じてプライオリティを指定し、輻輳管理および輻輳回避技術を使用して、優先処理を行うことができます。ネットワークにQoSを実装すると、ネットワークのパフォーマンスが予想しやすくなり、帯域利用率がより効果的になります。
QoSは新たに普及しつつあるInternet Engineering Task Force(IETF)の規格であるDifferentiated Services(DiffServ)アーキテクチャに基づいて実装されています。DiffServアーキテクチャでは、ネットワークの入り口で各パケットが分類されます。
この分類はIPパケット ヘッダーに格納され、現在ほとんど使用されていないIP Type of Service(ToS;サービス タイプ)フィールドの6ビットを使用して、分類(
クラス
)情報が伝達されます。また、レイヤ2フレームでも分類を実行できます。次に、レイヤ2フレームまたはレイヤ3パケット内のこれらの特殊ビットについて説明します(図 29-1を参照)。
•
レイヤ2フレームのプライオリティ ビット
レイヤ2のISL(スイッチ間リンク)フレーム ヘッダーには、下位3ビットでIEEE 802.1p Class of Service(CoS;サービス クラス)値を伝達する、1バイトのユーザ フィールドがあります。レイヤ2のISLトランクとして設定されたポートでは、すべてのトラフィックがISLフレームに収められます。
レイヤ2の802.1Qフレーム ヘッダーには、上位3ビット(別名ユーザ プライオリティ ビット)でCoS値を伝達する、2バイトのタグ制御情報フィールドがあります。レイヤ2の802.1Qトランクとして設定されたポートでは、ネイティブVLANのトラフィックを除き、すべてのトラフィックが802.1Qフレームに収められます。
その他のフレーム タイプでは、レイヤ2のCoS値を伝達できません。
レイヤ2 CoS値の範囲は0(ロー プライオリティ)~7(ハイ プライオリティ)です。
•
レイヤ3パケットのプライオリティ ビット
レイヤ3 IPパケットは、IP precedence値またはDifferentiated Services Code Point(DSCP)値のいずれかを伝達します。DSCP値はIP precedence値と下位互換性があるので、QoSではどちらの値も使用できます。
IP precedence値の範囲は0~7です。
DSCP値の範囲は0~63です。
図 29-1 フレームおよびパケットのQoS分類レイヤ
(注) レイヤ3 IPv6パケットは非IPパケットとして処理され、スイッチによってブリッジングされます。
インターネットにアクセスするすべてのスイッチおよびルータはクラス情報を信頼し、クラス情報ごとに異なる転送処理を行います。エンド ホストやパス上のスイッチまたはルータでは、設定されたポリシーやパケットの調査結果、あるいはその両方に基づいて、パケットにクラス情報を割り当てることができます。通常は、主要なスイッチやルータが過負荷にならないように、ネットワークのエッジ付近でパケットが詳細に調査されます。
パス上のスイッチおよびルータでは、クラス情報に基づいて、トラフィック クラスごとに割り当てられるリソース量を制限することができます。DiffServアーキテクチャでトラフィックを処理するときの各デバイスの動作は、ホップ単位動作と呼ばれます。パス上にあるすべてのデバイスのホップ単位動作が一貫している場合は、エンドツーエンドのQoSソリューションを構築できます。
ネットワークにQoSを実装する作業は、インターネットワーキング デバイス、ネットワーク内のトラフィック タイプとパターン、および着信/発信トラフィックに必要な制御の細かさによって、難易度が変化します。
基本的なQoSモデル
QoSを実装するには、スイッチ上でパケットまたはフローを相互に区別(分類)し、パケットがスイッチを通過するときに所定のQoSを示すラベルを割り当て、設定されたリソース使用率制限にパケットを適合させ(ポリシングおよびマーキング)、リソース競合の発生状況に応じて異なる処理(キューイングおよびスケジューリング)を行う必要があります。また、スイッチから送信されたトラフィックが特定のトラフィック プロファイルを満たすようにする必要もあります(シェーピング)。
図 29-2に、基本的なQoSモデルを示します。入力ポートでのアクションには、トラフィックの分類、ポリシング、マーキング、キューイング、およびスケジューリングがあります。
•
分類は、QoSラベルを対応付けて、パケットごとに異なるパスを生成するプロセスです。スイッチはパケット内のCoSまたはDSCPをQoSラベルにマッピングして、別のスイッチからのある種類のトラフィックと区別します。生成されたQoSラベルは、このパケットでこれ以降に実行されるすべてのQoSアクションを識別します。詳細については、「分類」を参照してください。
•
ポリシングでは、着信トラフィックのレートを設定済みポリサーと比較して、パケットが適合か不適合かを決定します。ポリサーは、トラフィック フローで消費される帯域幅を制限します。この結果はマーカーに渡されます。詳細については、「ポリシングおよびマーキング」を参照してください。
•
マーキングでは、ポリサーおよびパケットが不適合である場合の対処法に関する設定情報を評価します。また、パケットに関する処理内容(変更しないでパケットを通過させるか、パケットのQoSラベルをマークダウンするか、またはパケットを廃棄するか)を決定します。詳細については、「ポリシングおよびマーキング」を参照してください。
•
キューイングでは、QoSラベルおよび対応するDSCPまたはCoS値を評価して、パケットを2つの入力キューのいずれに格納するかを選択します。キューイングは、輻輳回避メカニズムであるWeighted Tail-Drop(WTD)アルゴリズムによって拡張されます。スレッシュホールドを超過している場合、パケットは廃棄されます。詳細については、「キューイングおよびスケジューリングの概要」を参照してください。
•
スケジューリングでは、設定されているShaped Round Robin(SRR)のウェイトに基づいて、キューを処理します。入力キューの1つがプライオリティ キューです。SRRは設定された割合に従いプライオリティ キューを処理してから他のキューを処理します。詳細については、「SRRのシェーピングおよび共有」を参照してください。
出力ポートのアクションには、キューイングおよびスケジューリングがあります。
•
キューイングでは、QoSラベルおよび対応するDSCPまたはCoS値を評価して、パケットを4つの出力キューのいずれに格納するかを選択します。複数の入力ポートが1つの出力ポートに同時にデータを送信すると輻輳が発生することがあるため、WTDを使用してトラフィック クラスを区別し、QoSラベルに基づいてパケットごとに異なるスレッシュホールドを適用します。スレッシュホールドを超過している場合、パケットは廃棄されます。詳細については、「キューイングおよびスケジューリングの概要」を参照してください。
•
スケジューリングでは、設定されているSRRの共有ウェイトまたはシェーピング ウェイトに基づいて、4つの出力キューが処理されます。キューのうち1つは(キュー1)、緊急キューとすることができます。このキューを空になるまで処理してから、他のキューを処理します。
図 29-2 基本的なQoSモデル
分類
分類はパケットのフィールドを調べて、トラフィックの種類を区別するプロセスです。QoSがスイッチ上でグローバルでイネーブルになっている場合のみ、分類はイネーブルとなります。デフォルトでは、QoSはグローバルでディセーブルになっているため、分類は実行されません。
(注) 分類は物理ポート単位でのみ行われます。VLANまたはスイッチ仮想インターフェイス レベルでのパケット分類はサポートされていません。
分類中に、スイッチは検索処理を実行し、パケットにQoSラベルを割り当てます。QoSラベルはパケットに対して実行するすべてのQoSアクション、およびパケットの送信元キューを識別します。
QoSラベルはパケット内のDSCPまたはCoS値に基づいて、パケットに実行されるキューイングおよびスケジューリング アクションを決定します。QoSラベルは信頼設定およびパケット タイプに従ってマッピングされます(分類フローチャートを参照)。
着信トラフィックを分類するには、フレームまたはパケット内のどのフィールドを使用するかを指定します。非IPトラフィックの場合は、次の方法で分類できます(図 29-3を参照)。
•
着信フレーム内のCoS値を信頼します(CoSを信頼するようにポートを設定します)。次に、設定可能なCoS/DSCPマップを使用して、パケットのDSCP値を生成します。レイヤ2のISLフレーム ヘッダーの場合、CoS値は1バイトのユーザ フィールドの下位3ビットに格納されて伝達されます。レイヤ2の802.1Qフレーム ヘッダーの場合、CoS値はタグ制御情報フィールドの上位3ビットに格納されて伝達されます。CoS値の範囲は0(ロー プライオリティ)~7(ハイ プライオリティ)です。
•
着信フレームのDSCPまたはIP precedence値を信頼します。これらの設定は、非IPトラフィックの場合は無意味です。これらのいずれかの方法で設定されているポートに非IPトラフィックが着信した場合は、CoS値が割り当てられ、CoS/DSCPマップからDSCP値が生成されます。
•
設定されたレイヤ2のMAC(メディア アクセス制御)Access Control List(ACL;アクセス制御リスト)に基づいて分類します。レイヤ2のMAC ACLでは、MAC送信元アドレス、MAC宛先アドレス、およびその他のフィールドを調べることができます。ACLが設定されていない場合、パケットにはDSCPおよびCoS値として0が割り当てられます。この割り当ては、トラフィックがベストエフォート型であることを意味します。ACLが設定されている場合は、ポリシーマップ アクションによって、着信フレームに割り当てられるDSCPまたはCoS値が指定されます。
IPトラフィックの場合は、次の方法で分類できます(図 29-3を参照)。
•
着信パケットのDSCP値を信頼し(DSCPを信頼するようにポートを設定し)、パケットに同じDSCP値を割り当てます。IETFでは、1バイトのToSフィールドの上位6ビットがDSCPとして定義されています。特定のDSCP値で表されるプライオリティは設定可能です。DSCP値の範囲は0~63です。
2つのQoS管理ドメインの境界上にあるポートの場合は、設定可能なDSCP/DSCP変換マップを使用し、DSCPを別の値に変更することができます。
•
着信パケットのIP precedence値を信頼し(IP precedenceを信頼するようにポートを設定し)、設定可能なIP precedence/DSCPマップを使用してパケットのDSCP値を生成します。IPバージョン4仕様では、1バイトのToSフィールドの上位3ビットがIP precedenceとして定義されています。IP precedence値の範囲は0(ロー プライオリティ)~7(ハイ プライオリティ)です。
•
着信パケットにCoS値がある場合にはこれを信頼し、CoS/DSCPマップを使用してパケットのDSCP値を生成します。CoS値が存在しない場合は、デフォルトのポートCoS値を使用します。
•
設定されたIP標準、またはIPヘッダーの各フィールドを調べる拡張ACLに基づいて、分類を実行します。ACLが設定されていない場合、パケットにはDSCPおよびCoS値として0が割り当てられます。この割り当ては、トラフィックがベストエフォート型であることを意味します。ACLが設定されている場合は、ポリシーマップ アクションによって、着信フレームに割り当てられるDSCPまたはCoS値が指定されます。
ここで説明されているマップの詳細については、「マッピング テーブル」を参照してください。ポートの信頼状態に関する設定の詳細については、「ポートの信頼状態による分類の設定」を参照してください。
分類されたパケットは、ポリシング、マーキング、および入力キューイングとスケジューリングの各段階に送られます。
図 29-3 分類フローチャート
QoS ACLに基づく分類
IP標準、IP拡張、およびレイヤ2 MAC ACLを使用すると、同じ特性(クラス)を持つパケットのグループを定義できます。QoSコンテキストでは、Access Control Entry(ACE;アクセス制御エントリ)とセキュリティACLで、許可(permit)および拒否(deny)アクションの意味が異なります。
•
許可アクションと一致した場合は(原則的には最初の一致)、指定されたQoS関連のアクションが実行されます。
•
拒否アクションと一致した場合は、処理中のACLが省略され、次のACLが処理されます。
•
すべてのACEを調べても許可アクションとの一致が見つからなかった場合は、パケットに関するQoS処理が行われず、ベストエフォート型サービスがパケットに対して行われます。
•
ポートに複数のACLが設定されている場合、許可アクションを含む最初のACLとパケットの一致が見つかるとそれ以降の検索処理は中止され、QoS処理が開始されます。
(注) アクセス リストを作成するときは、アクセス リストの末尾に暗黙的な拒否ステートメントがデフォルトで存在し、それ以前のステートメントで一致が見つからなかったすべてのパケットに適用されることに注意してください。
ACLを使用して定義されたトラフィック クラスには、ポリシーを付加できます。ポリシーにはアクションがそれぞれ指定された複数のクラスを含めることができます。ポリシーには、クラスを特定のグループとして分類する(たとえばDSCPを割り当てる)コマンドや、クラスの速度制限を行うコマンドが含まれます。このポリシーは、ポリシーが有効となる特定のポートに付加されます。
IPトラフィックを分類するIP ACLを実装するには、
access-list
グローバル コンフィギュレーション コマンドを使用します。非IPトラフィックを分類するレイヤ2 MAC ACLを実装するには、
mac access-list extended
グローバル コンフィギュレーション コマンドを使用します。設定の詳細については、「QoSポリシーの設定」を参照してください。
クラス マップおよびポリシー マップに基づく分類
クラス マップは、特定のトラフィック フロー(またはクラス)に名前を付けて、他のすべてのトラフィックと区別するためのメカニズムです。クラス マップでは、特定のトラフィック フローとの比較を行い、さらにそれを分類するために使用する条件を定義します。この条件には、ACLで定義されたアクセス グループとの比較、またはDSCP値やIP precedence値の特定のリストとの比較を含めることができます。複数のタイプのトラフィックを分類する場合は、別のクラス マップを作成し、異なる名前を付けることができます。クラス マップの基準と一致したパケットは、ポリシー マップを使用してさらに分類できます。
ポリシー マップは処理対象のトラフィック クラスを指定します。トラフィック クラスのCoS、DSCP、またはIP precedence値を信頼するアクション、トラフィック クラスに特定のDSCPまたはIP precedence値を設定するアクション、またはトラフィック帯域幅の制限およびトラフィックが不適合な場合の対処方法を指定するアクションなどを指定できます。ポリシー マップを有効にする前に、ポリシー マップをポートに付加する必要があります。
クラス マップを作成するには、
class-map
グローバル コンフィギュレーション コマンドまたは
class
ポリシー マップ コンフィギュレーション コマンドを使用します。複数のポートでマップを共有する場合には、
class-map
コマンドを使用する必要があります。
class-map
コマンドを入力すると、クラス マップ コンフィギュレーション モードが開始されます。このモードでは
match
クラス マップ コンフィギュレーション コマンドを使用し、トラフィックの一致条件を定義します。
ポリシー マップを作成して名前を付けるには、
policy-map
グローバル コンフィギュレーション コマンドを使用します。このコマンドを入力すると、ポリシー マップ コンフィギュレーション モードが開始されます。このモードでは、
class
、
trust
、または
set
ポリシー マップ コンフィギュレーション コマンドおよびポリシー マップ クラス コンフィギュレーション コマンドを使用して、特定のトラフィック クラスに対して行うアクションを指定します。
ポリシー マップには、ポリサー、トラフィックの帯域幅制限、および制限を超えた場合のアクションを定義する
police
および
police aggregate
ポリシー マップ クラス コンフィギュレーション コマンドを含めることもできます。
ポリシー マップを有効にするには、
service-policy
インターフェイス コンフィギュレーション コマンドを使用し、ポリシー マップをポートに付加します。
詳細については、「ポリシングおよびマーキング」を参照してください。設定の詳細については、「QoSポリシーの設定」を参照してください。
ポリシングおよびマーキング
パケットを分類し、DSCPまたはCoSに基づいてQoSラベルを割り当てたあとで、ポリシングおよびマーキング プロセスを開始できます(図 29-4を参照)。
ポリシングでは、トラフィックの帯域幅制限を指定するポリサーが作成されます。制限を超えるパケットは、「
不適合
」になります。各ポリサーはパケットごとに、パケットが適合であるかまたは不適合であるかを判別し、パケットに対するアクションを決定します。これらのアクションはマーカーによって実行されます。パケットを変更しないで通過させるアクション、パケットを廃棄するアクション、またはパケットに割り当てられたDSCP値を変更(マークダウン)してパケットの通過を許可するアクションなどがあります。設定可能なポリシング設定DSCPマップを使用すると、パケットに新しいDSCPベースQoSラベルが設定されます。ポリシング設定DSCPマップの詳細については、「マッピング テーブル」を参照してください。マークダウンされたパケットは、元のQoSラベルと同じキューを使用して、フロー内のパケットの順番が崩れないようにします。
(注) すべてのトラフィックは、ブリッジングされるかまたはルーティングされるかに関係なく、ポリサーの影響を受けます(ポリサーが設定されている場合)。その結果、ブリッジングされたパケットは、ポリシングまたはマーキングが行われたときに廃棄されたり、DSCPまたはCoSフィールドが変更されることがあります。
次のタイプのポリサーを作成することができます。
•
個別
一致する各トラフィック クラスに、ポリサー内で指定された帯域幅制限が個別に適用されます。ポリシー マップ内でこのタイプのポリサーを設定するには、
police
ポリシー マップ クラス コンフィギュレーション コマンドを使用します。
•
集約
一致するすべてのトラフィック フローに、集約ポリサーで指定される帯域幅制限が累積的に適用されます。このタイプのポリサーを設定するには、
police aggregate
ポリシー マップ クラス コンフィギュレーション コマンドを使用し、ポリシー マップ内の集約ポリサー名を指定します。ポリサーの帯域幅制限を指定するには、
mls qos aggregate-policer
グローバル コンフィギュレーション コマンドを使用します。この方法で、集約ポリサーはポリシー マップ内にあるトラフィックの複数のクラスで共有されます。
ポリシングは、トークン バケット アルゴリズムを使用します。各フレームがスイッチに受信されると、バケットにトークンが追加されます。バケットは内部にホールがあり、平均トラフィック レートとしてビット/秒で指定されたレートで通過します。バケットにトークンが追加されるたびに、スイッチはバケット内に十分なスペースがあるかどうかを確認します。十分なスペースがない場合は、不適合とマークされ、指定されたポリサーの対処方法がとられます(廃棄またはマークダウン)。
バケットが満たされる速度は、バケット深度(burst-byte)、トークンが削除される速度(rate-bps)、および平均速度を上回るバースト期間の関数です。バケットのサイズにより、バースト長に上限が設定され、バックツーバックで送信できるフレーム数が制限されます。バーストが短い場合、バケットはオーバーフローせず、トラフィック フローに対して何のアクションも行われません。ただし、バーストが長く速度が速い場合、バケットはオーバーフローし、そのバーストのフレームに対してポリシング アクションが行われます。
バケット深度(バケットがオーバーフローするまでに許容された最大バースト)は、
police
ポリシー マップ クラス コンフィギュレーション コマンドまたは
mls qos aggregate-policer
グローバル コンフィギュレーション コマンドの
burst-byte
オプションを使用して設定します。トークンがバケットから削除される速度(平均速度)は、
police
ポリシー マップ コンフィギュレーション コマンドまたは
mls qos aggregate-policer
グローバル コンフィギュレーション コマンドの
rate-bps
オプションを使用して設定します。
ポリシー マップおよびポリシング アクションを設定したあとで、
service-policy
インターフェイス コンフィギュレーション コマンドを使用して、入力ポートにポリシーを付加します。設定の詳細については、「ポリシー マップによるトラフィックの分類、ポリシング、およびマーキング」、および「集約ポリサーによるトラフィックの分類、ポリシング、およびマーキング」を参照してください。
図 29-4 ポリシングおよびマーキングのフローチャート
マッピング テーブル
QoSを処理している間、すべてのトラフィック(非IPトラフィックを含む)のプライオリティは、分類段階で取得されたDSCPまたはCoS値に基づくQoSラベルで表されます。
•
分類中に、QoSは設定可能なマッピング テーブルを使用して、受信されたCoS、DSCP、またはIP precedence値から、対応するDSCPまたはCoS値を取得します。これらのマップには、CoS/DSCPマップやIP precedence/DSCPマップなどがあります。これらのマップを設定するには、
mls qos map cos-dscp
および
mls qos map ip-prec-dscp
グローバル コンフィギュレーション コマンドを使用します。
DSCP信頼状態で設定された入力ポートのDSCP値がQoSドメイン間で異なる場合は、2つのQoSドメインの境界上にあるポートに、設定可能なDSCP/DSCP変換マップを適用できます。このマップを設定するには、
mls qos map dscp-mutation
グローバル コンフィギュレーション コマンドを使用します。
•
ポリシング中に、QoSはIPパケットまたは非IPパケットに別のDSCP値を割り当てることができます(パケットが不適合で、マークダウン値がポリサーによって指定されている場合)。この設定可能なマップをポリシング設定DSCPマップと呼びます。このマップを設定するには、
mls qos map policed-dscp
グローバル コンフィギュレーション コマンドを使用します。
•
トラフィックがスケジューリング段階に到達する前に、QoSはQoSラベルに従って、入力および出力キューにパケットを格納します。QoSラベルはパケット内のDSCPまたはCoS値に基づいています。DSCP入力/出力キュー スレッシュホールド マップまたはCoS入力/出力キュー スレッシュホールド マップを使用して、キューを選択します。これらのマップを設定するには、
mls qos srr-queue
{
input
|
output
}
dscp-map
および
mls qos srr-queue
{
input
|
output
}
cos-map
グローバル コンフィギュレーション コマンドを使用します。
CoS/DSCP、DSCP/CoS、およびIP precedence/DSCPマップのデフォルト値は、使用しているネットワークに適する場合と適さない場合があります。
デフォルトのDSCP/DSCP変換マップおよびデフォルトのポリシング設定DSCPマップは、空のマップです。これらのマップでは、着信したDSCP値が同じDSCP値にマッピングされます。
DSCP/DSCP変換マップは、特定のポートに適用できる唯一のマップです。その他のすべてのマップはスイッチ全体に適用されます。
設定の詳細については、「DSCPマップの設定」を参照してください。
DSCPおよびCoS入力キュー スレッシュホールド マップの詳細については、「入力キューでのキューイングおよびスケジューリング」を参照してください。DSCPおよびCoS出力キュー スレッシュホールド マップの詳細については、「出力キューでのキューイングおよびスケジューリング」を参照してください。
キューイングおよびスケジューリングの概要
スイッチでは、輻輳防止に役立つように、特定の位置に各キューが配置されています(図 29-5を参照)。
図 29-5 入力および出力キューの位置
すべてのポートの入力帯域幅の合計がスタック リングの帯域幅を超えることがあるため、入力キューはパケットの分類、ポリシング、およびマーキングのあと、パケットがスイッチ ファブリックに転送される前の位置に配置されています。複数の入力ポートから1つの出力ポートに同時にパケットが送信されて、輻輳が発生することがあるため、出力キューはスタック リングのあとに配置されています。
WTD
入力および出力キューは両方とも、Weighted Tail Drop(WTD)と呼ばれるテール廃棄輻輳回避メカニズムの拡張バージョンを使用します。WTDはキュー長を管理したり、トラフィック分類ごとに廃棄優先順位を設定するために実装されます。
フレームが特定のキューにキューイングされると、WTDはフレームに割り当てられたQoSラベルを使用して、それぞれ異なるスレッシュホールドを適用します。このQoSラベルのスレッシュホールドを超えた場合(
宛先キューの空きスペースがフレーム サイズより小さくなると)
、フレームは廃棄されます。
図 29-6に、サイズが1000フレームであるキューにおけるWTDの動作例を示します。40%(400フレーム)、60%(600フレーム)、および100%(1000フレーム)の3つの廃棄率が設定されています。これらの廃棄率は、40%スレッシュホールドの場合は最大400フレーム、60%スレッシュホールドの場合は最大600フレーム、100%スレッシュホールドの場合は最大1000フレームをキューイングできるという意味です。
この例では、CoS値6および7は他のCoS値よりも重要度が高く、100%廃棄スレッシュホールドに割り当てられます(キューフル ステート)。CoS値4および5は60%スレッシュホールドに、CoS値0~3は40%スレッシュホールドに割り当てられます。
600個のフレームが格納されているキューに、新しいフレームが着信したとします。このフレームのCoS値は4および5で、60%スレッシュホールドが適用されます。このフレームがキューに追加されると、スレッシュホールドを超過するため、フレームは廃棄されます。
図 29-6 WTDおよびキューの動作
詳細については、「入力キューへのDSCPまたはCoS値のマッピングおよびWTDスレッシュホールドの設定」、「出力キューセットに対するバッファ スペースの割り当ておよびWTDスレッシュホールドの設定」、および「出力キューおよびスレッシュホールドIDへのDSCPまたはCoS値のマッピング」を参照してください。
SRRのシェーピングおよび共有
入力および出力の両方のキューはSRRで処理され、SRRによってパケットの送信レートが決まります。入力キューでは、SRRによってパケットがスタック リングに送信されます。出力キューでは、SRRによってパケットが出力ポートに送信されます。
出力キューでは、SRRを共有またはシェーピング用に設定できます。ただし、入力キューでは共有がデフォルト モードであり、これ以外のモードはサポートされていません。
シェーピング モードでは、出力キューの帯域幅割合が保証され、この値にレートが制限されます。シェーピングされたトラフィックの場合は、リンクがアイドルの場合も、割り当てを超える帯域幅は使用されません。シェーピングを使用すると、トラフィック フローがより均一になり、バースト トラフィックの最大時と最小時の幅が小さくなります。シェーピングの場合は、各ウェイトの絶対値を使用して、キューで使用可能な帯域幅が計算されます。
共有モードでは、キューは設定されたウェイトに従って各キュー間で帯域幅を共有します。帯域幅はこのレベルで保証されますが、このレベルに限定されるわけではありません。たとえば、特定のキューが空であり、リンクを共有する必要がない場合、残りのキューは未使用の帯域幅を使用して、共有できます。共有の場合、キューからパケットを取り出す頻度はウェイトの比率によって決まります。ウェイトの絶対値には意味がありません。
詳細については、「各入力キューの帯域幅の割り当て」、「出力キューのSRRシェーピング ウェイトの設定」、および「出力キューのSRR共有ウェイトの設定」を参照してください。
入力キューでのキューイングおよびスケジューリング
図 29-7に、入力ポートのキューイングおよびスケジューリングに関するフローチャートを示します。
図 29-7 入力ポートのキューイングおよびスケジューリングに関するフローチャート
(注) SRRは設定された割合に従いプライオリティ キューを処理してから、他のキューを処理します。
スイッチは、SRRによって共有モードでのみ処理される、設定可能な入力キューを2つサポートしています。
表 29-1
にこれらのキューの説明を示します。
表 29-1 入力キューのタイプ
|
|
|
標準
|
標準プライオリティとみなされるユーザ トラフィック。各フローを区別するために、3つの異なるスレッシュホールドを設定できます。
mls qos srr-queue input threshold
、
mls qos srr-queue input dscp-map
、および
mls qos srr-queue input cos-map
グローバル コンフィギュレーション コマンドを使用できます。
|
緊急
|
Differentiated Services(DF)緊急転送または音声トラフィックなどのハイプライオリティ ユーザ トラフィック。このトラフィックに必要な帯域幅は、
mls qos srr-queue input priority-queue
グローバル コンフィギュレーション コマンドを使用して、合計スタック トラフィックの割合として設定できます。緊急キューは帯域幅が保証されています。
|
キューおよびスレッシュホールドに、スイッチを通過する各パケットを割り当てます。特に、入力キューにはDSCPまたはCoS値、スレッシュホールドIDにはDSCPまたはCoS値をマッピングします。
mls qos srr-queue input dscp-map queue
queue-id
{
dscp1...dscp8
|
threshold
threshold-id
dscp1...dscp8
}
または
mls qos srr-queue input cos-map queue
queue-id
{
cos1...cos8
|
threshold
threshold-id cos1...cos8
}
グローバル コンフィギュレーション コマンドを使用します。DSCP入力キュー スレッシュホールド マップおよびCoS入力キュー スレッシュホールド マップを表示するには、
show mls qos maps
イネーブルEXECコマンドを使用します。
WTDスレッシュホールド
キューはWTDを使用して、トラフィック クラスごとに異なる廃棄割合をサポートをします。各キューには3つの廃棄スレッシュホールドがあります。そのうちの2つは設定可能(
明示的
)なWTDスレッシュホールドで、もう1つはキューフル ステートに設定済みの設定不可能(
暗黙的
)なスレッシュホールドです。入力キューに2つの明示的WTDスレッシュホールド(スレッシュホールドID 1およびID 2用)を割り当てるには、
mls qos srr-queue input threshold
queue-id threshold-percentage1 threshold-percentage2
グローバル コンフィギュレーション コマンドを使用します。各スレッシュホールド値は、キューに割り当てられたバッファの合計値に対する割合です。スレッシュホールドID 3の廃棄スレッシュホールドは、キューフル ステートに設定されていて、変更できません。WTDの機能の詳細については、「WTD」を参照してください。
バッファおよび帯域幅の割り当て
2つのキューに入力バッファを分割する比率を定義する(スペース量を割り当てる)には、
mls qos srr-queue input buffers
percentage1 percentage2
グローバル コンフィギュレーション コマンドを使用します。バッファ割り当てと帯域幅割り当てを組み合わせることにより、廃棄する前にバッファに格納して送信できるデータ量が決まります。帯域幅を割合として割り当てるには、
mls qos srr-queue input bandwidth
weight1 weight2
グローバル コンフィギュレーション コマンドを使用します。ウェイトの比率は、SRRスケジューラが各キューからパケットを送信する頻度の比率です。
プライオリティ キューイング
特定の入力キューをプライオリティ キューとして設定するには、
mls qos srr-queue input priority-queue
queue-id
bandwidth
weight
グローバル コンフィギュレーション コマンドを使用します。プライオリティ キュー
はスタック リングの負荷に関わらず帯域幅の一部が保証されているため、確実な配信を必要とするトラフィック(音声など)に使用する必要があります。
SRRは
mls qos srr-queue input priority-queue
queue-id
bandwidth
weight
グローバル コンフィギュレーション コマンドの
bandwidth
キーワードで指定された設定済みウェイトに従って、プライオリティ キューを処理します。その後、SRRは残りの帯域幅を両方の入力キューで共有し、mls qos srr-queue input bandwidth
weight1 weight2
グローバル コンフィギュレーション コマンドによって設定されたウェイトに従い、入力キューを処理します。
ここに記載されたコマンドを組み合わせると、特定のDSCPまたはCoSを持つパケットを特定のキューに格納したり、大きなキュー サイズを割り当てたり、キューの処理頻度を増やしたり、プライオリティが低いパケットが廃棄されるようにキューのスレッシュホールドを調整したりして、トラフィックのプライオリティを設定できます。設定の詳細については、「入力キューの特性の設定」を参照してください。
出力キューでのキューイングおよびスケジューリング
図 29-8に、出力ポートのキューイングおよびスケジューリングに関するフローチャートを示します。
(注) 緊急キューがイネーブルの場合、SRRはこのキューを空になるまで処理してから、他の3つのキューを処理します。
図 29-8 出力ポートのキューイングおよびスケジューリングに関するフローチャート
各ポートでは、4つの出力キューをサポートしています。そのうちの1つのキュー(キュー1)を出力緊急キューとすることができます。これらのキューはキューセットに割り当てられます。スイッチから送信されるすべてのトラフィックは、パケットに割り当てられたQoSラベルに基づいて、これらの4つのキューのいずれかを通過し、スレッシュホールドの影響を受けます。
図 29-9に出力キュー バッファを示します。バッファ スペースは共通プールと専用プールからなります。スイッチはバッファ割り当て方式を使用して、出力キューごとに最小バッファ サイズを確保します。これにより、いずれかのキューまたはポートがすべてのバッファを消費して、その他のキューのバッファが不足することがなくなり、要求元のキューにバッファ スペースを割り当てるかどうかが決まります。スイッチは、目的のキューが確保量(下限)を超えるバッファを消費していないかどうか、最大バッファ(上限)をすべて消費しているかどうか、および共通プールが空である(空きバッファなし)か、または空でない(空きバッファあり)かを検出します。キューが上限に達していない場合、スイッチは専用プールまたは共通プール(空でない場合)からバッファ スペースを割り当てることができます。共通プールに空きバッファがない場合、またはキューが上限に達している場合は、フレームが廃棄されます。
図 29-9 出力キューのバッファ割り当て
バッファおよびメモリの割り当て
バッファのアベイラビリティの保証、廃棄スレッシュホールドの設定、およびキューセットの最大メモリ割り当ての設定を行うには、
mls qos queue-set output
qset-id
threshold
queue-id drop-threshold1 drop-threshold2 reserved-threshold maximum-threshold
グローバル コンフィギュレーション コマンドを使用します。各スレッシュホールド値はキューに割り当てられたメモリの割合です。この割合を指定するには、
mls qos queue-set output
qset-id
buffers
allocation1 ... allocation4
グローバル コンフィギュレーション コマンドを使用します。
割り当てられたすべてのバッファの合計が専用プールになります。残りのバッファは共通プールの一部になります。
バッファ割り当てを行うと、ハイプライオリティ トラフィックを確実にバッファに格納することができます。たとえば、バッファ スペースが400の場合、バッファ スペースの70%をキュー1に割り当てて、10%をキュー2~4に割り当てることができます。キュー1には280のバッファが割り当てられ、キュー2~4にはそれぞれ40バッファが割り当てられます。
割り当てられたバッファをキューセット内の特定のキュー用に確保できます。たとえば、キュー用として100バッファある場合、50%(50バッファ)を確保できます。残りの50バッファは共通プールに戻されます。また、最大スレッシュホールドを設定することにより、キューが一杯になった場合でも、確保量を超えるバッファの取得を可能にすることができます。共通プールが空でない場合、必要なバッファを共通プールから割り当てることができます。
WTDスレッシュホールド
キューおよびスレッシュホールドにスイッチを通過する各パケットを割り当てることができます。特に、出力キューにはDSCPまたはCoS値、スレッシュホールドIDにはDSCPまたはCoS値をマッピングします。
mls qos srr-queue output dscp-map queue
queue-id
{
dscp1...dscp8
|
threshold
threshold-id dscp1...dscp8
}
または
mls qos srr-queue output cos-map queue
queue-id
{
cos1...cos8
|
threshold
threshold-id cos1...cos8
}
グローバル コンフィギュレーション コマンドを使用します。DSCP出力キュー スレッシュホールド マップおよびCoS出力キュー スレッシュホールド マップを表示するには、
show mls qos maps
イネーブルEXECコマンドを使用します。
キューはWTDを使用して、トラフィック クラスごとに異なる廃棄割合をサポートをします。各キューには3つの廃棄スレッシュホールドがあります。そのうちの2つは設定可能(
明示的
)なWTDスレッシュホールドで、もう1つはキューフル ステートに設定済みの設定不可能(
暗黙的
)なスレッシュホールドです。スレッシュホールドID 1およびID 2用の2つのWTDスレッシュホールド割合を割り当てます。スレッシュホールドID 3の廃棄スレッシュホールドは、キューフル ステートに設定されていて、変更できません。WTDの機能の詳細については、「WTD」を参照してください。
シェーピング モードまたは共有モード
SRRは、各キューセットを共有モードまたはシェーピング モードで処理します。ポートをキューセットにマッピングするには、
queue-set
qset-id
インターフェイス コンフィギュレーション コマンドを使用します。ポートに共有ウェイトまたはシェーピング ウェイトを割り当てるには、
srr-queue bandwidth share
weight1 weight2 weight3 weight4
または
srr-queue bandwidth shape
weight1 weight2 weight3 weight4
インターフェイス コンフィギュレーション コマンドを使用します。シェーピングと共有の違いについては、「SRRのシェーピングおよび共有」を参照してください。
バッファ割り当てとSRRウェイト比率を組み合わせることにより、廃棄する前にバッファに格納して送信できるデータ量が決まります。ウェイトの比率は、SRRスケジューラが各キューからパケットを送信する頻度の比率です。
緊急キューがイネーブルでないかぎりは、4つのキューすべてが、SRRに参加します。緊急キューがイネーブルの場合、最初の帯域幅ウェイトは無視されて、比率計算で使用されません。緊急キューは、プライオリティ キューです。このキューを空になるまで処理してから、他のキューを処理します。緊急キューをイネーブルにするには、
priority-queue out
インターフェイス コンフィギュレーション コマンドを使用します。
ここに記載されたコマンドを組み合わせると、特定のDSCPまたはCoSを持つパケットを特定のキューに格納したり、大きなキュー サイズを割り当てたり、キューの処理頻度を増やしたり、プライオリティが低いパケットが廃棄されるようにキューのスレッシュホールドを調整したりして、トラフィックのプライオリティを設定できます。設定の詳細については、「出力キューの特性の設定」を参照してください。
(注) ほとんどの場合は、出力キューのデフォルト設定が最適です。デフォルト設定の変更が必要となるのは、出力キューについて完全に理解している場合、およびこれらの設定がご使用のQoSソリューションを満たしていない場合のみです。
パケットの変更
QoSを設定するにはパケットの分類、ポリシング、およびキューイングを行います。このプロセス中に、パケットが次のように変更されることがあります。
•
IPパケットおよび非IPパケットの分類では、受信パケットのDSCPまたはCoSに基づいて、パケットにQoSラベルが割り当てられます。ただし、この時点ではパケットは変更されません。割り当てられたDSCPまたはCoS値の情報のみがパケットに格納されて伝達されます。これは、QoSの分類および転送検索が並行して発生するためです。パケットを元のDSCPのままCPUに転送し、CPUでソフトウェアによる再処理を行うことができます。
•
ポリシング中は、IPおよび非IPパケットに別のDSCPを割り当てることができます(これらのパケットが不適合で、ポリサーがDSCPのマークダウンを指定している場合)。この場合も、パケット内のDSCPは変更されず、マークダウンされた値に関する情報がパケットに格納されて伝達されます。IPパケットの場合は、この後の処理でパケットが変更されます。非IPパケットの場合は、DSCPがCoSに変換され、キューイングおよびスケジューリングの決定に使用されます。
•
フレームに割り当てられたQoSラベル、および選択された変換マップに応じて、フレームのDSCPおよびCoS値が書き換えられます。変換マップが設定されておらず、着信フレームのDSCPを信頼するようにポートが設定されている場合、フレーム内のDSCP値は変更されないで、DSCP/CoSマップに従ってCoSが書き換えられます。着信フレームのCoSを信頼するようにポートが設定されていて、着信フレームがIPパケットの場合、フレーム内のCoS値は変更されませんが、DSCPはCoS/DSCPマップに従って変更されることがあります。
入力変換が行われると、選択された新しいDSCP値に応じてDSCPが書き換えられます。ポリシー マップの設定アクションによって、DSCPが書き換えられることもあります。
自動QoSの設定
自動QoSを使用すると、既存のQoS機能を簡単に導入できます。自動QoSはネットワーク設計に関する前提条件を設定するもので、それによってスイッチは、デフォルトのQoS動作を使用せずにトラフィック フローごとに優先順位を付け、入力キューおよび出力キューを適切に使用できます(デフォルトで、QoSはディセーブルです。スイッチはパケットの内容やサイズに関係なく、各パケットにベストエフォート型サービスを提供し、単一キューでパケットを送信します)。
自動QoSをイネーブルにすると、トラフィック タイプと入力パケット ラベルに基づいてトラフィックが自動的に分類されます。スイッチはこの分類結果を使って適切な出力キューを選択します。
自動QoSコマンドを使って、Cisco IP Phoneと接続しているポートを識別し、アップリンクを通じて信頼できるVoice over IP(VoIP)トラフィックを受信するポートを識別します。ここで自動QoSは次の機能を実行します。
•
Cisco IP Phoneの有無を検知します。
•
QoS分類を設定します。
•
出力キューを設定します。
ここでは、スイッチ上で自動QoSを設定する手順について説明します。
•
「生成される自動QoS設定」
•
「自動QoSの設定上の影響」
•
「自動QoS設定時の注意事項」
•
「VoIP用の自動QoSをイネーブルにする方法」
•
「自動QoS設定例」
生成される自動QoS設定
デフォルトでは、自動QoSはすべてのポートでディセーブルに設定されています。
自動QoSがイネーブルの場合、トラフィックの分類、パケット ラベルの割り当て、および入力キューと出力キューの設定に入力パケット ラベルを使用します(
表 29-2
を参照)。
表 29-2 トラフィック タイプ、入力パケット ラベル、割り当てパケット ラベル、およびキュー
|
|
|
|
|
|
入力DSCP
|
46
|
26
|
-
|
-
|
-
|
入力CoS
|
5
|
3
|
6
|
7
|
-
|
DiffServ
|
EF
|
AF31
|
-
|
-
|
-
|
割り当てDSCP
|
46
|
26
|
48
|
56
|
0
|
割り当てCoS
|
5
|
3
|
6
|
7
|
0
|
CoS/入力キュー マップ
|
2、3、4、5、6、7(キュー2)
|
0、1(キュー1)
|
CoS/出力キュー マップ
|
5(キュー1)
|
3、6、7(キュー2)
|
2、4(キュー3)
|
0、1(キュー4)
|
表 29-3
に、生成された入力キューの自動QoS設定を示します。
表 29-3 入力キュー用の自動QoS設定
|
|
|
|
|
|
SRR共有
|
1
|
0、1
|
90%
|
90%
|
プライオリティ
|
2
|
2、3、4、5、6、7
|
10%
|
10%
|
表 29-4
に、生成された出力キューの自動QoS設定を示します。
表 29-4 出力キュー用の自動QoS設定
|
|
|
|
|
|
プライオリティ(シェーピング)
|
1
|
5
|
10%
|
20%
|
SRR共有
|
2
|
3、6、7
|
10%
|
20%
|
SRR共有
|
3
|
2、4
|
60%
|
20%
|
SRR共有
|
4
|
0、1
|
20%
|
40%
|
最初のポートで自動QoS機能をイネーブルにすると、次の動作が自動的に発生します。
•
QoSがグローバルにイネーブルになり(
mls qos
グローバル コンフィギュレーション コマンド)、その他のグローバル コンフィギュレーション コマンドが追加されます。
•
Cisco IP Phoneに接続されたネットワークのエッジにあるポート上で
auto qos voip cisco-phone
インターフェイス コンフィギュレーション コマンドを入力すると、信頼境界機能がイネーブルになります。スイッチはCisco Discovery Protocol(CDP)を使用して、Cisco IP Phoneの有無を検出します。Cisco IP Phoneが検出されると、パケットで受信されるQoSラベルを信頼するようにポートの入力分類が設定されます。Cisco IP Phoneがない場合、パケットで受信されるQoSラベルを信頼しないようにインターフェイスの入力分類が設定されます。
表 29-3
および
表 29-4
の設定に従って、ポートに入力キューおよび出力キューが設定されます。
•
ネットワーク内部に接続されたポート上で
auto qos voip trust
インターフェイス コンフィギュレーション コマンドを入力すると、非ルーテッド ポートの場合は入力パケット内のCoS値、ルーテッド ポートの場合は入力パケット内のDSCP値が信頼されます(前提条件は、トラフィックがすでに他のエッジ デバイスによって分類されていることです)。
表 29-3
および
表 29-4
の設定に従って、ポートに入力キューおよび出力キューが設定されます。
信頼境界機能の詳細については、「信頼境界の設定によるポート セキュリティの確保」を参照してください。
auto qos voip cisco-phone
または
auto qos voip trust
インターフェイス コンフィギュレーション コマンドを使用して自動QoSをイネーブルにすると、スイッチはトラフィック タイプと入力パケット ラベルに基づいて自動的にQoS設定を生成し、
表 29-5
に示すコマンドをポートに適用します。
表 29-5 生成される自動QoS設定
|
|
|
スイッチは標準QoSを自動的にイネーブルにし、CoS/DSCPマップ(着信パケット内のCoS値のDSCP値へのマッピング)を設定します。
|
Switch(config)#
mls qos map cos-dscp 0 8 16 26 32 46 48 56
|
スイッチはCoS値を入力キューおよびスレッシュホールドIDに自動的にマッピングします。
|
Switch(config)#
no mls qos srr-queue input cos-map
Switch(config)#
mls qos srr-queue input cos-map queue 1 threshold 3 0
Switch(config)#
mls qos srr-queue input cos-map queue 1 threshold 2 1
Switch(config)#
mls qos srr-queue input cos-map queue 2 threshold 1 2
Switch(config)#
mls qos srr-queue input cos-map queue 2 threshold 2 4 6 7
Switch(config)#
mls qos srr-queue input cos-map queue 2 threshold 3 3 5
|
スイッチはCoS値を出力キューおよびスレッシュホールドIDに自動的にマッピングします。
|
Switch(config)#
no mls qos srr-queue output cos-map
Switch(config)#
mls qos srr-queue output cos-map queue 1 threshold 3 5
Switch(config)#
mls qos srr-queue output cos-map queue 2 threshold 3 3 6 7
Switch(config)#
mls qos srr-queue output cos-map queue 3 threshold 3 2 4
Switch(config)#
mls qos srr-queue output cos-map queue 4 threshold 2 1
Switch(config)#
mls qos srr-queue output cos-map queue 4 threshold 3 0
|
スイッチはDSCP値を入力キューおよびスレッシュホールドIDに自動的にマッピングします。
|
Switch(config)#
no mls qos srr-queue input dscp-map
Switch(config)#
mls qos srr-queue input dscp-map queue 1 threshold 2 9 10 11 12 13 14 15
Switch(config)#
mls qos srr-queue input dscp-map queue 1 threshold 3 0 1 2 3 4 5 6 7
Switch(config)#
mls qos srr-queue input dscp-map queue 1 threshold 3 32
Switch(config)#
mls qos srr-queue input dscp-map queue 2 threshold 1 16 17 18 19 20 21 22 23
Switch(config)#
mls qos srr-queue input dscp-map queue 2 threshold 2 26 33 34 35 36 37 38 39
Switch(config)#
mls qos srr-queue input dscp-map queue 2 threshold 2 48 49 50 51 52 53 54 55
Switch(config)#
mls qos srr-queue input dscp-map queue 2 threshold 2 56 57 58 59 60 61 62 63
Switch(config)#
mls qos srr-queue input dscp-map queue 2 threshold 3 24 25 27 28 29 30 31 40
Switch(config)#
mls qos srr-queue input dscp-map queue 2 threshold 3 41 42 43 44 45 46 47
|
スイッチはDSCP値を出力キューおよびスレッシュホールドIDに自動的にマッピングします。
|
Switch(config)#
no mls qos srr-queue output dscp-map
Switch(config)#
mls qos srr-queue output dscp-map queue 1 threshold 3 40 41 42 43 44 45 46 47
Switch(config)#
mls qos srr-queue output dscp-map queue 2 threshold 3 24 25 26 27 28 29 30 31
Switch(config)#
mls qos srr-queue output dscp-map queue 2 threshold 3 48 49 50 51 52 53 54 55
Switch(config)#
mls qos srr-queue output dscp-map queue 2 threshold 3 56 57 58 59 60 61 62 63
Switch(config)#
mls qos srr-queue output dscp-map queue 3 threshold 3 16 17 18 19 20 21 22 23
Switch(config)#
mls qos srr-queue output dscp-map queue 3 threshold 3 32 33 34 35 36 37 38 39
Switch(config)#
mls qos srr-queue output dscp-map queue 4 threshold 1 8
Switch(config)#
mls qos srr-queue output dscp-map queue 4 threshold 2 9 10 11 12 13 14 15
Switch(config)#
mls qos srr-queue output dscp-map queue 4 threshold 3 0 1 2 3 4 5 6 7
|
スイッチはプライオリティ キューとしてキュー2、共有モードの場合はキュー1を使用して、入力キューを自動的に設定します。入力キュー用の帯域幅およびバッファ サイズも設定します。
|
Switch(config)#
no mls qos srr-queue input priority-queue 1
Switch(config)#
no mls qos srr-queue input priority-queue 2
Switch(config)#
mls qos srr-queue input bandwidth 90 10
Switch(config)#
no mls qos srr-queue input buffers
|
スイッチは出力キュー バッファ サイズを自動的に設定します。ポートにマッピングされた出力キューに帯域幅およびSRRモード(シェーピングまたは共有)を設定します。
|
Switch(config)#
mls qos queue-set output 1 buffers 20 20 20 40
Switch(config-if)#
srr-queue bandwidth shape 10 0 0 0
Switch(config-if)#
srr-queue bandwidth share 10 10 60 20
|
スイッチは、非ルーテッド ポートの場合はパケット内で受信されたCoSを信頼するように、ルーテッド ポートの場合はパケット内で受信されたDSCP値を信頼するように、入力分類を自動的に設定します。
|
Switch(config-if)#
mls qos trust cos
Switch(config-if)#
mls qos trust dscp
|
auto qos voip cisco-phone
コマンドを入力すると、スイッチは自動的に信頼境界機能をイネーブルにします。この機能は、CDPを使用してCisco IP Phoneの有無を検出します。
|
Switch(config-if)#
mls qos trust device cisco-phone
|
自動QoSの設定上の影響
自動QoSがイネーブルの場合、
auto qos voip
インターフェイス コンフィギュレーション コマンドおよび生成された設定が、実行コンフィギュレーションに追加されます。
自動QoSによって生成されたコマンドは、CLIから入力された場合と同様に適用されます。既存のユーザ設定により、生成されたコマンドの適用に失敗したり、生成されたコマンドで既存設定が上書きされることがあります。これらの動作は、警告なしに実行されます。生成されたコマンドがすべて正常に適用された場合、上書きされなかったユーザ入力の設定は、実行コンフィギュレーションに残ります。上書きされたユーザ入力の設定を元に戻すには、現在のコンフィギュレーションをメモリに保存しないでスイッチをリロードします。生成されたコマンドを適用できなかった場合は、元の実行コンフィギュレーションが復元されます。
自動QoS設定時の注意事項
自動QoSの設定を開始する前に、次の点に注意してください。
•
このリリースでは、Cisco IP PhoneのVoIPに対してのみ自動QoSがスイッチに設定されます。
•
自動QoSのデフォルト設定を利用するには、自動QoSコマンドをイネーブルにしてから、その他のQoSコマンドを設定してください。必要であれば、QoS設定をきめ細かく調整できますが、自動QoSコマンド設定が完了したあとに実行することを推奨します。詳細については、「自動QoSの設定上の影響」を参照してください。
•
スタティック アクセス、ダイナミック アクセス、音声VLANアクセス、およびトランク ポートで自動QoSをイネーブルにできます。
•
デフォルトでは、CDPはすべてのポートでイネーブルに設定されています。自動QoSを適切に機能させるには、CDPをディセーブルにしないでください。
•
ポリシングは自動QoSでイネーブルになりません。ポリシングは手動でイネーブルにできます(「QoSポリシーの設定」を参照)。
VoIP用の自動QoSをイネーブルにする方法
VoIP用のQoSをQoSドメインでイネーブルにするには、イネーブルEXECモードで次の手順を実行します。
|
|
|
ステップ 1
|
configure terminal
|
グローバル コンフィギュレーション モードを開始します。
|
ステップ 2
|
interface
interface-id
|
Cisco IP Phoneに接続されているインターフェイス、またはネットワーク内部にある他のスイッチやルータに接続されているアップリンク ポートを指定し、インターフェイス コンフィギュレーション モードを開始します。
|
ステップ 3
|
auto qos voip
{
cisco-phone
|
trust
}
|
自動QoSをイネーブルにします。
キーワードの意味は次のとおりです。
• cisco-phone
―
ポートがCisco IP Phoneに接続されている場合、着信パケットのQoSラベルは電話機が検出されたときのみ信頼されます。
•
trust
―
アップリンク ポートが信頼できるスイッチまたはルータに接続されていて、入力パケット内のVoIPトラフィック分類が信頼されます。
|
ステップ 4
|
end
|
イネーブルEXECモードに戻ります。
|
ステップ 5
|
show auto qos interface
interface-id
|
設定を確認します。
このコマンドは、適用された最初の自動QoS設定を表示するもので、実行した可能性のあるユーザによる変更は反映されません。
show running-config vlan
イネーブルEXECコマンドを使用すれば、自動QoSの設定およびユーザによる変更を表示できます。
|
自動QoSがイネーブルまたはディセーブルの場合に自動生成されるQoSコマンドを表示するには、
debug autoqos
イネーブルEXECコマンドを入力して
から
、QoSをイネーブルにします。詳細については、このリリースのコマンド リファレンスに記載された[debug autoqos]コマンドの説明を参照してください。
ポートで自動QoSをディセーブルにするには、no auto qos voipインターフェイス コンフィギュレーション コマンドを使用します。自動QoSによりこのポートに生成されたインターフェイス コンフィギュレーション コマンドのみが削除されます。自動QoSがイネーブル化されていないポートに
no auto qos voip
コマンドを入力すると、自動QoSにより生成されたグローバル コンフィギュレーション コマンドが残っている場合も、自動QoSはディセーブルであるとみなされます(これにより、他のポート上でグローバル設定の影響を受けるトラフィックが中断されなくなります)。
no mls qos
グローバル コンフィギュレーション コマンドを使用すると、自動QoSにより生成されたグローバル コンフィギュレーション コマンドをディセーブルにすることができます。QoSがディセーブルの場合、パケット(パケットのCoS値、DSCP値、およびIP precedence値)は変更されないため、trusted(信頼する)ポート、untrusted(信頼しない)ポートの概念はありません。トラフィックはパススルー モードでスイッチングされます(パケットは書き換えられずにスイッチングされ、ポリシングを伴わないベストエフォート型として分類されます)。
次に、ポートに接続されたスイッチまたはルータが信頼のあるデバイスの場合、自動QoSをイネーブルにし、着信パケットで受信されたQoSラベルを信頼する例を示します。
Switch(config)# interface gigabitethernet2/0/1 Switch(config-if)# auto qos voip trust
自動QoS設定例
ここでは、ネットワーク内でAuto-QoSを実装する手順について説明します(図 29-10を参照)。
図 29-10 自動QoSを設定したネットワークの例
図 29-10に、VoIPトラフィックのプライオリティが他のタイプのトラフィックよりも高くなるネットワークを示します。配線クローゼット内のQoSドメインのエッジにあるスイッチで、自動QoSをイネーブルにします。
(注) 自動QoSコマンドを入力する前にいかなる標準QoSコマンドも設定しないでください。QoS設定をきめ細かく調整できますが、自動QoSコマンド設定が完了したあとに実行することを推奨します。
VoIPトラフィックを他のすべてのトラフィックよりも優先させるために、QoSドメインのエッジにあるスイッチを設定するには、イネーブルEXECモードで次の手順を実行します。
|
|
|
ステップ 1
|
debug autoqos
|
自動QoS用のデバッグをイネーブルにします。デバッグがイネーブルになると、スイッチは、自動QoSがイネーブルになる場合に自動的に生成されるQoS設定を表示します。
|
ステップ 2
|
configure terminal
|
グローバル コンフィギュレーション モードを開始します。
|
ステップ 3
|
cdp enable
|
CDPをグローバルでイネーブルにします。デフォルトで、CDPはイネーブルに設定されます。
|
ステップ 4
|
interface
interface-id
|
Cisco IP Phoneに接続されたスイッチ ポートを指定し、インターフェイス コンフィギュレーション モードを開始します。
|
ステップ 5
|
auto qos voip cisco-phone
|
ポートで自動QoSをイネーブルにし、ポートがCisco IP Phoneに接続されていることを指定します。
着信パケット内のQoSラベルは、Cisco IP Phoneが検出された場合のみ信頼されます。
|
ステップ 6
|
exit
|
グローバル コンフィギュレーション モードに戻ります。
|
ステップ 7
|
|
Cisco IP Phoneに接続されているポート数だけ、ステップ4~6を繰り返します。
|
ステップ 8
|
interface
interface-id
|
信頼できるスイッチまたはルータに接続していると認識されたスイッチ ポートを指定し、インターフェイス コンフィギュレーション モードを開始します(図 29-10を参照)。
|
ステップ 9
|
auto qos voip trust
|
ポートで自動QoSをイネーブルにし、ポートが信頼できるルータやスイッチに接続されていることを指定します。
|
ステップ 10
|
end
|
イネーブルEXECモードに戻ります。
|
ステップ 11
|
show auto qos
|
設定を確認します。
このコマンドは、最初に適用された自動QoS設定を表示するもので、実行された可能性のあるユーザによる変更は反映されません。
自動QoSによって影響を受ける可能性のあるQoS設定に関する情報については、「自動QoS情報の表示」(p.26-12)を参照してください。
|
ステップ 12
|
copy running-config startup-config
|
auto qos voip
インターフェイス コンフィギュレーション コマンドと生成された自動QoS設定をコンフィギュレーション ファイルに保存します。
|
標準QoSの設定
標準QoSを設定する前に、次の内容を完全に把握してください。
•
使用するアプリケーションのタイプおよびネットワークのトラフィック パターン
•
トラフィックの特性およびネットワークの要求。トラフィック バーストの有無。音声およびビデオ ストリーム用に帯域幅を確保する必要性
•
帯域要件およびネットワーク速度
•
ネットワークで輻輳が発生する場所
ここでは、スイッチにQoSを設定する手順について説明します。
•
「標準QoSのデフォルト設定」
•
「標準QoS設定時の注意事項」
•
「QoSをグローバルでイネーブルにする方法」(必須)
•
「ポートの信頼状態による分類の設定」(必須)
•
「QoSポリシーの設定」(必須)
•
「DSCPマップの設定」(任意、DSCP/DSCP変換マップまたはポリシング設定DSCPマップを使用する必要がない場合)
•
「入力キューの特性の設定」(任意)
•
「出力キューの特性の設定」(任意)
標準QoSのデフォルト設定
QoSはディセーブルに設定されています。パケット(パケットのCoS値、DSCP値、およびIP precedence値)は変更されないため、trustedポート、untrustedポートの概念はありません。トラフィックはパススルー モードでスイッチングされます(パケットは書き換えられずにスイッチングされ、ポリシングを伴わないベストエフォート型として分類されます)。
mls qos
グローバル コンフィギュレーション コマンドを使用してQoSをイネーブルにし、その他のすべてのQoS設定がデフォルトである場合、トラフィックはポリシングを伴わないベストエフォート型として分類されます(DSCPおよびCoS値は0に設定されます)。ポリシー マップは設定されていません。デフォルトでは、すべてのポートの信頼状態はuntrustedになっています。入力および出力キューのデフォルト設定については、「入力キューのデフォルト設定」および「出力キューのデフォルト設定」を参照してください。
入力キューのデフォルト設定
表 29-6
に、QoSがイネーブルの場合の入力キューのデフォルト設定を示します。
表 29-6 入力キューのデフォルト設定
|
|
|
|
バッファ割り当て
|
90%
|
10%
|
帯域幅割り当て
|
4
|
4
|
プライオリティ キューの帯域幅
|
0
|
10
|
WTD廃棄スレッシュホールド1
|
100%
|
100%
|
WTD廃棄スレッシュホールド2
|
100%
|
100%
|
表 29-7
に、QoSがイネーブルの場合のデフォルトのCoS入力キュー スレッシュホールド マップを示します。
表 29-7 デフォルトのCoS入力キュー スレッシュホールド マップ
CoS値
|
0~4
|
5
|
6、7
|
キューID -スレッシュホールドID
|
1 - 1
|
2 - 1
|
1 - 1
|
表 29-8
に、QoSがイネーブルの場合のデフォルトのDSCP入力キュー スレッシュホールド マップを示します。
表 29-8 デフォルトのDSCP入力キュー スレッシュホールド マップ
DSCP値
|
0~39
|
40~47
|
48~63
|
キューID -スレッシュホールドID
|
1 - 1
|
2 - 1
|
1 - 1
|
出力キューのデフォルト設定
表 29-9
に、QoSがイネーブルの場合における、各キューセットに対する出力キューのデフォルト設定を示します。すべてのポートはキューセット1にマッピングされます。ポートの帯域幅制限は100%に設定され、レートは制限されません。
表 29-9 出力キューのデフォルト設定
|
|
|
|
|
|
バッファ割り当て
|
25%
|
25%
|
25%
|
25%
|
WTD廃棄スレッシュホールド1
|
100%
|
50%
|
100%
|
100%
|
WTD廃棄スレッシュホールド2
|
100%
|
50%
|
100%
|
100%
|
専用スレッシュホールド
|
50%
|
100%
|
50%
|
50%
|
最大スレッシュホールド
|
400%
|
400%
|
400%
|
400%
|
SRRシェーピング ウェイト(絶対)
|
25
|
0
|
0
|
0
|
SRR共有ウェイト
|
25
|
25
|
25
|
25
|
表 29-10
に、QoSがイネーブルの場合のデフォルトのCoS出力キュー スレッシュホールド マップを示します。
表 29-10 デフォルトのCoS出力キュー スレッシュホールド マップ
CoS値
|
0、1
|
2、3
|
4
|
5
|
6、7
|
キューID -スレッシュホールドID
|
2 - 1
|
3 - 1
|
4 - 1
|
1 -1
|
4 - 1
|
表 29-11
に、QoSがイネーブルの場合のデフォルトのDSCP出力キュー スレッシュホールド マップを示します。
表 29-11 デフォルトのDSCP出力キュー スレッシュホールド マップ
DSCP値
|
0~15
|
16~31
|
32~39
|
40~47
|
48~63
|
キューID -スレッシュホールドID
|
2 - 1
|
3 - 1
|
4 - 1
|
1 - 1
|
4 - 1
|
マッピング テーブルのデフォルト設定
デフォルトのCoS/DSCPマップについては、表 29-12を参照してください。
デフォルトのIP precedence/DSCPマップについては、表 29-13を参照してください。
デフォルトのDSCP/CoSマップについては、表 29-14を参照してください。
デフォルトのDSCP/DSCP変換マップは、着信したDSCP値を同じDSCP値にマッピングする空のマップです。
デフォルトのポリシング設定DSCPマップは、着信したDSCP値を同じDSCP値にマッピングする(マークダウンしない)空のマップです。
標準QoS設定時の注意事項
QoSの設定を開始する前に、次の点に注意してください。
•
QoSは物理ポートにのみ設定します。VLANまたはスイッチ仮想インターフェイス レベルでは、QoSはサポートされていません。
•
設定されたIP拡張ACLとIPフラグメントを比較して、QoSを実行することはできません。IPフラグメントはベストエフォート型として送信されます。IPフラグメントはIPヘッダー内のフィールドで指定されます。
•
クラス マップごとに1つのACL、および1つの
match
クラス マップ コンフィギュレーション コマンドのみを使用できます。ACLには、フィールドとパケットの内容を照合するACEを複数指定できます。
•
ブリッジング、ルーティング、またはCPUへの送信のいずれを行うかに関係なく、着信トラフィックは分類、ポリシング、およびマークダウンされます(設定されている場合)。ブリッジングされたフレームを廃棄したり、DSCPおよびCoS値を変更することができます。
•
入力ポートでは、1つのパケットにポリサーを1つのみ適用できます。設定できるのは平均速度および確定されたバースト パラメータのみです。
•
複数の物理ポートを制御するポートASICデバイスは、256個のポリサー(255のポリサーと1つの
no
のポリサー)をサポートしています。各ポートでサポートされているポリサーの最大数は64です。たとえば、ギガビット イーサネット ポートに32個のポリサー、ファスト イーサネット ポートに8個のポリサーを設定したり、ギガビット イーサネット ポートに64個のポリサー、ファスト イーサネット ポートに5個のポリサーを設定することができます。ポリサーは必要に応じてソフトウェアによって割り当てられ、ハードウェアおよびASIC境界の制約を受けます。ポートごとにポリサーを予約することはできません。特定のポートを目的のポリサーに確実に割り当てることはできません。
•
QoSが設定されたポートでは、そのポートを通じて受信されるすべてのトラフィックは、ポートに付加されたポリシー マップに従って分類、ポリシング、およびマーキングが行われます。QoSが設定されたトランク ポートでは、そのポートを通じて受信される
すべての
VLAN内トラフィックは、ポートに付加されたポリシー マップに従って分類、ポリシング、およびマーキングが行われます。
•
同じポリシー マップ内の複数のトラフィック クラスで共有される集約ポリサーを作成できます。ただし、集約ポリサーを複数の異なるポリシー マップに使用することはできません。
•
スイッチにEtherChannelポートが設定されている場合は、EtherChannelを構成する各物理ポートでQoSの分類、ポリシング、マッピング、およびキューイングを設定する必要があります。EtherChannelのすべてのポートで、QoS設定を統一するかどうかを決定します。
•
スイッチで受信された制御トラフィック(スパニングツリーBridge Protocol Data Unit [BPDU;ブリッジ プロトコル データ ユニット]やルーティング アップデート パケットなど)には、すべての入力QoS処理が行われます。
•
キュー設定を変更すると、データが失われることがあります。したがって、トラフィックが最小のときに設定を変更するようにしてください。
QoSをグローバルでイネーブルにする方法
デフォルトでは、QoSはスイッチ上でディセーブルです。
QoSをイネーブルにするには、イネーブルEXECモードで次の手順を実行します。この手順は必須です。
QoSをディセーブルにするには、
no mls qos
グローバル コンフィギュレーション コマンドを使用します。
QoSドメイン内のポートの信頼状態の設定
QoSドメインに入ってくるパケットは、QoSドメインのエッジで分類されます。パケットがエッジで分類されるときは、QoSドメイン内のスイッチごとにパケットを分類する必要がないため、QoSドメイン内のスイッチ ポートをtrustedポートの1つに設定できます。図 29-11に、ネットワーク トポロジーの例を示します。
図 29-11 QoSドメイン内のポートの信頼状態
受信するトラフィックの分類を信頼するようにポートを設定するには、イネーブルEXECモードで次の手順を実行します。
|
|
|
ステップ 1
|
configure terminal
|
グローバル コンフィギュレーション モードを開始します。
|
ステップ 2
|
interface
interface-id
|
信頼するポートを指定し、インターフェイス コンフィギュレーション モードを開始します。
有効なインターフェイスは物理ポートなどです。
|
ステップ 3
|
mls qos trust
[
cos
|
dscp
|
ip-precedence
]
|
ポートの信頼状態を設定します。
デフォルトでは、ポートはtrustedになっていません。キーワードを指定しない場合、デフォルトは
dscp
です。
キーワードの意味は次のとおりです。
•
cos
― パケットのCoS値を使用して入力パケットを分類します。タグなしパケットの場合は、ポートのデフォルトのCoS値が使用されます。デフォルトのポートCoS値は0です。
•
dscp
― パケットのDSCP値を使用して入力パケットを分類します。非IPパケットでは、パケットがタグ付きの場合、パケットのCoS値が使用されます。パケットがタグなしの場合は、デフォルトのポートCoSが使用されます。CoS/DSCPマップを使用して、CoS値がDSCP値に内部的にマッピングされます。
•
ip-precedence
― パケットのIP precedence値を使用して入力パケットを分類します。
非IPパケットでは、パケットがタグ付きの場合、パケットのCoS値が使用されます。パケットがタグなしの場合は、デフォルトのポートCoSが使用されます。CoS/DSCPマップを使用して、CoS値がDSCP値に内部的にマッピングされます。
|
ステップ 4
|
end
|
イネーブルEXECモードに戻ります。
|
ステップ 5
|
show mls qos interface
|
設定を確認します。
|
ステップ 6
|
copy running-config startup-config
|
(任意)コンフィギュレーション ファイルに設定を保存します。
|
ポートをuntrustedの状態に戻すには、
no mls qos trust
インターフェイス コンフィギュレーション コマンドを使用します。
デフォルトのCoS値を変更する方法については、「インターフェイスのCoS値の設定」を参照してください。CoS/DSCPマップを設定する方法については、「CoS/DSCPマップの設定」を参照してください。
インターフェイスのCoS値の設定
QoSは、trustedポートおよびuntrustedポートで受信されたタグなしフレームに、
mls qos cos
インターフェイス コンフィギュレーション コマンドによって指定されたCoS値を割り当てます。
ポートのデフォルトのCoS値を定義したり、デフォルトのCoS値をポートのすべての着信パケットに割り当てるには、イネーブルEXECモードで次の手順を実行します。
|
|
|
ステップ 1
|
configure terminal
|
グローバル コンフィギュレーション モードを開始します。
|
ステップ 2
|
interface
interface-id
|
設定するポートを指定し、インターフェイス コンフィギュレーション モードを開始します。
有効なインターフェイスは物理ポートなどです。
|
ステップ 3
|
mls qos cos
{
default-cos
|
override
}
|
ポートのデフォルトのCoS値を設定します。
•
default-cos
を指定する場合は、ポートに割り当てるデフォルトのCoS値を指定します。パケットがタグなしの場合、デフォルトのCoS値がパケットのCoS値になります。指定できるCoSの範囲は0~7で、デフォルトは0です。
• 着信パケットにすでに設定されている信頼状態を上書きし、すべての着信パケットにデフォルトのポートCoS値を適用する場合は、
override
キーワードを使用します。デフォルトでは、CoSの上書きはディセーブルに設定されています。
指定されたポートのすべての着信パケットのプライオリティを他のポートから着信したパケットよりも高く、または低く設定する場合は、
override
キーワードを使用します。ポートがDSCP、CoS、またはIP precedenceを信頼するように設定されている場合も、このコマンドを実行すると設定済みの信頼状態が上書きされ、すべての着信CoS値に、このコマンドによって設定されたデフォルトのCoS値が割り当てられます。着信パケットがタグ付きの場合、パケットのCoS値は入力ポートでデフォルトのポートCoS値に変更されます。
|
ステップ 4
|
end
|
イネーブルEXECモードに戻ります。
|
ステップ 5
|
show mls qos interface
|
設定を確認します。
|
ステップ 6
|
copy running-config startup-config
|
(任意)コンフィギュレーション ファイルに設定を保存します。
|
デフォルト設定に戻すには、
no mls qos cos
{
default-cos
|
override
}
インターフェイス コンフィギュレーション コマンドを使用します。
信頼境界の設定によるポート セキュリティの確保
通常のネットワークでは、図 29-11に示すように、Cisco IP Phoneをスイッチ ポートに接続し、電話機の背後でデータ パケットを生成するデバイスをカスケード構成にします。Cisco IP Phoneは、音声パケットのCoSレベルをハイ プライオリティ(CoS=5)に、データ パケットのCoSレベルをロー プライオリティ(CoS=0)にマーキングして、共有データ リンクを通る音声品質を保証します。通常の場合、電話機からスイッチに送信されたトラフィックは、802.1Qヘッダーを使用するタグによってマーキングされます。このヘッダーにはVLAN情報、およびパケットの優先順位を示すCoSの3ビットフィールドが格納されます。
ほとんどのCisco IP Phone設定では、電話機からスイッチに送信されたトラフィックは信頼され、音声トラフィックのプライオリティがネットワーク内の他のタイプのトラフィックよりも高くなります。
mls qos trust cos
インターフェイス コンフィギュレーション コマンドを使用することにより、ポートで受信されたすべてのトラフィックのCoSラベルを信頼するように、電話機の接続先であるスイッチ ポートを設定することができます。
電話機をバイパスしてPCがスイッチに直接接続されている場合、trustedに設定されているポートでは、信頼境界機能を使用することにより、ハイプライオリティ キューの誤使用を防止することもできます。信頼境界を使用しない場合、スイッチはPCによって生成されたCoSラベルを信頼します(CoS設定が信頼されるため)。対照的に、信頼境界を使用する場合は、CDPを使用してスイッチ ポート上でCisco IP Phone(Cisco IP Phone 7910、7935、7940、および7960)の存在を検出します。電話機が検出されなかった場合、信頼境界機能はスイッチ ポートの信頼設定をディセーブルにし、ハイプライオリティ キューの誤使用を防止します。PCおよびCisco IP Phoneがスイッチに接続されたハブに接続されている場合、信頼境界機能は無効であることに注意してください。
場合によっては、Cisco IP Phoneに接続されたPCがハイプライオリティのデータ キューを利用しないように設定できます。そのためには、
switchport priority extend cos
インターフェイス コンフィギュレーション コマンドを使用し、PCから受信したトラフィックのプライオリティよりも優先するように、スイッチCLIを通して電話機を設定します。
ポートの信頼境界をイネーブルにするには、イネーブルEXECモードで次の手順を実行します。
|
|
|
ステップ 1
|
configure terminal
|
グローバル コンフィギュレーション モードを開始します。
|
ステップ 2
|
cdp run
|
CDPをグローバルでイネーブルにします。デフォルトで、CDPはイネーブルに設定されます。
|
ステップ 3
|
interface
interface-id
|
Cisco IP Phoneに接続されたポートを指定し、インターフェイス コンフィギュレーション モードを開始します。
有効なインターフェイスは物理ポートなどです。
|
ステップ 4
|
cdp enable
|
ポート上でCDPをイネーブルにします。デフォルトで、CDPはイネーブルに設定されます。
|
ステップ 5
|
mls qos trust cos
|
Cisco IP Phoneで受信したトラフィックのCoS値を信頼するように、ポートを設定します。デフォルトでは、ポートはtrustedになっていません。
|
ステップ 6
|
mls qos trust device cisco-phone
|
Cisco IP Phoneが信頼されたデバイスであることを指定します。
信頼境界および自動QoS(
auto qos voip
インターフェイス コンフィギュレーション コマンド)は相互に排他的なので、同時にイネーブルにできません。
|
ステップ 7
|
end
|
イネーブルEXECモードに戻ります。
|
ステップ 8
|
show mls qos interface
|
設定を確認します。
|
ステップ 9
|
copy running-config startup-config
|
(任意)コンフィギュレーション ファイルに設定を保存します。
|
信頼境界機能をディセーブルにするには、
no mls qos trust device
インターフェイス コンフィギュレーション コマンドを使用します。
別のQoSドメインとの境界ポートでのDSCP信頼状態の設定
2つの異なるQoSドメインを管理していて、そのQoSドメイン間のIPトラフィックにQoS機能を実行する場合は、DSCPを信頼するようにドメインの境界に位置するスイッチ ポートを設定できます(図 29-12を参照)。それにより、受信ポートでは信頼するDSCP値をそのまま使用し、QoSの分類手順が省略されます。2つのドメインで異なるDSCP値が使用されている場合は、他のドメイン内での定義に合わせて一連のDSCP値を変換するDSCP/DSCP変換マップを設定できます。
図 29-12 別のQoSドメインとの境界ポートでのDSCP信頼状態
ポートにDSCPを信頼する状態を設定して、DSCP/DSCP変換マップを変更するには、イネーブルEXECモードで次の手順を実行します。両方のQoSドメインに共通の方法でマッピングするには、両方のドメイン内のポートに次の手順を実行する必要があります。
|
|
|
ステップ 1
|
configure terminal
|
グローバル コンフィギュレーション モードを開始します。
|
ステップ 2
|
mls qos map dscp-mutation
dscp-mutation-name in-dscp
to
out-dscp
|
DSCP/DSCP変換マップを変更します。
デフォルトのDSCP/DSCP変換マップは、着信したDSCP値を同じDSCP値にマッピングする空のマップです。
•
dscp-mutation-name
には、変換マップ名を入力します。新しい名前を指定することにより、複数のマップを作成することができます。
•
in-dscp
には、最大8つのDSCP値をスペースで区切って入力します。次に
to
キーワードを入力します。
•
out-dscp
には、DSCP値を1つ入力します。
DSCPの範囲は0~63です。
|
ステップ 3
|
interface
interface-id
|
信頼するポートを指定し、インターフェイス コンフィギュレーション モードを開始します。
有効なインターフェイスは物理ポートなどです。
|
ステップ 4
|
mls qos trust dscp
|
DSCPを信頼する状態のポートとして、入力ポートを設定します。デフォルトでは、ポートはtrustedになっていません。
|
ステップ 5
|
mls qos dscp-mutation
dscp-mutation-name
|
DSCPを信頼する状態の指定の入力ポートにマップを適用します。
dscp-mutation-name
には、ステップ2で作成した変換マップ名を指定します。
1つの入力ポートに複数のDSCP/DSCP変換マップを設定できます。
|
ステップ 6
|
end
|
イネーブルEXECモードに戻ります。
|
ステップ 7
|
show mls qos maps dscp-mutation
|
設定を確認します。
|
ステップ 8
|
copy running-config startup-config
|
(任意)コンフィギュレーション ファイルに設定を保存します。
|
DSCPを信頼しない状態にポートを戻すには、
no mls qos trust
インターフェイス コンフィギュレーション コマンドを使用します。デフォルトのDSCP/DSCP変換マップ値に戻すには、
no mls qos map dscp-mutation
dscp-mutation-name
グローバル コンフィギュレーション コマンドを使用します。
次に、ポートをDSCPを信頼する状態に設定し、着信したDSCP値10~13がDSCP値30にマッピングされるようにDSCP/DSCP変換マップ(
gi1/0/2-mutation
)を変更する例を示します。
Switch(config)# mls qos map dscp-mutation gi1/0/2-mutation 10 11 12 13 to 30 Switch(config)# interface gigabitethernet1/0/2 Switch(config-if)# mls qos trust dscp Switch(config-if)# mls qos dscp-mutation gi1/0/2-mutation
ACLによるトラフィックの分類
IPトラフィックを分類するには、IP標準ACLまたはIP拡張ACLを使用します。非IPトラフィックを分類するには、レイヤ2 MAC ACLを使用します。
IPトラフィック用のIP標準ACLを作成するには、イネーブルEXECモードで次の手順を実行します。
|
|
|
ステップ 1
|
configure terminal
|
グローバル コンフィギュレーション モードを開始します。
|
ステップ 2
|
access-list
access-list-number
{
deny
|
permit
}
source
[
source-wildcard
]
|
IP標準ACLを作成します。必要な回数だけこのコマンドを繰り返します。
•
access-list-number
には、アクセス リスト番号を入力します。指定できる範囲は1~99および1300~1999です。
• 条件が一致した場合に特定のタイプのトラフィックを許可するには、
permit
キーワードを使用します。条件が一致した場合に特定のタイプのトラフィックを拒否するには、
deny
キーワードを使用します。
•
source
には、パケットの送信元であるネットワークまたはホストを入力します。
any
キーワードは0.0.0.0 255.255.255.255の短縮形として使用することができます。
• (任意)
source-wildcard
を指定する場合は、送信元に適用するワイルドカード ビットをドット付き10進表記で入力します。無視するビット位置に1を配置します。
(注) アクセス リストを作成するときは、アクセス リストの末尾に暗黙的な拒否ステートメントがデフォルトで存在し、それ以前のステートメントで一致が見つからなかったすべてのパケットに適用されることに注意してください。
|
ステップ 3
|
end
|
イネーブルEXECモードに戻ります。
|
ステップ 4
|
show access-lists
|
設定を確認します。
|
ステップ 5
|
copy running-config startup-config
|
(任意)コンフィギュレーション ファイルに設定を保存します。
|
アクセス リストを削除するには、
no access-list
access-list-number
グローバル コンフィギュレーション コマンドを使用します。
次に、指定された3つのネットワーク上のホストにのみアクセスを許可する例を示します。ワイルドカード ビットはネットワーク アドレスのホスト部分に適用されます。送信元アドレスがアクセス リストのステートメントと一致しないホストは拒否されます。
Switch(config)# access-list 1 permit 192.5.255.0 0.0.0.255 Switch(config)# access-list 1 permit 128.88.0.0 0.0.255.255 Switch(config)# access-list 1 permit 36.0.0.0 0.0.0.255 ! (Note: all other access implicitly denied)
IPトラフィック用のIP拡張ACLを作成するには、イネーブルEXECモードで次の手順を実行します。
|
|
|
ステップ 1
|
configure terminal
|
グローバル コンフィギュレーション モードを開始します。
|
ステップ 2
|
access-list
access-list-number
{
deny
|
permit
}
protocol source source-wildcard destination destination-wildcard
|
IP拡張ACLを作成します。必要な回数だけこのコマンドを繰り返します。
•
access-list-number
には、アクセス リスト番号を入力します。指定できる範囲は100~199、および2000~2699です。
• 条件が一致した場合に特定のタイプのトラフィックを許可するには、
permit
キーワードを使用します。条件が一致した場合に特定のタイプのトラフィックを拒否するには、
deny
キーワードを使用します。
•
protocol
には、IPプロトコルの名前または番号を入力します。使用可能なプロトコル キーワードのリストを表示するには、疑問符(?)を使用します。
•
source
には、パケットの送信元であるネットワークまたはホストを入力します。ネットワークまたはホストを指定するには、ドット付き10進表記を使用したり、
source
0.0.0.0
source-wildcard
255.255.255.255の短縮形として
any
キーワードを使用したり、
source
0.0.0.0を表す
host
キーワードを使用します。
•
source-wildcard
には、無視するビット位置に1を指定してワイルド カード ビットを入力します。ワイルドカードを指定するには、ドット付き10進表記を使用したり、
source
0.00.0.0
source-wildcard
255.255.255.255の短縮形として
any
キーワードを使用したり、
source
0.0.0.0を表す
host
キーワードを使用します。
•
destination
には、パケットの送信先となるネットワークまたはホストを入力します。
destinationおよびdestination-wildcard
を指定するときのオプションは、
source
および
source-wildcard
を指定する場合と同じです。
(注) アクセス リストを作成するときは、アクセス リストの末尾に暗黙的な拒否ステートメントがデフォルトで存在し、それ以前のステートメントで一致が見つからなかったすべてのパケットに適用されることに注意してください。
|
ステップ 3
|
end
|
イネーブルEXECモードに戻ります。
|
ステップ 4
|
show access-lists
|
設定を確認します。
|
ステップ 5
|
copy running-config startup-config
|
(任意)コンフィギュレーション ファイルに設定を保存します。
|
アクセス リストを削除するには、
no access-list
access-list-number
グローバル コンフィギュレーション コマンドを使用します。
次に、任意の送信元から任意の宛先へのIPトラフィック(DSCP値は32)を許可するACLの作成例を示します。
Switch(config)# access-list 100 permit ip any any dscp 32
次に、10.1.1.1の送信元ホストから10.1.1.2の宛先ホストへのIPトラフィック(precedence値は5)を許可するACLの作成例を示します。
Switch(config)# access-list 100 permit ip host 10.1.1.1 host 10.1.1.2 precedence 5
次に、任意の送信元から宛先グループ アドレス224.0.0.2へのPIMトラフィック(DSCP値は32)を許可するACLの作成例を示します。
Switch(config)# access-list 102 permit pim any 224.0.0.2 dscp 32
非IPトラフィック用のレイヤ2 MAC ACLを作成するには、イネーブルEXECモードで次の手順を実行します。
|
|
|
ステップ 1
|
configure terminal
|
グローバル コンフィギュレーション モードを開始します。
|
ステップ 2
|
mac access-list extended
name
|
リスト名を指定し、レイヤ2 MAC ACLを作成します。
このコマンドを入力すると、拡張MAC ACLコンフィギュレーション モードに変わります。
|
ステップ 3
|
{
permit
|
deny
} {
host
src-MAC-addr mask
|
any
|
host
dst-MAC-addr
|
dst-MAC-addr mask
} [
type mask
]
|
条件が一致した場合に許可または拒否するトラフィック タイプを指定します。必要な回数だけコマンドを入力します。
•
src-MAC-addr
には、パケットの送信元であるホストのMACアドレスを入力します。MACアドレスを指定するには、16進表記(H.H.H)を使用したり、
source
0.0.0、
source-wildcard
255.255.255の短縮形として
any
キーワードを使用したり、
source
0.0.0を表す
host
キーワードを使用します。
•
mask
には、無視するビット位置に1を指定してワイルドカード ビットを入力します。
•
dst-MAC-addr
には、パケットの送信先となるホストのMACアドレスを入力します。MACアドレスを指定するには、16進表記(H.H.H)を使用したり、
source
0.0.0、
source-wildcard
255.255.255の短縮形として
any
キーワードを使用したり、
source
0.0.0を表す
host
キーワードを使用します。
• (任意)
type mask
には、Ethernet IIまたはSNAPでカプセル化されたパケットのEtherType番号を指定し、パケットのプロトコルを指定します。
type
の範囲は0~65535です。通常は16進数で指定します。
mask
を指定する場合は、一致を調べる前にEtherTypeに適用される
無視
ビットを入力します。
(注) アクセス リストを作成するときは、アクセス リストの末尾に暗黙的な拒否ステートメントがデフォルトで存在し、それ以前のステートメントで一致が見つからなかったすべてのパケットに適用されることに注意してください。
|
ステップ 4
|
end
|
イネーブルEXECモードに戻ります。
|
ステップ 5
|
show access-lists
[
access-list-number
|
access-list-name
]
|
設定を確認します。
|
ステップ 6
|
copy running-config startup-config
|
(任意)コンフィギュレーション ファイルに設定を保存します。
|
アクセス リストを削除するには、
no mac access-list extended
access-list-name
グローバル コンフィギュレーション コマンドを使用します。
次に、2つの許可ステートメントを含むレイヤ2のMAC ACLを作成する例を示します。最初のステートメントでは、MACアドレスが0001.0000.0001であるホストから、MACアドレスが0002.0000.0001であるホストへのトラフィックが許可されます。2番めのステートメントでは、MACアドレスが0001.0000.0002であるホストから、MACアドレスが0002.0000.0002であるホストへの、EtherTypeがXNS-IDPのトラフィックのみが許可されます。
Switch(config)# mac access-list extended maclist1 Switch(config-ext-macl)# permit 0001.0000.0001 0.0.0 0002.0000.0001 0.0.0 Switch(config-ext-macl)# permit 0001.0000.0002 0.0.0 0002.0000.0002 0.0.0 xns-idp ! (Note: all other access implicitly denied)
クラス マップによるトラフィックの分類
特定のトラフィック フロー(またはクラス)を他のすべてのトラフィックと区別して名前を付けるには、
class-map
グローバル コンフィギュレーション コマンドを使用します。クラス マップが、特定のトラフィック フローとの比較を行い、さらにそれを分類するために使用する条件を定義します。ACL、IP precedence値、DSCP値などの条件を一致(match)ステートメントに含めることができます。一致条件は、クラス マップ コンフィギュレーション モードで1つの一致ステートメントを入力することによって定義されます。
(注) classポリシーマップ コンフィギュレーション コマンドを使用し、ポリシー マップの作成中にクラス マップを作成することもできます。詳細については、「ポリシー マップによるトラフィックの分類、ポリシング、およびマーキング」を参照してください。
クラス マップを作成し、トラフィックを分類するための一致条件を定義するには、イネーブルEXECモードで次の作業を実行します。
|
|
|
ステップ 1
|
configure terminal
|
グローバル コンフィギュレーション モードを開始します。
|
ステップ 2
|
access-list
access-list-number
{
deny
|
permit
}
source
[
source-wildcard
]
または
access-list
access-list-number
{
deny
|
permit
}
protocol source
[
source-wildcard
]
destination
[
destination-wildcard
]
または
mac access-list extended
name
{
permit
|
deny
} {
host
src-MAC-addr mask
|
any
|
host
dst-MAC-addr
|
dst-MAC-addr
mask
} [
type mask
]
|
IPトラフィックの場合はIP標準ACLまたはIP拡張ACL、非IPトラフィックの場合はレイヤ2のMAC ACLを作成します。必要な回数だけこのコマンドを繰り返します。
詳細については、「ACLによるトラフィックの分類」を参照してください。
(注) アクセス リストを作成するときは、アクセス リストの末尾に暗黙的な拒否ステートメントがデフォルトで存在し、それ以前のステートメントで一致が見つからなかったすべてのパケットに適用されることに注意してください。
|
ステップ 3
|
class-map
[
match-all
|
match-any
]
class-map-name
|
クラス マップを作成し、クラス マップ コンフィギュレーション モードを開始します。
デフォルトでは、クラス マップは定義されていません。
• (任意)このクラス マップのすべての一致ステートメントに対して論理ANDを実行するには、
match-all
キーワードを使用します。この場合は、クラス マップ内のすべての一致条件と一致する必要があります。
• (任意)このクラス マップのすべての一致ステートメントに対して論理ORを実行するには、
match-any
キーワードを使用します。この場合は、1つまたは複数の一致条件と一致する必要があります。
•
class-map-name
には、クラス マップの名前を指定します。
match-all
または
match-any
のどちらのキーワードも指定しない場合、デフォルトは
match-all
です。
(注) 各クラス マップで使用できるmatchコマンドは1つのみです。このため、match-allおよびmatch-anyキーワードのどちらを指定しても機能は変わりません。
|
ステップ 4
|
match
{
access-group
acl-index-or-name
|
ip dscp
dscp-list
|
ip precedence
ip-precedence-list
}
|
トラフィックを分類する一致条件を定義します。
デフォルトで、一致条件は定義されていません。
各クラス マップで使用できる一致条件およびACLは、それぞれ1つのみです。
•
access-group
acl-index-or-name
を指定する場合は、ステップ2で作成したACLの番号または名前を指定します。
•
ip dscp
dscp-list
を指定する場合は、着信パケットと比較するIP DSCP値を8個まで入力します。各値はスペースで区切ります。指定できる範囲は0~63です。
•
ip precedence
ip-precedence-list
を指定する場合は、着信パケットと比較するIP precedence値を8個まで入力します。各値はスペースで区切ります。指定できる範囲は0~7です。
|
ステップ 5
|
end
|
イネーブルEXECモードに戻ります。
|
ステップ 6
|
show class-map
|
設定を確認します。
|
ステップ 7
|
copy running-config startup-config
|
(任意)コンフィギュレーション ファイルに設定を保存します。
|
既存のクラス マップを削除するには、
no class-map
[
match-all
|
match-any
]
class-map-name
グローバル コンフィギュレーション コマンドを使用します。一致条件を削除するには、
no match
{
access-group
acl-index-or-name
|
ip dscp
|
ip precedence
}
クラス マップ コンフィギュレーション コマンドを使用します。
次に、
class1
という名前のクラス マップを設定する例を示します。
class1
にはアクセス リスト103という一致条件が1つ設定されています。このクラス マップによって、任意のホストから任意の宛先へのトラフィック(DSCP値は10)が許可されます。
Switch(config)# access-list 103 permit any any dscp 10 Switch(config)# class-map class1 Switch(config-cmap)# match access-group 103
次に、DSCP値が10、11、12である着信トラフィックとの一致を調べる、
class2
という名前のクラス マップを作成する例を示します。
Switch(config)# class-map class2 Switch(config-cmap)# match ip dscp 10 11 12
次に、IP precedence値が5、6、7である着信トラフィックとの一致を調べる、
class3
という名前のクラス マップを作成する例を示します。
Switch(config)# class-map class3 Switch(config-cmap)# match ip precedence 5 6 7
ポリシー マップによるトラフィックの分類、ポリシング、およびマーキング
ポリシー マップは処理対象のトラフィック クラスを指定します。トラフィック クラスのCoS値、DSCP値、またはIP precedence値を信頼するアクション、トラフィック クラスに特定のDSCP値またはIP precedence値を設定するアクション、および一致した各トラフィック クラス(ポリサー)のトラフィック帯域幅の制限やトラフィックが不適合(マーキング)になったときの対処法を指定するアクションなどを指定できます。
ポリシー マップには次の特徴もあります。
•
ポリシー マップには、それぞれ異なる一致条件およびポリサーが指定された、複数のクラス ステートメントを追加することができます。
•
ポートを通じて受信されるトラフィック タイプごとに、個別のポリシー マップ クラスを設定することができます。
•
ポリシー マップの信頼状態およびポートの信頼状態はどちらか一方のみを設定することができ、最後に設定された方が有効となります。
1つの入力ポートに付加できるポリシー マップは、1つに限られます。
ポリシー マップを作成するには、イネーブルEXECモードで次の手順を実行します。
|
|
|
ステップ 1
|
configure terminal
|
グローバル コンフィギュレーション モードを開始します。
|
ステップ 2
|
class-map
[
match-all
|
match-any
]
class-map-name
|
クラス マップを作成し、クラス マップ コンフィギュレーション モードを開始します。
デフォルトでは、クラス マップは定義されていません。
• (任意)このクラス マップのすべての一致ステートメントに対して論理ANDを実行するには、
match-all
キーワードを使用します。この場合は、クラス マップ内のすべての一致条件と一致する必要があります。
• (任意)このクラス マップのすべての一致ステートメントに対して論理ORを実行するには、
match-any
キーワードを使用します。この場合は、1つまたは複数の一致条件と一致する必要があります。
•
class-map-name
には、クラス マップの名前を指定します。
match-all
または
match-any
のどちらのキーワードも指定しない場合、デフォルトは
match-all
です。
(注) 各クラス マップで使用できるmatchコマンドは1つのみです。このため、match-allおよびmatch-anyキーワードのどちらを指定しても機能は変わりません。
|
ステップ 3
|
policy-map
policy-map-name
|
ポリシー マップ名を入力してポリシー マップを作成し、ポリシー マップ コンフィギュレーション モードを開始します。
デフォルトでは、ポリシー マップは定義されていません。
ポリシー マップのデフォルトの動作では、パケットがIPパケットの場合、DSCPは0に、パケットがタグ付きの場合、CoSは0に設定されます。ポリシングは実行されません。
|
ステップ 4
|
class
class-map-name
|
トラフィック分類を定義し、ポリシー マップ クラス コンフィギュレーション モードを開始します。
デフォルトでは、ポリシー マップのクラス マップは定義されていません。
class-map
グローバル コンフィギュレーション コマンドによってトラフィック クラスがすでに定義されている場合は、このコマンドの
class-map-name
に名前を指定します。
|
ステップ 5
|
trust
[
cos
|
dscp
|
ip-precedence
]
|
CoSベースまたはDSCPベースのQoSラベルを生成するためにQoSが使用する信頼状態を設定します。
(注) このコマンドとsetコマンドの両方を、同じポリシー マップ内で設定することはできません。trustコマンドを入力する場合は、ステップ6を省略してください。
デフォルトでは、ポートはtrustedになっていません。このコマンドを入力するときにキーワードを指定しないと、デフォルトは
dscp
になります。
キーワードの意味は次のとおりです。
•
cos ―
QoSは受信されたCoS値やデフォルトのポートCoS値、およびCoS/DSCPマップを使用して、DSCP値を取得します。
•
dscp ―
QoSは入力パケットのDSCP値を使用して、DSCP値を取得します。タグ付きの非IPパケットの場合、QoSは受信されたCoS値を使用してDSCP値を取得します。タグなしの非IPパケットの場合、QoSはデフォルトのポートCoS値を使用してDSCP値を取得します。いずれの場合も、DSCP値はCoS/DSCPマップから取得されます。
•
ip-precedence ―
QoSは入力パケットのIP precedence値およびIP precedence/DSCPマップを使用して、DSCP値を取得します。タグ付きの非IPパケットの場合、QoSは受信されたCoS値を使用してDSCP値を取得します。タグなしの非IPパケットの場合、QoSはデフォルトのポートCoS値を使用してDSCP値を取得します。いずれの場合も、DSCP値はCoS/DSCPマップから取得されます。
詳細については、「CoS/DSCPマップの設定」を参照してください。
|
ステップ 6
|
set
{
ip dscp
new-dscp
|
ip precedence
new-precedence
}
|
パケットに新しい値を設定し、IPトラフィックを分類します。
•
ip dscp
new-dscp
を指定する場合は、分類されたトラフィックに割り当てる新しいDSCP値を入力します。指定できる範囲は0~63です。
•
ip precedence
new-precedence
を指定する場合は、分類されたトラフィックに割り当てる新しいIP precedence値を入力します。指定できる範囲は0~7です。
|
ステップ 7
|
police
rate-bps burst-byte
[
exceed-action
{
drop
|
policed-dscp-transmit
}]
|
分類されたトラフィックのポリサーを定義します。
デフォルトでは、ポリサーは定義されていません。サポートされているポリサー数については、「標準QoS設定時の注意事項」を参照してください。
•
rate-bps
には、平均トラフィック レートをビット/秒単位で指定します。指定できる範囲は8000~1000000000です。
•
burst-byte
には、標準バースト サイズをバイト単位で指定します。指定できる範囲は8000~1000000です。
• (任意)レートを超えた場合の対処方法を指定します。パケットを廃棄するには、
exceed-action drop
キーワードを使用します。(ポリシング設定DSCPマップを使用して)DSCP値をマークダウンし、パケットを送信するには、
exceed-action policed-dscp-transmit
キーワードを使用します。詳細については、「ポリシング設定DSCPマップの設定」
を参照してください。
|
ステップ 8
|
exit
|
ポリシー マップ コンフィギュレーション モードに戻ります。
|
ステップ 9
|
exit
|
グローバル コンフィギュレーション モードに戻ります。
|
ステップ 10
|
interface
interface-id
|
ポリシー マップに付加するポートを指定し、インターフェイス コンフィギュレーション モードを開始します。
有効なインターフェイスは物理ポートなどです。
|
ステップ 11
|
service-policy input
policy-map-name
|
ポリシーマップ名を指定し、入力ポートに適用します。
入力ポートごとに、サポートされるポリシー マップは1つのみです。
|
ステップ 12
|
end
|
イネーブルEXECモードに戻ります。
|
ステップ 13
|
show policy-map
[
policy-map-name
[
class
class-map-name
]]
|
設定を確認します。
|
ステップ 14
|
copy running-config startup-config
|
(任意)コンフィギュレーション ファイルに設定を保存します。
|
既存のポリシー マップを削除するには、
no policy-map
policy-map-name
グローバル コンフィギュレーション コマンドを使用します。既存のクラス マップを削除するには、
no class
class-map-name
ポリシー マップ コンフィギュレーション コマンドを使用します。信頼できない状態に戻すには、
no trust
ポリシーマップ コンフィギュレーション コマンドを使用します。割り当てられたDSCPまたはIP precedence値を削除するには、
no set
{
ip dscp
new-dscp
|
ip precedence
new-precedence
}
ポリシーマップ コンフィギュレーション コマンドを使用します。既存のポリサーを削除するには、
no police
rate-bps burst-byte
[
exceed-action
{
drop
|
policed-dscp-transmit
}]
ポリシー マップ コンフィギュレーション コマンドを使用します。ポリシー マップとポートの関連付けを解除するには、
no service-policy input
policy-map-name
インターフェイス コンフィギュレーション コマンドを使用します。
次に、ポリシー マップを作成し入力ポートに付加する例を示します。この設定の場合、IP標準ACLはネットワーク10.1.0.0からのトラフィックを許可します。この分類と一致するトラフィックの場合、着信パケットのDSCP値は信頼されます。一致したトラフィックが平均トラフィック レート(48000 bps)および標準バースト サイズ(8000バイト)を超えた場合、(ポリシング設定DSCPマップに基づいて)DSCPがマークダウンされて送信されます。
Switch(config)# access-list 1 permit 10.1.0.0 0.0.255.255 Switch(config)# class-map ipclass1 Switch(config-cmap)# match access-group 1 Switch(config-cmap)# exit Switch(config)# policy-map flow1t Switch(config-pmap)# class ipclass1 Switch(config-pmap-c)# trust dscp Switch(config-pmap-c)# police 48000 8000 exceed-action policed-dscp-transmit Switch(config-pmap-c)# exit Switch(config-pmap)# exit Switch(config)# interface gigabitethernet2/0/1 Switch(config-if)# service-policy input flow1t
次に、2つの許可ステートメントを指定してレイヤ2 MAC ACLを作成し、入力ポートに付加する例を示します。最初の許可ステートメントでは、MACアドレスが0001.0000.0001であるホストから、MACアドレスが0002.0000.0001であるホストへのトラフィックが許可されます。2番めの許可ステートメントでは、MACアドレスが0001.0000.0002であるホストから、MACアドレスが0002.0000.0002であるホストへの、EtherTypeがXNS-IDPのトラフィックのみが許可されます。
Switch(config)# mac access-list extended maclist1 Switch(config-ext-mac)# permit 0001.0000.0001 0.0.0 0002.0000.0001 0.0.0 Switch(config-ext-mac)# permit 0001.0000.0002 0.0.0 0002.0000.0002 0.0.0 xns-idp Switch(config-ext-mac)# exit Switch(config)# mac access-list extended maclist2 Switch(config-ext-mac)# permit 0001.0000.0003 0.0.0 0002.0000.0003 0.0.0 Switch(config-ext-mac)# permit 0001.0000.0004 0.0.0 0002.0000.0004 0.0.0 aarp Switch(config-ext-mac)# exit Switch(config)# class-map macclass1 Switch(config-cmap)# match access-group maclist1 Switch(config-cmap)# exit Switch(config)# policy-map macpolicy1 Switch(config-pmap)# class macclass1 Switch(config-pmap-c)# set ip dscp 63 Switch(config-pmap-c)# exit Switch(config-pmap)# class macclass2 maclist2 Switch(config-pmap-c)# set ip dscp 45 Switch(config-pmap-c)# exit Switch(config-pmap)# exit Switch(config)# interface gigabitethernet1/0/1 Switch(config-if)# mls qos trust cos Switch(config-if)# service-policy input macpolicy1
集約ポリサーによるトラフィックの分類、ポリシング、およびマーキング
集約ポリサーを使用すると、同じポリシー マップ内の複数のトラフィック クラスで共有されるポリサーを作成できます。ただし、集約ポリサーを複数の異なるポリシー マップまたはポートには使用できません。
集約ポリサーを作成するには、イネーブルEXECモードで次の手順を実行します。
|
|
|
ステップ 1
|
configure terminal
|
グローバル コンフィギュレーション モードを開始します。
|
ステップ 2
|
mls qos aggregate-policer
aggregate-policer-name rate-bps burst-byte
exceed-action
{
drop
|
policed-dscp-transmit
}
|
同じポリシー マップ内の複数のトラフィック クラスに適用できるポリサー パラメータを定義します。
デフォルトで、集約ポリサーは定義されていません。サポートされているポリサー数については、「標準QoS設定時の注意事項」を参照してください。
•
aggregate-policer-name
には、集約ポリサーの名前を指定します。
•
rate-bps
には、平均トラフィック レートをビット/秒単位で指定します。指定できる範囲は8000~1000000000です。
•
burst-byte
には、標準バースト サイズをバイト単位で指定します。指定できる範囲は8000~1000000です。
• レートを超過した場合の対処方法を指定します。パケットを廃棄するには、
exceed-action drop
キーワードを使用します。(ポリシング設定DSCPマップを使用して)DSCP値をマークダウンし、パケットを送信するには、
exceed-action policed-dscp-transmit
キーワードを使用します。詳細については、「ポリシング設定DSCPマップの設定」
を参照してください。
|
ステップ 3
|
class-map
[
match-all
|
match-any
]
class-map-name
|
必要に応じて、トラフィックを分類するクラス マップを作成します。詳細については、「クラス マップによるトラフィックの分類」を参照してください。
|
ステップ 4
|
policy-map
policy-map-name
|
ポリシー マップ名を入力してポリシー マップを作成し、ポリシー マップ コンフィギュレーション モードを開始します。
詳細については、「ポリシー マップによるトラフィックの分類、ポリシング、およびマーキング」を参照してください。
|
ステップ 5
|
class
class-map-name
|
トラフィック分類を定義し、ポリシー マップ クラス コンフィギュレーション モードを開始します。
詳細については、「ポリシー マップによるトラフィックの分類、ポリシング、およびマーキング」を参照してください。
|
ステップ 6
|
police aggregate
aggregate-policer-name
|
同じポリシー マップの複数のクラスに集約ポリサーを適用します。
aggregate-policer-name
には、ステップ2で指定した名前を入力します。
|
ステップ 7
|
exit
|
グローバル コンフィギュレーション モードに戻ります。
|
ステップ 8
|
interface
interface-id
|
ポリシー マップに付加するポートを指定し、インターフェイス コンフィギュレーション モードを開始します。
有効なインターフェイスは物理ポートなどです。
|
ステップ 9
|
service-policy input
policy-map-name
|
ポリシーマップ名を指定し、入力ポートに適用します。
入力ポートごとに、サポートされるポリシー マップは1つのみです。
|
ステップ 10
|
end
|
イネーブルEXECモードに戻ります。
|
ステップ 11
|
show mls qos aggregate-policer
[
aggregate-policer-name
]
|
設定を確認します。
|
ステップ 12
|
copy running-config startup-config
|
(任意)コンフィギュレーション ファイルに設定を保存します。
|
指定した集約ポリサーをポリシー マップから削除するには、
no police aggregate
aggregate-policer-name
ポリシー マップ コンフィギュレーション モードを使用します。集約ポリサーおよびそのパラメータを削除するには、
no mls qos aggregate-policer
aggregate-policer-name
グローバル コンフィギュレーション コマンドを使用します。
次に、集約ポリサーを作成し、ポリシー マップ内の複数のクラスに付加する例を示します。この設定で、IP ACLはネットワーク10.1.0.0およびホスト11.3.1.1からのトラフィックを許可します。ネットワーク10.1.0.0からのトラフィックの場合、着信パケットのDSCPは信頼されます。ホスト11.3.1.1からのトラフィックの場合、パケットのDSCPは56に変更されます。ネットワーク10.1.0.0およびホスト11.3.1.1からのトラフィック レートには、ポリシーが設定されます。トラフィックが平均 レート(48000 bps)および標準バースト サイズ(8000バイト)を超えた場合、(ポリシング設定DSCPマップに基づいて)DSCPがマークダウンされて転送されます。ポリシー マップは入力ポートに付加されます。
Switch(config)# access-list 1 permit 10.1.0.0 0.0.255.255 Switch(config)# access-list 2 permit 11.3.1.1 Switch(config)# mls qos aggregate-police transmit1 48000 8000 exceed-action policed-dscp-transmit Switch(config)# class-map ipclass1 Switch(config-cmap)# match access-group 1 Switch(config-cmap)# exit Switch(config)# class-map ipclass2 Switch(config-cmap)# match access-group 2 Switch(config-cmap)# exit Switch(config)# policy-map aggflow1 Switch(config-pmap)# class ipclass1 Switch(config-pmap-c)# trust dscp Switch(config-pmap-c)# police aggregate transmit1 Switch(config-pmap-c)# exit Switch(config-pmap)# class ipclass2 Switch(config-pmap-c)# set ip dscp 56 Switch(config-pmap-c)# police aggregate transmit1 Switch(config-pmap-c)# exit Switch(config-pmap)# exit Switch(config)# interface gigabitethernet2/0/1 Switch(config-if)# service-policy input aggflow1
CoS/DSCPマップの設定
着信パケットのCoS値を、トラフィックのプライオリティを表すためにQoSで内部的に使用されるDSCP値にマッピングするには、CoS/DSCPマップを使用します。
表 29-12
にデフォルトのCoS/DSCPマップを示します。
表 29-12 デフォルトのCoS/DSCPマップ
CoS値
|
0
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
DSCP値
|
0
|
8
|
16
|
24
|
32
|
40
|
48
|
56
|
これらの値がネットワークに適さない場合は、変更する必要があります。
CoS/DSCPマップを変更するには、イネーブルEXECモードで次の手順を実行します。この手順は任意です。
|
|
|
ステップ 1
|
configure terminal
|
グローバル コンフィギュレーション モードを開始します。
|
ステップ 2
|
mls qos map cos-dscp
dscp1...dscp8
|
CoS/DSCPマップを変更します。
dscp1...dscp8
には、CoS値0~7に対応する8つのDSCP値を入力します。各DSCP値はスペースで区切ります。
DSCPの範囲は0~63です。
|
ステップ 3
|
end
|
イネーブルEXECモードに戻ります。
|
ステップ 4
|
show mls qos maps cos-dscp
|
設定を確認します。
|
ステップ 5
|
copy running-config startup-config
|
(任意)コンフィギュレーション ファイルに設定を保存します。
|
デフォルトのマップに戻すには、
no mls qos cos-dscp
グローバル コンフィギュレーション コマンドを使用します。
次に、CoS/DSCPマップを変更して表示する例を示します。
Switch(config)# mls qos map cos-dscp 10 15 20 25 30 35 40 45 Switch# show mls qos maps cos-dscp -------------------------------- dscp: 10 15 20 25 30 35 40 45
IP Precedence/DSCPマップの設定
着信パケットのIP precedence値を、トラフィックのプライオリティを表すためにQoSで内部的に使用されるDSCP値にマッピングするには、IP precedence/DSCPマップを使用します。
表 29-13
に、デフォルトのIP precedence/DSCPマップを示します。
表 29-13 デフォルトのIP Precedence/DSCPマップ
IP precedence値
|
0
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
DSCP値
|
0
|
8
|
16
|
24
|
32
|
40
|
48
|
56
|
これらの値がネットワークに適さない場合は、変更する必要があります。
IP precedence/DSCPマップを変更するには、イネーブルEXECモードで次の手順を実行します。この手順は任意です。
|
|
|
ステップ 1
|
configure terminal
|
グローバル コンフィギュレーション モードを開始します。
|
ステップ 2
|
mls qos map ip-prec-dscp
dscp1...dscp8
|
IP precedence/DSCPマップを変更します。
dscp1...dscp8
には、IP precedence値0~7に対応する8つのDSCP値を入力します。各DSCP値はスペースで区切ります。
DSCPの範囲は0~63です。
|
ステップ 3
|
end
|
イネーブルEXECモードに戻ります。
|
ステップ 4
|
show mls qos maps ip-prec-dscp
|
設定を確認します。
|
ステップ 5
|
copy running-config startup-config
|
(任意)コンフィギュレーション ファイルに設定を保存します。
|
デフォルトのマップに戻すには、
no mls qos ip-prec-dscp
グローバル コンフィギュレーション コマンドを使用します。
次に、IP precedence/DSCPマップを変更して表示する例を示します。
Switch(config)# mls qos map ip-prec-dscp 10 15 20 25 30 35 40 45 Switch# show mls qos maps ip-prec-dscp -------------------------------- dscp: 10 15 20 25 30 35 40 45
ポリシング設定DSCPマップの設定
ポリシングおよびマーキング アクションによって得られる新しい値にDSCP値をマークダウンするには、ポリシング設定DSCPマップを使用します。
デフォルトのポリシング設定DSCPマップは、着信したDSCP値を同じDSCP値にマッピングする空のマップです。
ポリシング設定DSCPマップを変更するには、イネーブルEXECモードで次の手順を実行します。この手順は任意です。
|
|
|
ステップ 1
|
configure terminal
|
グローバル コンフィギュレーション モードを開始します。
|
ステップ 2
|
mls qos map policed-dscp
dscp-list
to
mark-down-dscp
|
ポリシング設定DSCPマップを変更します。
•
dscp-list
には、最大8個のDSCP値をスペースで区切って入力します。次に
to
キーワードを入力します。
•
mark-down-dscp
には、対応するポリシング設定(マークダウンされる)DSCP値を入力します。
|
ステップ 3
|
end
|
イネーブルEXECモードに戻ります。
|
ステップ 4
|
show mls qos maps policed-dscp
|
設定を確認します。
|
ステップ 5
|
copy running-config startup-config
|
(任意)コンフィギュレーション ファイルに設定を保存します。
|
デフォルト マップに戻すには、
no mls qos policed-dscp
グローバル コンフィギュレーション コマンドを使用します。
次に、DSCP 50~57を、マークダウンされるDSCP値0にマッピングする例を示します。
Switch(config)# mls qos map policed-dscp 50 51 52 53 54 55 56 57 to 0 Switch# show mls qos maps policed-dscp d1 : d2 0 1 2 3 4 5 6 7 8 9 --------------------------------------- 0 : 00 01 02 03 04 05 06 07 08 09 1 : 10 11 12 13 14 15 16 17 18 19 2 : 20 21 22 23 24 25 26 27 28 29 3 : 30 31 32 33 34 35 36 37 38 39 4 : 40 41 42 43 44 45 46 47 48 49 5 : 00 00 00 00 00 00 00 00 58 59
(注) このポリシング設定DSCPマップでは、マークダウンされるDSCP値が表形式で示されています。d1列は元のDSCPの最上位桁、d2行は元のDSCPの最下位桁を示します。d1とd2の交点にある値が、マークダウンされる値です。たとえば、元のDSCP値が53の場合、マークダウンされるDSCP値は0です。
DSCP/CoSマップの設定
4つの出力キューの1つを選択するために使用されるCoS値を生成するには、DSCP/CoSマップを使用します。
表 29-14
にデフォルトのDSCP/CoSマップを示します。
表 29-14 デフォルトのDSCP/CoSマップ
DSCP値
|
0~7
|
8~15
|
16~23
|
24~31
|
32~39
|
40~47
|
48~55
|
56~63
|
CoS値
|
0
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
これらの値がネットワークに適さない場合は、変更する必要があります。
DSCP/CoSマップを変更するには、イネーブルEXECモードで次の手順を実行します。この手順は任意です。
|
|
|
ステップ 1
|
configure terminal
|
グローバル コンフィギュレーション モードを開始します。
|
ステップ 2
|
mls qos map dscp-cos
dscp-list
to
cos
|
DSCP/CoSマップを変更します。
•
dscp-list
には、最大8個のDSCP値をスペースで区切って入力します。次に
to
キーワードを入力します。
•
cos
には、DSCP値に対応するCoS値を入力します。
DSCPの範囲は0~63、CoSの範囲は0~7です。
|
ステップ 3
|
end
|
イネーブルEXECモードに戻ります。
|
ステップ 4
|
show mls qos maps dscp-to-cos
|
設定を確認します。
|
ステップ 5
|
copy running-config startup-config
|
(任意)コンフィギュレーション ファイルに設定を保存します。
|
デフォルトのマップに戻すには、
no mls qos dscp-cos
グローバル コンフィギュレーション コマンドを使用します。
次にDSCP値0、8、16、24、32、40、48、および50をCoS値0にマッピングして、マップを表示する例を示します。
Switch(config)# mls qos map dscp-cos 0 8 16 24 32 40 48 50 to 0 Switch# show mls qos maps dscp-cos d1 : d2 0 1 2 3 4 5 6 7 8 9 --------------------------------------- 0 : 00 00 00 00 00 00 00 00 00 01 1 : 01 01 01 01 01 01 00 02 02 02 2 : 02 02 02 02 00 03 03 03 03 03 3 : 03 03 00 04 04 04 04 04 04 04 4 : 00 05 05 05 05 05 05 05 00 06 5 : 00 06 06 06 06 06 07 07 07 07
(注) 上記のDSCP/CoSマップでは、CoS値が表形式で示されています。d1列はDSCPの最上位桁、d2行はDSCPの最下位桁を示します。d1とd2の交点にある値がCoS値です。たとえば、このDSCP/CoSマップでは、DSCP値が8の場合、対応するCoS値は0です。
DSCP/DSCP変換マップの設定
2つのQoSドメインで異なるDSCP定義が使用されている場合は、他のドメイン内での定義に合わせて一連のDSCP値を変換するDSCP/DSCP変換マップを使用します。DSCP/DSCP変換マップは、QoS管理ドメインの境界にある受信ポートに適用されます(入力変換)。
入力変換により、パケットのDSCP値が新しいDSCP値で上書きされ、QoSはこの新しい値を使用してパケットを処理します。スイッチは新しいDSCP値を使用して、ポートからパケットを送信します。
1つの入力ポートに複数のDSCP/DSCP変換マップを設定できます。デフォルトのDSCP/DSCP変換マップは、着信したDSCP値を同じDSCP値にマッピングする空のマップです。
DSCP/DSCP変換マップを変更するには、イネーブルEXECモードで次の手順を実行します。この手順は任意です。
|
|
|
ステップ 1
|
configure terminal
|
グローバル コンフィギュレーション モードを開始します。
|
ステップ 2
|
mls qos map dscp-mutation
dscp-mutation-name in-dscp
to
out-dscp
|
DSCP/DSCP変換マップを変更します。
•
dscp-mutation-name
には、変換マップ名を入力します。新しい名前を指定することにより、複数のマップを作成できます。
•
in-dscp
には、最大8つのDSCP値をスペースで区切って入力します。次に
to
キーワードを入力します。
•
out-dscp
には、DSCP値を1つ入力します。
DSCPの範囲は0~63です。
|
ステップ 3
|
interface
interface-id
|
マップに付加するポートを指定し、インターフェイス コンフィギュレーション モードを開始します。
有効なインターフェイスは物理ポートなどです。
|
ステップ 4
|
mls qos trust dscp
|
DSCPを信頼する状態のポートとして、入力ポートを設定します。デフォルトでは、ポートはtrustedになっていません。
|
ステップ 5
|
mls qos dscp-mutation
dscp-mutation-name
|
DSCPを信頼する状態の指定の入力ポートにマップを適用します。
dscp-mutation-name
には、ステップ2で指定された変換マップ名を入力します。
|
ステップ 6
|
end
|
イネーブルEXECモードに戻ります。
|
ステップ 7
|
show mls qos maps dscp-mutation
|
設定を確認します。
|
ステップ 8
|
copy running-config startup-config
|
(任意)コンフィギュレーション ファイルに設定を保存します。
|
デフォルトのマップに戻すには、
no mls qos dscp-mutation
dscp-mutation-name
グローバル コンフィギュレーション コマンドを使用します。
次に、DSCP/DSCP変換マップを定義する例を示します。明示的に設定されていないすべてのエントリは変更されません(空のマップで指定された値のままです)。
Switch(config)# mls qos map dscp-mutation mutation1 1 2 3 4 5 6 7 to 0 Switch(config)# mls qos map dscp-mutation mutation1 8 9 10 11 12 13 to 10 Switch(config)# mls qos map dscp-mutation mutation1 20 21 22 to 20 Switch(config)# mls qos map dscp-mutation mutation1 30 31 32 33 34 to 30 Switch(config)# interface gigabitethernet1/0/1 Switch(config-if)# mls qos trust dscp Switch(config-if)# mls qos dscp-mutation mutation1 Switch# show mls qos maps dscp-mutation mutation1 d1 : d2 0 1 2 3 4 5 6 7 8 9 --------------------------------------- 0 : 00 00 00 00 00 00 00 00 10 10 1 : 10 10 10 10 14 15 16 17 18 19 2 : 20 20 20 23 24 25 26 27 28 29 3 : 30 30 30 30 30 35 36 37 38 39 4 : 40 41 42 43 44 45 46 47 48 49 5 : 50 51 52 53 54 55 56 57 58 59
(注) 上記のDSCP/DSCP変換マップでは、変換される値が表形式で示されています。d1列は元のDSCPの最上位桁、d2行は元のDSCPの最下位桁を示します。d1とd2の交点の値が、変換値です。たとえば、DSCP値が12の場合、対応する変換値は10です。
入力キューへのDSCPまたはCoS値のマッピングおよびWTDスレッシュホールドの設定
トラフィックにプライオリティを設定するには、特定のDSCPまたはCoSを持つパケットを特定のキューに格納し、より低いプライオリティを持つパケットが廃棄されるようにキューのスレッシュホールドを調整します。
DSCPまたはCoS値を入力キューにマッピングして、WTDスレッシュホールドを設定するには、イネーブルEXECモードで次の手順を実行します。この手順は任意です。
|
|
|
ステップ 1
|
configure terminal
|
グローバル コンフィギュレーション モードを開始します。
|
ステップ 2
|
mls qos srr-queue input dscp-map queue
queue-id
threshold
threshold-id dscp1...dscp8
または
mls qos srr-queue input cos-map queue
queue-id
threshold
threshold-id cos1...cos8
|
DSCPまたはCoS値を入力キューおよびスレッシュホールドIDにマッピングします。
デフォルトでは、DSCP値0~39および48~63はキュー1およびスレッシュホールド1にマッピングされます。DSCP値40~47はキュー2およびスレッシュホールド1にマッピングされます。
デフォルトでは、CoS値0~4、6、および7はキュー1およびスレッシュホールド1にマッピングされます。CoS値5はキュー2およびスレッシュホールド1にマッピングされます。
•
queue-id
には、1~2を使用します。
•
threshold-id
には、1~3を使用します。スレッシュホールド3の廃棄スレッシュホールドは定義済みであり、キューフル ステートに設定されます。
•
dscp1...dscp8
には、8つまでの値を、それぞれスペースで区切って入力します。指定できる範囲は0~63です。
•
cos1...cos8
には、8つまでの値を、それぞれスペースで区切って入力します。指定できる範囲は0~7です。
|
ステップ 3
|
mls qos srr-queue input threshold
queue-id threshold-percentage1 threshold-percentage2
|
入力キューに2つのWTDスレッシュホールド(スレッシュホールド1および2用)を割り当てます。デフォルトでは、両方のスレッシュホールドが100%に設定されます。
•
queue-id
には、1~2を使用します。
•
threshold-percentage1 threshold-percentage2
には、1~100を使用します。各値はスペースで区切ります。
各スレッシュホールド値は、キューに割り当てられたキュー記述子の総数の割合です。
|
ステップ 4
|
end
|
イネーブルEXECモードに戻ります。
|
ステップ 5
|
show mls qos maps
|
設定を確認します。
DSCP入力キュー スレッシュホールド マップは、表形式で表示されます。d1列はDSCP値の最上位桁、d2行はDSCP値の最下位桁を示します。d1およびd2値の交点がキューIDおよびスレッシュホールドIDです。たとえば、キュー2およびスレッシュホールド1(02-01)のようになります。
CoS入力キュー スレッシュホールド マップでは、先頭行にCoS値、および2番めの行に対応するキューIDおよびスレッシュホールドIDが示されます。たとえば、キュー2およびスレッシュホールド2(2-2)のようになります。
|
ステップ 6
|
copy running-config startup-config
|
(任意)コンフィギュレーション ファイルに設定を保存します。
|
デフォルトのCoS入力キュー スレッシュホールド マップまたはデフォルトのDSCP入力キュー スレッシュホールド マップに戻すには、
no mls qos srr-queue input cos-map
または
no mls qos srr-queue input dscp-map
グローバル コンフィギュレーション コマンドを使用します。デフォルトのWTDスレッシュホールドに戻すには、
no mls qos srr-queue input threshold
queue-id
グローバル コンフィギュレーション コマンドを使用します。
次に、DSCP値0~6を入力キュー1およびスレッシュホールド1(廃棄スレッシュホールドが50%)にマッピングする例を示します。DSCP値20~26は、入力キュー1およびスレッシュホールド2(廃棄スレッシュホールドが70%)にマッピングされます。
Switch(config)# mls qos srr-queue input dscp-map queue 1 threshold 1 0 1 2 3 4 5 6 Switch(config)# mls qos srr-queue input dscp-map queue 1 threshold 2 20 21 22 23 24 25 26 Switch(config)# mls qos srr-queue input threshold 1 50 70
次に、50%のWTDスレッシュホールドにDSCP値(0~6)を割り当てて、70%のWTDスレッシュホールドに割り当てられたDSCP値(20~26)よりも先に廃棄されるように設定する例を示します。
各入力キューのバッファ スペースの割り当て
2つのキューで入力バッファを分割する比率を定義します(バッファ スペース量を割り当てます)。バッファ割り当てと帯域幅割り当てにより、パケットを廃棄する前にバッファに格納できるデータ量が決まります。
各入力キューにバッファを割り当てるには、イネーブルEXECモードで次の手順を実行します。この手順は任意です。
|
|
|
ステップ 1
|
configure terminal
|
グローバル コンフィギュレーション モードを開始します。
|
ステップ 2
|
mls qos srr-queue input buffers
percentage1 percentage2
|
各入力キューにバッファを割り当てます。
デフォルトでは、バッファの90%がキュー1に、残りの10%がキュー2に割り当てられます。
percentage1 percentage2
の範囲は、0~100です。各値はスペースで区切ります。
キューが着信バースト トラフィックをすべて処理できるように、バッファを割り当てる必要があります。
|
ステップ 3
|
end
|
イネーブルEXECモードに戻ります。
|
ステップ 4
|
show mls qos interface buffer
または
show mls qos input-queue
|
設定を確認します。
|
ステップ 5
|
copy running-config startup-config
|
(任意)コンフィギュレーション ファイルに設定を保存します。
|
デフォルト設定に戻すには、
no mls qos srr-queue input buffers
グローバル コンフィギュレーション コマンドを使用します。
次に、バッファ スペースの60%を入力キュー1に、40%を入力キュー2に割り当てる例を示します。
Switch(config)# mls qos srr-queue input buffers 60 40
各入力キューの帯域幅の割り当て
各入力キューに割り当てる使用可能な帯域幅の比率を指定する必要があります。ウェイトの比率は、SRRスケジューラが各キューからパケットを送信する頻度の比率です。帯域幅割り当てとバッファ割り当てにより、パケットを廃棄する前にバッファに格納できるデータ量が決まります。入力キューでSRRが動作するのは、共有モードの場合のみです。
各入力キューに帯域幅を割り当てるには、イネーブルEXECモードで次の手順を実行します。この手順は任意です。
|
|
|
ステップ 1
|
configure terminal
|
グローバル コンフィギュレーション モードを開始します。
|
ステップ 2
|
mls qos srr-queue input bandwidth
weight1 weight2
|
入力キューに共有ラウンド ロビン ウェイトを割り当てます。
weight1
および
weight2
のデフォルト設定は4です(帯域幅の1/2が2つのキューで均等に共有されます)。
weight1
および
weight2
の範囲は、1~100です。各値はスペースで区切ります。
SRRは
mls qos srr-queue input priority-queue
queue-id
bandwidth
weight
グローバル コンフィギュレーション コマンドの
bandwidth
キーワードで指定された設定済みウェイトに従って、プライオリティ キューを処理します。その後、SRRは残りの帯域幅を両方の入力キューで共有し、mls qos srr-queue input bandwidth
weight1 weight2
グローバル コンフィギュレーション コマンドによって設定されたウェイトに従い、入力キューを処理します。詳細については、「入力プライオリティ キューの設定」を参照してください。
|
ステップ 3
|
end
|
イネーブルEXECモードに戻ります。
|
ステップ 4
|
show mls qos interface queueing
または
show mls qos input-queue
|
設定を確認します。
|
ステップ 5
|
copy running-config startup-config
|
(任意)コンフィギュレーション ファイルに設定を保存します。
|
デフォルト設定に戻すには、
no mls qos srr-queue input bandwidth
グローバル コンフィギュレーション コマンドを使用します。
次に、入力帯域幅をキューに割り当てる例を示します。プライオリティ キューはディセーブルです。キュー1に割り当てられた共有帯域幅の比率は25/(25+75)、キュー2の比率は75/(25+75)です。
Switch(config)# mls qos srr-queue input priority-queue 2 bandwidth 0 Switch(config)# mls qos srr-queue input bandwidth 25 75
入力プライオリティ キューの設定
プライオリティ キューは、迅速な処理が必要なトラフィック(遅延およびジッタを最小にしなければならない音声トラフィックなど)にのみ使用する必要があります。
プライオリティ キューは、オーバーサブスクライブ リングに激しいネットワーク トラフィックが発生している状況で(バックプレーンが伝達できるトラフィックよりも多くのトラフィックが発生し、キューが一杯になって、フレームが廃棄されている場合)、遅延およびジッタを軽減するために保証されている帯域幅の一部です。
SRRは
mls qos srr-queue input priority-queue
queue-id
bandwidth
weight
グローバル コンフィギュレーション コマンドの
bandwidth
キーワードで指定された設定済みウェイトに従って、プライオリティ キューを処理します。その後、SRRは残りの帯域幅を両方の入力キューで共有し、mls qos srr-queue input bandwidth
weight1 weight2
グローバル コンフィギュレーション コマンドによって設定されたウェイトに従い、入力キューを処理します。
プライオリティ キューを設定するには、イネーブルEXECモードで次の手順を実行します。この手順は任意です。
|
|
|
ステップ 1
|
configure terminal
|
グローバル コンフィギュレーション モードを開始します。
|
ステップ 2
|
mls qos srr-queue input priority-queue
queue-id
bandwidth
weight
|
キューをプライオリティ キューとして割り当て、スタック リングが輻輳している場合にリングの帯域幅を保証します。
デフォルトのプライオリティ キューはキュー2です。このキューには帯域幅の10%が割り当てられています。
•
queue-id
には、1~2を使用します。
•
bandwidth
weight
には、スタック リングの帯域幅に対する割合を割り当てます。指定できる範囲は0~40です。値が大きい場合はリング全体に影響が及び、スタックのパフォーマンスが低下することがあるため、保証できる帯域幅は制限されています。
|
ステップ 3
|
end
|
イネーブルEXECモードに戻ります。
|
ステップ 4
|
show mls qos interface queueing
または
show mls qos input-queue
|
設定を確認します。
|
ステップ 5
|
copy running-config startup-config
|
(任意)コンフィギュレーション ファイルに設定を保存します。
|
デフォルト設定に戻すには、
no mls qos srr-queue input priority-queue
queue-id
グローバル コンフィギュレーション コマンドを使用します。プライオリティ キューイングをディセーブルにするには、帯域幅のウェイトを0に設定します。たとえば、
mls qos srr-queue input priority-queue
queue-id
bandwidth 0
を入力します。
次に、入力帯域幅をキューに割り当てる例を示します。キュー1は、帯域幅の10%が割り当てられているプライオリティ キューです。キュー1および2に割り当てられている帯域幅比率は4/(4+4)です。SRRは10%の帯域幅が設定されたキュー1(プライオリティ キュー)を最初に処理します。次に、SRRは残りの90%の帯域幅をキュー1と2にそれぞれ45%ずつ割り当てて、各キューで均等に共有します。
Switch(config)# mls qos srr-queue input priority-queue 1 bandwidth 10 Switch(config)# mls qos srr-queue input bandwidth 4 4
設定時の注意事項
緊急キューがイネーブルの場合、またはSRRウェイトに基づいて出力キューが処理される場合は、次の注意事項に従ってください。
•
出力緊急キューがイネーブルの場合、キュー1のSRRシェーピング ウェイトおよび共有ウェイトは上書きされます。
•
出力緊急キューがディセーブルで、SRRシェーピング ウェイトおよび共有ウェイトが設定されている場合、キュー1の共有モードは、シェーピング モードにより上書きされ、SRRはこのキューをシェーピング モードで処理します。
•
出力緊急キューがディセーブルで、SRRシェーピング ウェイトが設定されていない場合、SRRはこのキューを共有モードで処理します。
出力キューセットに対するバッファ スペースの割り当ておよびWTDスレッシュホールドの設定
バッファのアベイラビリティの保証、WTDスレッシュホールドの設定、およびキューセットの最大メモリ割り当ての設定を行うには、
mls qos queue-set output
qset-id
threshold
queue-id
drop-threshold1 drop-threshold2 reserved-threshold maximum-threshold
グローバル コンフィギュレーション コマンドを使用します。
各スレッシュホールド値はキューに割り当てられたメモリの割合です。この値を指定するには、
mls qos queue-set output
qset-id
buffers
allocation1 ... allocation4
グローバル コンフィギュレーション コマンドを使用します。キューはWTDを使用して、トラフィック クラスごとに異なる廃棄割合をサポートをします。
(注) ほとんどの場合は、出力キューのデフォルト設定が最適です。デフォルト設定の変更が必要となるのは、出力キューについて完全に理解している場合、およびこれらの設定がご使用のQoSソリューションを満たしていない場合のみです。
キューセットのメモリ割り当ておよび廃棄スレッシュホールドを設定するには、イネーブルEXECモードで次の手順を実行します。この手順は任意です。
|
|
|
ステップ 1
|
configure terminal
|
グローバル コンフィギュレーション モードを開始します。
|
ステップ 2
|
mls qos queue-set output
qset-id
buffers
allocation1 ... allocation4
|
キューセットにバッファを割り当てます。
デフォルトでは、すべての割り当て値は4つのキューに均等にマッピングされます(25、25、25、25)。各キューにはバッファ スペースの1/4が割り当てられます。
•
qset-id
には、キューセットのIDを入力します。指定できる範囲は1~2です。各ポートはキューセットに属し、キューセットでは、ポートごとに4つの出力キューの特性がすべて定義されます。
•
allocation1 ... allocation4
には、キューセット内のキューごとに1つずつ、合計4つの割合を指定します。指定できる範囲は、0~100です。各値はスペースで区切ります。
トラフィックの重要性に従ってバッファを割り当てます。たとえば、プライオリティが最も高いトラフィックを格納するキューに、より多くのバッファが割り当てられます。
|
ステップ 3
|
mls qos queue-set output
qset-id
threshold
queue-id drop-threshold1 drop-threshold2 reserved-threshold maximum-threshold
|
WTDスレッシュホールドを設定し、バッファのアベイラビリティを保証し、キューセット(ポートごとに4つの出力キュー)の最大メモリ割り当てを設定します。
デフォルトでは、キュー1、3、および4のWTDスレッシュホールドは100%に設定されています。キュー2のWTDスレッシュホールドは50%に設定されています。キュー1、3、および4の専用スレッシュホールドは50%に設定されています。キュー2の専用スレッシュホールドは100%に設定されています。すべてのキューの最大スレッシュホールドは400%に設定されています。
•
qset-id
には、ステップ2で指定したキューセットのIDを入力します。指定できる範囲は1~2です。
•
queue-id
には、コマンドの実行対象となるキューセット内の特定のキューを入力します。指定できる範囲は1~4です。
•
drop-threshold1 drop-threshold2
には、キューに割り当てられたメモリの割合として表される2つのWTDスレッシュホールドを指定します。指定できる範囲は1~400%です。
•
reserved-threshold
には、割り当てメモリの割合として表されるキューの保証(専用)メモリ サイズを入力します。指定できる範囲は1~100%です。
•
maximum-threshold
を指定すると、キューがいっぱいになった場合でも、確保量を超えるバッファの取得を可能にすることができます。この値は、共通プールが空でない場合に、パケットが廃棄されるまでキューが使用できるメモリの最大値です。指定できる範囲は1~400%です。
|
ステップ 4
|
interface
interface-id
|
発信トラフィックのポートを指定し、インターフェイス コンフィギュレーション モードを開始します。
|
ステップ 5
|
queue-set
qset-id
|
キューセットにポートをマッピングします。
qset-id
には、ステップ2で指定したキューセットのIDを入力します。指定できる範囲は1~2です。デフォルトは1です。
|
ステップ 6
|
end
|
イネーブルEXECモードに戻ります。
|
ステップ 7
|
show mls qos interface
[
interface-id
]
buffers
|
設定を確認します。
|
ステップ 8
|
copy running-config startup-config
|
(任意)コンフィギュレーション ファイルに設定を保存します。
|
デフォルト設定に戻すには、
no mls qos queue-set output
qset-id
buffers
グローバル コンフィギュレーション コマンドを使用します。デフォルトのWTDスレッシュホールドの割合に戻すには、
no mls qos queue-set output
qset-id
threshold
[
queue-id
]
グローバル コンフィギュレーション コマンドを使用します。
次に、ポートをキューセット2にマッピングする例を示します。出力キュー1にはバッファ スペースの40%、出力キュー2、3、および4には20%が割り当てられます。キュー2の廃棄スレッシュホールドは割り当てメモリの40および60%に設定され、割り当てメモリの100%が保証され、パケットが廃棄されるまでにこのキューが使用できる最大メモリが200%に設定されます。
Switch(config)# mls qos queue-set output 2 buffers 40 20 20 20 Switch(config)# mls qos queue-set output 2 threshold 2 40 60 100 200 Switch(config)# interface gigabitethernet1/0/1 Switch(config-if)# queue-set 2
出力キューおよびスレッシュホールドIDへのDSCPまたはCoS値のマッピング
トラフィックにプライオリティを設定するには、特定のDSCPまたはサービス コストを持つパケットを特定のキューに格納し、より低いプライオリティを持つパケットが廃棄されるようにキューのスレッシュホールドを調整します。
(注) ほとんどの場合は、出力キューのデフォルト設定が最適です。デフォルト設定の変更が必要となるのは、出力キューについて完全に理解している場合、およびこれらの設定がご使用のQoSソリューションを満たしていない場合のみです。
DSCPまたはCoS値を出力キューおよびスレッシュホールドIDにマッピングするには、イネーブルEXECモードで次の手順を実行します。この手順は任意です。
|
|
|
ステップ 1
|
configure terminal
|
グローバル コンフィギュレーション モードを開始します。
|
ステップ 2
|
mls qos srr-queue output dscp-map queue
queue-id
threshold
threshold-id dscp1...dscp8
または
mls qos srr-queue output cos-map queue
queue-id
threshold
threshold-id cos1...cos8
|
DSCPまたはCoS値を出力キューおよびスレッシュホールドIDにマッピングします。
デフォルトでは、DSCP値0~15はキュー2およびスレッシュホールド1に、DSCP値16~31はキュー3およびスレッシュホールド1に、DSCP値32~39および48~63はキュー4およびスレッシュホールド1に、DSCP値40~47はキュー1およびスレッシュホールド1にマッピングされます。
デフォルトでは、CoS値0および1はキュー2およびスレッシュホールド1に、CoS値2および3はキュー3およびスレッシュホールド1に、CoS値4、6、および7はキュー4およびスレッシュホールド1に、CoS値5はキュー1およびスレッシュホールド1にマッピングされます。
•
queue-id
には、1~4を使用します。
•
threshold-id
には、1~3を使用します。スレッシュホールド3の廃棄スレッシュホールドは定義済みであり、キューフル ステートに設定されます。
•
dscp1...dscp
8
には、8つまでの値を、それぞれスペースで区切って入力します。指定できる範囲は0~63です。
•
cos1...cos8
には、8つまでの値を、それぞれスペースで区切って入力します。指定できる範囲は0~7です。
|
ステップ 3
|
end
|
イネーブルEXECモードに戻ります。
|
ステップ 4
|
show mls qos maps
|
設定を確認します。
DSCP出力キュー スレッシュホールド マップは、表形式で表示されます。d1列はDSCP値の最上位桁、d2行はDSCP値の最下位桁を示します。d1およびd2値の交点がキューIDおよびスレッシュホールドIDです。たとえば、キュー2およびスレッシュホールド1(02-01)のようになります。
CoS出力キュー スレッシュホールド マップでは、先頭行にCoS値、および2番めの行に対応するキューIDおよびスレッシュホールドIDが示されます。たとえば、キュー2およびスレッシュホールド2(2-2)のようになります。
|
ステップ 5
|
copy running-config startup-config
|
(任意)コンフィギュレーション ファイルに設定を保存します。
|
デフォルトのDSCP出力キュー スレッシュホールド マップまたはデフォルトのCoS出力キュー スレッシュホールド マップに戻すには、
no mls qos srr-queue output dscp-map
または
no mls qos srr-queue output cos-map
グローバル コンフィギュレーション コマンドを使用します。
次に、DSCP値10および11を出力キュー1およびスレッシュホールド2にマッピングする例を示します。
Switch(config)# mls qos srr-queue output dscp-map queue 1 threshold 2 10 11
出力キューのSRRシェーピング ウェイトの設定
各キューに割り当てる使用可能な帯域幅の比率を指定することができます。ウェイトの比率は、SRRスケジューラが各キューからパケットを送信する頻度の比率です。
出力キューには、シェーピング ウェイト、共有ウェイト、またはその両方を設定できます。バースト トラフィックを平滑化したり、出力をより滑らかにするには、シェーピングを使用します。詳細については、
「SRRのシェーピングおよび共有」を参照してください。共有ウェイトの詳細については、「出力キューのSRR共有ウェイトの設定」を参照してください。
(注) ほとんどの場合は、出力キューのデフォルト設定が最適です。デフォルト設定の変更が必要となるのは、出力キューについて完全に理解している場合、およびこれらの設定がご使用のQoSソリューションを満たしていない場合のみです。
ポートにマッピングされた4つの出力キューにシェーピング ウェイトを割り当てて、帯域幅のシェーピングをイネーブルにするには、イネーブルEXECモードで次の手順を実行します。この手順は任意です。
|
|
|
ステップ 1
|
configure terminal
|
グローバル コンフィギュレーション モードを開始します。
|
ステップ 2
|
interface
interface-id
|
発信トラフィックのポートを指定し、インターフェイス コンフィギュレーション モードを開始します。
|
ステップ 3
|
srr-queue bandwidth shape
weight1 weight2 weight3 weight4
|
出力キューにSRRウェイトを割り当てます。
デフォルトでは、weight1は25、weight2、weight3、およびweight4は0に設定されています。これらのキューは共有モードです。
weight1 weight2 weight3 weight4
には、シェーピングされるポートの割合を決定するウェイトを入力します。このキューのシェーピング帯域幅は、比率の逆数(1/
weight
)によって決まります。各値はスペースで区切ります。指定できる範囲は0~65535です。
ウェイト0を設定した場合は、対応するキューが共有モードで動作します。
srr-queue bandwidth shape
コマンドで指定されたウェイトは無視されます。
srr-queue bandwidth share
インターフェイス コンフィギュレーション コマンドで各キューに指定されたウェイトが有効になります。同じキューセットのキューにシェーピングおよび共有を両方設定する場合は、シェーピングに番号が最小のキューを設定してください。
シェーピング モードは共有モードよりも優先します。
|
ステップ 4
|
end
|
イネーブルEXECモードに戻ります。
|
ステップ 5
|
show mls qos interface
interface-id
queueing
|
設定を確認します。
|
ステップ 6
|
copy running-config startup-config
|
(任意)コンフィギュレーション ファイルに設定を保存します。
|
デフォルトの設定に戻すには、
no srr-queue bandwidth shape
インターフェイス コンフィギュレーション コマンドを使用します。
次に、キュー1に帯域幅のシェーピングを設定する例を示します。キュー2、3、および4のウェイト比率は0に設定されているため、これらのキューは共有モードで動作します。キュー1の帯域幅のウェイトは1/8(12.5%)です。
Switch(config)# interface gigabitethernet2/0/1 Switch(config-if)# srr-queue bandwidth shape 8 0 0 0
出力キューのSRR共有ウェイトの設定
共有モードでは、キューは設定されたウェイトに従って各キュー間の帯域幅を共有します。帯域幅はこのレベルで保証されますが、このレベルに限定されるわけではありません。たとえば、特定のキューが空であり、リンクを共有する必要がない場合、残りのキューは未使用の帯域幅を使用して、各キュー間で共有できます。共有の場合、キューからパケットを取り出す頻度はウェイトの比率によって決まります。ウェイトの絶対値には意味がありません。
(注) ほとんどの場合は、出力キューのデフォルト設定が最適です。デフォルト設定の変更が必要となるのは、出力キューについて完全に理解している場合、およびこれらの設定がご使用のQoSソリューションを満たしていない場合のみです。
ポートにマッピングされた4つの出力キューに共有ウェイトを割り当てて、帯域幅の共有をイネーブルにするには、イネーブルEXECモードで次の手順を実行します。この手順は任意です。
|
|
|
ステップ 1
|
configure terminal
|
グローバル コンフィギュレーション モードを開始します。
|
ステップ 2
|
interface
interface-id
|
発信トラフィックのポートを指定し、インターフェイス コンフィギュレーション モードを開始します。
|
ステップ 3
|
srr-queue bandwidth share
weight1 weight2 weight3 weight4
|
出力キューにSRRウェイトを割り当てます。
デフォルトでは、4つのウェイトがすべて25です(各キューに帯域幅の1/4が割り当てられています)。
weight1 weight2 weight3 weight4
には、SRRスケジューラがパケットを送信する頻度の比率を決定するウェイトを入力します。各値はスペースで区切ります。指定できる範囲は1~255です。
|
ステップ 4
|
end
|
イネーブルEXECモードに戻ります。
|
ステップ 5
|
show mls qos interface
interface-id
queueing
|
設定を確認します。
|
ステップ 6
|
copy running-config startup-config
|
(任意)コンフィギュレーション ファイルに設定を保存します。
|
デフォルトの設定に戻すには、
no srr-queue bandwidth share
インターフェイス コンフィギュレーション コマンドを使用します。
次に、出力ポートで稼働するSRRスケジューラのウェイト比率を設定する例を示します。4つのキューが使用され、共有モードで各キューに割り当てられる帯域幅の比率は、キュー1、2、3、および4に対して1/(1+2+3+4)、2/(1+2+3+4)、3/(1+2+3+4)、および4/(1+2+3+4)になります(それぞれ、10、20、30、および40%)。つまり、キュー4の帯域幅はキュー1の4倍、キュー2の2倍、キュー3の1.3倍です。
Switch(config)# interface gigabitethernet2/0/1 Switch(config-if)# srr-queue bandwidth share 1 2 3 4
出力緊急キューの設定
Cisco IOS Release 12.1(19)EA1で、特定のパケットに対して他のパケットよりも高いプライオリティを保証するには、出力緊急キューで特定のパケットをキューイングします。SRRはこのキューを空になるまで処理してから、他のキューを処理します。
出力緊急キューをイネーブルにするには、イネーブルEXECモードで次の手順を実行します。この手順は任意です。
|
|
|
ステップ 1
|
configure terminal
|
グローバル コンフィギュレーション モードを開始します。
|
ステップ 2
|
mls qos
|
スイッチでQoSをイネーブルにします。
|
ステップ 3
|
interface
interface-id
|
出力ポートを指定し、インターフェイス コンフィギュレーション モードを開始します。
|
ステップ 4
|
priority-queue out
|
デフォルトではディセーブルに設定されている出力緊急キューをイネーブルにします。
このコマンドを設定する場合、SRRに参加しているキューが1つ少なくなるため、SRRウェイトおよびキュー サイズの比率に影響します。つまり、
srr-queue bandwidth shape
または
srr-queue bandwidth share
コマンドの
weight1
は無視されます(比率計算では使用されません)。
|
ステップ 5
|
end
|
イネーブルEXECモードに戻ります。
|
ステップ 6
|
show running-config
|
設定を確認します。
|
ステップ 7
|
copy running-config startup-config
|
(任意)コンフィギュレーション ファイルに設定を保存します。
|
出力緊急キューをディセーブルにするには、
no priority-queue out
インターフェイス コンフィギュレーション コマンドを使用します。
次に、SRRウェイトが設定されているときに出力緊急キューをイネーブルにする例を示します。出力緊急キューは、設定済みのSRRウェイトを上書きします。
Switch(config)# interface gigabitethernet1/0/1 Switch(config-if)# srr-queue bandwidth shape 25 0 0 0 Switch(config-if)# srr-queue bandwidth share 30 20 25 25 Switch(config-if)# priority-queue out
出力インターフェイスの帯域幅の制限
出力ポートの帯域幅は制限できます。たとえば、顧客が高速リンクの一部しか費用を負担しない場合は、帯域幅をその値に制限できます。
(注) ほとんどの場合は、出力キューのデフォルト設定が最適です。デフォルト設定の変更が必要となるのは、出力キューについて完全に理解している場合、およびこれらの設定がご使用のQoSソリューションを満たしていない場合のみです。
出力ポートの帯域幅を制限するには、イネーブルEXECモードで次の手順を実行します。この手順は任意です。
|
|
|
ステップ 1
|
configure terminal
|
グローバル コンフィギュレーション モードを開始します。
|
ステップ 2
|
interface
interface-id
|
レートを制限するポートを指定し、インターフェイス コンフィギュレーション モードを開始します。
|
ステップ 3
|
srr-queue bandwidth limit
weight1
|
ポートの上限となるポート速度の割合を指定します。指定できる範囲は10~90です。
デフォルトでは、ポートのレートは制限されず、100%に設定されています。
|
ステップ 4
|
end
|
イネーブルEXECモードに戻ります。
|
ステップ 5
|
show mls qos interface
[
interface-id
]
queueing
|
設定を確認します。
|
ステップ 6
|
copy running-config startup-config
|
(任意)コンフィギュレーション ファイルに設定を保存します。
|
デフォルトの設定に戻すには、
no srr-queue bandwidth limit
インターフェイス コンフィギュレーション コマンドを使用します。
次に、ポートの帯域幅を80%に制限する例を示します。
Switch(config)# interface gigabitethernet2/0/1 Switch(config-if)# srr-queue bandwidth limit 80
このコマンドを80%に設定すると、ポートは期間の20%の間アイドルです。回線レートは接続速度の80%(800 Mbps)に低下します。ハードウェアによる回線レートの調整では6ずつ増分されるため、これらの値は正確ではありません。