Hierarchical Navigation |
目次概要前提条件 要件 使用するコンポーネント 表記法 ハードウェアとソフトウェアのバージョン QoS のポリシングとマーキングのパラメータ Catalyst 3550 がサポートするポリシングとマーキングの機能 ポリシングの設定と監視 マーキングの設定と監視 単一のポリサーですべてのインターフェイス トラフィックを分類する方法 Cisco サポート コミュニティ - 特集対話 関連情報 概要ポリシング機能では、トラフィック レベルが指定されたプロファイルまたはコントラクト内に収まっているどうかを確認し、プロファイル外のトラフィックを廃棄できるようにするか、異なる Differential Services Code Point(DSCP)値にマークダウンできるようにします。これにより、強制的に契約したサービス レベルが適用されます。 DSCP は、パケットの Quality of Service(QoS)レベルの測定値です。パケットの QoS レベルを伝えるためには、DSCP とともに、IP 優先順位や CoS も使用されます。 ポリシングとトラフィック シェーピングはともに、トラフィックをプロファイルまたはコントラクト内にとどめる機能ですが、この 2 つは明確に区別する必要があります。 ポリシングではトラフィックのバッファリングは行われないため、伝搬遅延への影響はありません。プロファイル外のパケットをバッファリングする代わりに、ポリシングではそれらを廃棄するか、異なる QoS レベルにマーキング(DSCP マークダウン)します。 トラフィック シェーピングでは、プロファイル外のトラフィックをバッファリングして、トラフィックのバーストの平滑化を行いますが、遅延や遅延変動に影響を与えます。シェーピングが適用できるのは発信インターフェイスだけですが、ポリシングは着信インターフェイスと発信インターフェイスの両方に適用できます。 Catalyst 3550 では、着信と発信の両方向のポリシングをサポートしています。トラフィック シェーピングはサポートしていません。 マーキングにより、パケットの QoS レベルがポリシーに従って変更されます。 前提条件要件このドキュメントに関する特別な要件はありません。 使用するコンポーネントこのドキュメントは、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。 このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されたものです。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。対象のネットワークが実稼働中である場合には、どのような作業についても、その潜在的な影響について確実に理解しておく必要があります。 表記法ドキュメント表記の詳細は、『シスコ テクニカル ティップスの表記法』を参照してください。 ハードウェアとソフトウェアのバージョンCatalyst 3550 でのポリシングとマーキングはすべてのソフトウェア バージョンでサポートされています。最新の設定ガイドを次に示します。サポートされているすべての機能については、次のドキュメントを参照してください。 QoS のポリシングとマーキングのパラメータポリシングを設定するには、QoS ポリシー マップを定義してポートに適用する必要があります。これは、ポートベース QoS とも呼ばれます。 注:Catalyst 3550 では VLAN ベースの QoS は現在サポートされていません。 ポリサーには、プロファイル外のトラフィックに対するアクションとともにレートやバースト パラメータが定義されています。 次の 2 つのタイプのポリサーがサポートされています。
集約ポリサーは、適用されるすべてのインスタンス間のトラフィックに対応します。個別ポリサーは、適用される各インスタンス間のトラフィックに個別に対応します。 注:Catalyst 3550 では、集約ポリサーは同じポリシーの異なるクラスにのみ適用できます。複数のインターフェイスまたはポリシー間の集約ポリシングはサポートしていません。 たとえば、同じポリシーマップの customer1 クラスと customer2 クラスのトラフィックを 1 Mbps に制限するには集約ポリサーを適用します。そのようなポリサーでは、customer1 クラスと customer2 クラスを合せて 1 Mbps のトラフィックが許可されます。個別ポリサーを適用した場合、customer1 クラスのトラフィックが 1 Mbps に、customer2 クラスのトラフィックが 1 Mbps にそれぞれ制限されます。つまり、ポリサーの各インスタンスは個別に扱われます。 着信ポリシーと発信ポリシーの両方でパケットを処理した際の QoS の対応を次の表に要約します。
注:同じポリシーの同じトラフィック クラス内でマーキングやマークダウンを行うことは可能です。そのような場合、特定のクラスに対するすべてのトラフィックが最初にマークされます。ポリシングとマークダウンは、マーキング済みのトラフィックに対して行われます。 Catalyst 3550 の QoS のポリシングは、次のような漏出バケットの概念に従っています。 着信トラフィック パケット サイズに比例した数のトークンをトークン バケットに入れます(トークンの数=パケット サイズ)。一定の間隔で、定義された(設定レートから求めた)数のトークンがバケットから取り出されます。着信パケットに対応できる余裕がバケットにない場合は、そのパケットはプロファイル外とみなされ、設定されたポリシング アクションに従って廃棄されるか、マークダウンされます。 この概念を次の例で示します。
注:上記の例では、トラフィックがバッファリングされているように見えるかもしれませんが、実際にバケットにバッファリングが行われているわけではありません。トラフィックが実際にバケットを通過するわけではありません。バケットは、パケットがプロファイル内にあるかプロファイル外にあるかを判断するためだけに使用されています。 注:ポリシングのハードウェア実装は異なる場合がありますが、その場合でも機能的にはこのモデルに従っています。 ポリシングの動作を制御するパラメータには、次のものがあります。
注:コマンドライン ヘルプには、大きな範囲の値が表示されますが、rate-bps オプションには設定済みのポート速度を超える値は指定できません。また、burst-byte オプションには 2000000 バイトを超える値は指定できません。それよりも大きい値を入力した場合、ポリシーマップをインターフェイスに適用する際にスイッチに拒否されます。 指定したトラフィック レートを維持するには、次の等式で求める値以上のバースト値を指定する必要があります。 Burstmin (bits) = Rate (bps) / 8000 (1/sec) 例として、1 Mbps のレートを維持するための最小バースト値を計算してみます。レートは 1000 Kbps に定義されているので、必要とされる最小バースト値は次の式で求められます。 1000 (Kbps) / 8000 (1/sec) =125 (bits) サポートされる最小バーストサイズは 8000 バイトなので、計算した最小バースト値を超えています。 注:ハードウェアのポリシング精度の関係で、実際のレートとバースト値は最も近いサポート値になります。 バースト レートを設定する際には、一部のプロトコルにはパケットの損失に対応するメカニズムが実装されていることを考慮する必要があります。たとえば、Transmission Control Protocol(TCP; 伝送制御プロトコル)では、損失したパケットごとにウィンドウが半分に縮小されます。そのため、TCP がライン レートを上げようとするときにポリサーが抑制すると、「鋸歯」状の影響が TCP のトラフィックに現れます。鋸歯状のトラフィックの平均レートを計算すると、ポリシングされたレートよりずっと低くなります。ただし、この場合、使用率を上げるためにバースト値を増やすことができます。手始めに、ラウンドトリップ時間(TCP RTT)の間に希望レートで送信されるトラフィック量の 2 倍をバースト値に指定してみます。RTT がわからない場合は、バースト パラメータの値を 2 倍にしてみることができます。 同様の理由により、コネクション型トラフィックでポリサーの処理のベンチマークを行うことは推奨できません。このシナリオでは、通常、ポリサーが許可する性能より低い値が示されます。 コネクションレス型トラフィックもポリシングに対して異なる反応を示す可能性があります。たとえば、Network File System(NFS; ネットワーク ファイル システム)では、複数の User Datagram Protocol(UDP; ユーザ データグラム プロトコル)パケットが含まれる可能性のあるブロックが使用されます。1 つのパケットの破棄が原因で、多数のパケット(場合によってはブロック全体)が再送信される場合があります。 次の例では、ポリシング レートが 64 Kbps で TCP RTT が 0.05 秒の場合の TCP セッションのバースト値を計算しています。 <burst> = 2* * = 2 * 0.05 [sec] * 64000/8 [bytes/sec] = 800 [bytes] 上の例では、<burst> は 1 つの TCP セッションの値なので、ポリサーを通過すると考えられるセッション数の平均をとるように調整する必要があります。 注:これは 1 つの例であり、個々のケースでポリシング パラメータを選択するには、トラフィックおよびアプリケーションの要件、および使用可能なリソースに対する動作が評価される必要があります。 ポリシング アクションには、パケットの廃棄とパケットの DSCP の変更(マークダウン)のいずれかを指定できます。パケットをマークダウンするには、ポリシングされた DSCP マップを修正する必要があります。デフォルト設定でポリシングした DSCP マップは、同じ DSCP にパケットを再びマーキングするので、マークダウンは行われません。 プロファイル外のパケットが元の DSCP とは異なる出力キューにマップされる DSCP にマークダウンされると、パケットは誤った順序で送信される可能性があります。パケットの順序が重要な場合は、プロファイル内のパケットと同じ出力キューにマップされる DSCP に、プロファイル外のパケットがマークダウンされるように指定します。 Catalyst 3550 がサポートするポリシングとマーキングの機能次の表には、Catalyst 3550 でサポートされるポリシングとマーキングに関連する機能が通信方向に従って要約されています。
クラスマップごとに 1 つの match ステートメントを指定できます。入力ポリシーには次の match 文が有効です。
注:Catalyst 3550 では、match interface コマンドがサポートされておらず、クラスマップで使用できる match コマンドは 1 つだけです。したがって、インターフェイスを通じて入ってくるすべてのトラフィックを分類し、単一のポリサーを使用してすべてのトラフィックをポリシングするのは複雑になります。このドキュメントの「単一のポリサーですべてのインターフェイス トラフィックを分類する方法」を参照してください。 出力ポリシーには次の match 文が有効です。
入力ポリシーには次のポリシーアクションが有効です。
サポートされている入力 QoS ポリシー マトリックスを次の表に示します。
出力ポリシーには次のポリシーアクションが有効です。
サポートされている出力 QoS ポリシー マトリックスを次の表に示します。
マーキングにより、分類またはポリシングに基づいたパケットの QoS レベルの変更が可能になります。分類により、定義した基準に従って、トラフィックを異なるクラスの QoS 処理に分割することができます。 QoS の処理は、パケットの QoS レベルの測定値である内部 DSCP に基づいて行われます。内部 DSCP は信頼設定に基づいて取得されます。このシステムでは、CoS、DSCP、IP 優先順位を信頼する設定、およびインターフェイスを信頼しない設定がサポートされています。フィールドを信頼する設定をすると、内部 DSCP がそれぞれのパケットから次のように取得されます。
CoS の信頼は、トランキング インターフェイスだけで有効であり、DSCP(または IP 優先順位)の信頼は、IP パケットに対してだけ有効です。 インターフェイスを信頼しない場合、内部 DSCP はそのインターフェイスの設定可能なデフォルト CoS から取得されます。QoS が有効である場合、これはデフォルトの状態です。デフォルト CoS が設定されていない場合、デフォルト値はゼロになります。 内部 DSCP が決定されると、マーキングやポリシングで変更することも、そのまま維持することもできます。 パケットに QoS の処理が実行された後、その QoS レベル フィールド(IP の場合は IP/DSCP フィールド内、および存在する場合は ISL/802.1Q ヘッダー内)は内部 DSCP より更新されます。ポリシングに関連した次の特別な QoS マップがあります。
特定の実装方法で考慮する必要のある重要な点を次に説明します。
ポリシングの設定と監視Cisco IOS でポリシングを設定する方法は次のとおりです。
次の 2 つのタイプのポリサーがサポートされています。
名前付き集約ポリサーは、それが適用されている同一のポリシー内にあるすべてのクラスから結合されたトラフィックに対してポリシングを行います。異なるインターフェイス間での集約ポリシングはサポートしていません。 注:集約ポリサーを複数のポリシーに適用することはできません。適用した場合には、次のエラー メッセージが表示されます。 QoS: Cannot allocate policer for policy map <policy name> 次に例で考えてみます。 GigabitEthernet0/3 ポートに接続されたトラフィック ジェネレータがあり、宛先ポートが 111 の UDP トラフィックを約 17 Mbps で送信しています。ポート 20 からの TCP トラフィックもあり、これら 2 つのトラフィック ストリームを 1 Mbps にポリシング ダウンし、超過したトラフィックは廃棄すると仮定します。次の例は、どのようにそれを行えるかを示しています。
!--- QoS をグローバルに有効にします。
mls qos
!--- QoS ポリサーを定義し、TCP のパフォーマンス向上のために
!--- バーストを 16000 に設定します。
mls qos aggregate-policer pol_1mbps 1000000 16000 exceed-action drop
!--- トラフィックを選択する ACL を定義します。
access-list 123 permit udp any any eq 111
access-list 145 permit tcp any eq 20 any
!--- ポリシングするトラフィック クラスを定義します。
class-map match-all cl_udp111
match access-group 123
class-map match-all cl_tcp20
match access-group 145
!--- QoS ポリシーを定義してポリサーを
!--- トラフィック クラスに適用します。
policy-map po_test
class cl_udp111
police aggregate pol_1mbps
class cl_tcp20
police aggregate pol_1mbps
!--- QoS ポリシーをインターフェイスに適用します。
interface GigabitEthernet0/3
switchport
switchport access vlan 2
service-policy input po_test
!
最初の例では、名前付き集約ポリサーを使用しています。個別ポリサーは、名前付きポリサーとは異なり、適用されるクラスごとに個別にトラフィックのポリシングを行います。個別ポリサーは、ポリシー マップ設定で定義されます。次の例では、2 つの個別ポリサーがトラフィックの 2 つのクラスをポリシングしています。cl_udp111 は 8K バーストで 1Mbps に、cl_tcp20 は 32K バーストで 512 Kbps にそれぞれポリシングされています。
!--- QoS をグローバルに有効にします。
mls qos
!--- トラフィックを選択する ACL を定義します。
access-list 123 permit udp any any eq 111
access-list 145 permit tcp any eq 20 any
!--- ポリシングするトラフィック クラスを定義します。
class-map match-all cl_udp111
match access-group 123
class-map match-all cl_tcp20
match access-group 145
!--- QoS ポリシーを定義し、ポリサーを作成し
!--- トラフィック クラスに適用します。
policy-map po_test2
class cl_udp111
police 1000000 8000 exceed-action drop
class cl_tcp20
police 512000 32000 exceed-action drop
!--- QoS ポリシーをインターフェイスに適用します。
interface GigabitEthernet0/3
switchport
switchport access vlan 2
service-policy input po_test2
ポリシング処理を監視するには、次のコマンドを使用します。 cat3550#show mls qos interface g0/3 statistics GigabitEthernet0/3 Ingress dscp: incoming no_change classified policed dropped (in pkts) Others: 267718 0 267717 0 0 Egress dscp: incoming no_change classified policed dropped (in pkts) Others: 590877 n/a n/a 266303 0 WRED drop counts: qid thresh1 thresh2 FreeQ 1 : 0 0 1024 2 : 0 0 1024 3 : 0 0 8 4 : 0 0 1024 注:デフォルトでは、DSCP ごとの統計情報はありません。Catalyst 3550 では、最大 8 個の DSCP 値のインターフェイスごと、方向ごとの統計収集をサポートしています。これは、mls qos monitor コマンドを発行することで設定されます。DSCP 8、16、24、32 の統計情報を監視するには、次のコマンドをインターフェイスごとに発行する必要があります。 cat3550(config-if)#mls qos monitor dscp 8 16 24 32 注:mls qos monitor dscp 8 16 24 32 コマンドにより、show mls qos int g0/3 statistics コマンドの出力が次のように変わります。
cat3550#show mls qos interface g0/3 statistics
GigabitEthernet0/3
Ingress
dscp: incoming no_change classified policed dropped (in pkts)
8 : 0 0 675053785 0 0
16: 1811748 0 0 0 0 ? per DSCP statistics
24: 1227820404 15241073 0 0 0
32: 0 0 539337294 0 0
Others: 1658208 0 1658208 0 0
Egress
dscp: incoming no_change classified policed dropped (in pkts)
8 : 675425886 n/a n/a 0 0
16: 0 n/a n/a 0 0 ? per DSCP statistics
24: 15239542 n/a n/a 0 0
32: 539289117 n/a n/a 536486430 0
Others: 1983055 n/a n/a 1649446 0
WRED drop counts:
qid thresh1 thresh2 FreeQ
1 : 0 0 1024
2 : 0 0 1024
3 : 0 0 6
4 : 0 0 1024
次に上の例のフィールドについて説明します。
実装時に固有な次の考慮事項に注意してください。
マーキングの設定と監視マーキングを設定する方法は次のとおりです。
下記の例では、ホスト 192.168.192.168 に対する着信 IP トラフィックを IP 優先順位 6 でマーキングし、1 Mbps にポリシングダウンして、超過したトラフィックは IP 優先順位 2 にマークダウンしています。
!--- QoS をグローバルに有効にします。
mls qos
!--- トラフィックを選択する ACL を定義します。
access-list 167 permit ip any host 192.168.192.168
!--- トラフィック クラスを定義します。
class-map match-all cl_2host
match access-group 167
!--- QoS ポリシーを定義し、ポリサーを作成し
!--- トラフィック クラスに適用します。
policy-map po_test3
class cl_2host
!--- クラスのすべてのトラフィックを IP 優先順位 6 にマーキングします。
set ip precedence 6
!--- 1 Mbps にポリシングダウンし、QoS マップに従ってマークダウンします。
police 1000000 8000 exceed-action policed-dscp-transmit
!--- ポリシングされた DSCP QoS マップを修正して
!--- トラフィックの IP 優先順位を 6 から 2 にマークダウンするようにします。
!--- DSCP では、48 から 16 への変更になります(DSCP = IP 優先順位 x 8)。
mls qos map policed-dscp 48 to 16
!--- QoS ポリシーをインターフェイスに適用します。
interface GigabitEthernet0/3
switchport
switchport access vlan 2
service-policy input po_test3
同じ show mls qos interface statistics コマンドを、マーキングを監視するためにも発行します。サンプル出力とその意味は、このドキュメントのセクションで説明されています。 単一のポリサーですべてのインターフェイス トラフィックを分類する方法Catalyst 3550 では、match interface コマンドがサポートされておらず、1 つのクラスマップで使用できる match コマンドは 1 つだけです。さらに、Catalyst 3550 では、MAC ACL で IP トラフィックを照合できません。そのため、IP トラフィックと非 IP トラフィックは、2 つの独立したクラスマップを使用して分類する必要があります。したがって、インターフェイスを通じて入ってくるすべてのトラフィックを分類し、単一のポリサーを使用してすべてのトラフィックをポリシングするのは複雑になります。ここに示す設定例を使用すれば、これが可能です。この設定では、IP トラフィックと非 IP トラフィックが 2 つの独立したクラスマップで照合されます。ただし、それぞれのクラスマップでは、両方のトラフィックに対して共通のポリサーが使用されます。 access-list 100 permit ip any any class-map ip match access-group 100 !--- このクラスマップで、すべての IP トラフィックが分類されます。 mac access-list extended non-ip-acl permit any any class-map non-ip match access-group name non-ip-acl !--- このクラスマップで分類されるのは、すべての非 IP トラフィックだけです。 mls qos aggregate-policer all-traffic 8000 8000 exceed-action drop !--- このコマンドにより、IP トラフィックと非 IP トラフィックの両方に適用される !--- 共通のポリサーが設定されます。 policy-map police-all-traffic class non-ip police aggregate all-traffic class ip police aggregate all-traffic interface gigabitEthernet 0/7 service-policy input police-all-traffic !--- このコマンドにより、ポリシーマップが物理インターフェイスに適用されます。 Cisco サポート コミュニティ - 特集対話関連情報 |