スイッチ : Cisco Catalyst 3750 シリーズ スイッチ

アクセス レイヤ スイッチでの QoS による出力ドロップのトラブルシューティングに関するテクニカル ノート

2016 年 10 月 28 日 - 機械翻訳について
その他のバージョン: PDFpdf | 英語版 (2015 年 8 月 22 日) | フィードバック

概要

このドキュメントでは、Cisco Catalyst スイッチ シリーズ 2960、3750、3750G、3750X、3560 の Quality of Service(QoS)による出力ドロップをトラブルシューティングする方法について説明します。

Shashank Singh(Cisco TAC エンジニア)著。

前提条件

要件

QoS に関する基本的な知識があることが推奨されます。

使用するコンポーネント

このドキュメントの情報は、次のプラットフォームに基づいています。 Cisco Catalyst スイッチ シリーズ 2960、3750、3750G、3750X、3560。

このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されたものです。 このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。 ネットワークが稼働中の場合は、コマンドが及ぼす潜在的な影響を十分に理解しておく必要があります。

背景説明

QoS は輻輳時に、重要なデータの順位付けに使用されます。 その結果、QoS を有効にすると、それほど重要でないバルク データがドロップされる場合があります。

Cisco アクセス レイヤ スイッチでは、ハードウェアに QoS 機能が実装されています。 このドキュメントは、ドロップが QoS によって発生したかどうかを確認するのに役立ち、ドロップを緩和するさまざまなキューイングとバッファ チューニング オプションについて説明します。

機能情報

入力デフォルト キュー 

116089-technote-switches-output-drops-qos-01.jpg

出力デフォルト キュー

116089-technote-switches-output-drops-qos-02.jpg

トラブルシューティング方法

  1. 影響を受けたアプリケーションの出力データを伝送するインターフェイス、または増加する出力ドロップが発生しているインターフェイスを特定します。 インターフェイスの出力レートとインターフェイス速度を比較し、ドロップの原因がリンクの過度な使用率でないことを確認します。
    Switch#show int gi1/0/1
    !-- Some output omitted.
    GigabitEthernet0/1 is up, line protocol is up (connected)
    MTU 1500 bytes, BW 100000 Kbit, DLY 100 usec,
    Full-duplex, 1000Mb/s, media type is 10/100/1000BaseTX


    input flow-control is off, output flow-control is unsupported
    Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 1089

    Queueing strategy: fifo
    Output queue: 0/40 (size/max)
    5 minute input rate 4000 bits/sec, 6 packets/sec
    5 minute output rate 3009880 bits/sec, 963 packets/sec
  2. スイッチで QoS が有効になっていることを確認します。 有効になっていない場合は、出力ドロップは QOS とは関係なく、したがって、ここに示す詳細な手順は関係ありません。
    Switch#show mls qos
    QoS is enabled
    QoS ip packet dscp rewrite is enabled
  3. インターフェイスでドロップされる発信トラフィックのマーキングを特定します。
    Switch#show mls qos int gi1/0/1 statistics

    GigabitEthernet1/0/1 (All statistics are in packets)

    dscp: incoming
    -------------------------------

    0 - 4 : 0 0 0 0 0
    5 - 9 : 0 0 0 0 0
    10 - 14 : 0 0 0 0 0
    15 - 19 : 0 0 0 0 0
    20 - 24 : 0 0 0 0 0
    25 - 29 : 0 0 0 0 0
    30 - 34 : 0 0 0 0 0
    35 - 39 : 0 0 0 0 0
    40 - 44 : 0 0 0 0 0
    45 - 49 : 0 198910 0 0 0
    50 - 54 : 0 0 0 0 0
    55 - 59 : 0 0 0 0 0
    60 - 64 : 0 0 0 0

    dscp: outgoing
    -------------------------------

    0 - 4 : 0 0 0 0 0
    5 - 9 : 0 0 0 0 0
    10 - 14 : 0 0 0 0 0
    15 - 19 : 0 0 0 0 0
    20 - 24 : 0 0 0 0 0
    25 - 29 : 0 0 0 0 0
    30 - 34 : 0 0 0 0 0
    35 - 39 : 0 0 0 0 0
    40 - 44 : 0 0 0 0 0
    45 - 49 : 0 248484 0 0 0
    50 - 54 : 0 0 0 0 0
    55 - 59 : 0 0 0 0 0
    60 - 64 : 0 0 0 0

    cos: incoming
    -------------------------------

    0 - 4 : 2 0 0 0 0
    5 - 7 : 0 0 0

    cos: outgoing
    -------------------------------

    0 - 4 : 0 0 0 0 0
    5 - 7 : 0 0 0

    output queues enqueued:
    queue: threshold1 threshold2 threshold3
    -----------------------------------------------
    queue 0: 248484 0 0
    queue 1: 0 0 0
    queue 2: 0 0 0
    queue 3: 0 0 0

    output queues dropped:
    queue: threshold1 threshold2 threshold3
    -----------------------------------------------
    queue 0: 1089 0 0
    queue 1: 0 0 0
    queue 2: 0 0 0
    queue 3: 0 0 0

    Policer: Inprofile: 0 OutofProfile: 0

    : この例は、ueue 0/threshold1 でドロップされたパケットのドロップされたパックを示します。 ドキュメントの他の例では、キュー番号は 1 ~ 4 です。 そのため、この値は queue 1 になります。

  4. どのキューとしきい値のペアがドロップされたマーキングにマッピングされるかを特定するため、スイッチで output-q マップへのマーキングを確認します。 このシナリオでは、queue1/threshold1 は、インターフェイスでドロップされる dscp 46 にマッピングされています。 これは、dscp 46 のトラフィックが queue1 に送信され、このキューのバッファが不足しているか、または CPU サイクルが少ないため、ドロップされることを意味します。
    Switch#show mls qos maps dscp-output-q

    Dscp-outputq-threshold map:
    d1 :d2 0 1 2 3 4 5 6 7 8 9
    ------------------------------------------------------------
    0 : 02-01 02-01 02-01 02-01 02-01 02-01 02-01 02-01 02-01 02-01
    1 : 02-01 02-01 02-01 02-01 02-01 02-01 03-01 03-01 03-01 03-01
    2 : 03-01 03-01 03-01 03-01 03-01 03-01 03-01 03-01 03-01 03-01
    3 : 03-01 03-01 04-01 04-01 04-01 04-01 04-01 04-01 04-01 04-01
    4 : 01-01 01-01 01-01 01-01 01-01 01-01 01-01 01-01 04-01 04-01
    5 : 04-01 04-01 04-01 04-01 04-01 04-01 04-01 04-01 04-01 04-01
    6 : 04-01 04-01 04-01 04-01
  5. このドロップを解決するには、次の 2 つの方法があります。 最初の方法は、パケットをドロップするキューのバッファとしきい値を変更することです。 2 つ目の方法は、パケットをドロップするキューが他のキューよりも頻繁に処理されるようにスケジューラを設定します。

    この手順では、影響を受けるキューのバッファとしきい値を変更する方法とステップ 4 で特定されたキューに関連付けられたバッファとしきい値を確認する方法を示します。

    : 各キュー セットには、4 つの出力キューのバッファ サイズとしきい値を設定するためのオプションがあります。 続いて、キュー セットの任意の 1 つを任意のポートに適用できます。 デフォルトでは、queue-set 2 を使用するように明示的に設定されていない限り、すべてのインターフェイスは出力キューに queue-set 1 を使用します。

    このシナリオでは、queue-set 1 の queue 1 には合計バッファ スペースの 25% があり、しきい値 1 は 100% に設定されています。

    Switch#show mls qos queue-set
    Queueset: 1
    Queue : 1 2 3 4
    ----------------------------------------------
    buffers : 25 25 25 25
    threshold1: 100 200 100 100
    threshold2: 100 200 100 100
    reserved : 50 50 50 50
    maximum : 400 400 400 400
    Queueset: 2
    Queue : 1 2 3 4
    ----------------------------------------------
    buffers : 25 25 25 25
    threshold1: 100 200 100 100
    threshold2: 100 200 100 100
    reserved : 50 50 50 50
    maximum : 400 400 400 400
  6. 影響を受けるインターフェイスだけのバッファとしきい値を変更する場合は、queue-set 2 を変更し、queue-set 2 を使用するように影響を受けるインターフェイスを設定します。

    : queue-set 1 も変更することができます。 ただし、デフォルトではすべてのインターフェイスが queue-set 1 を使用するため、変更がすべてのインターフェイスに反映されます。

    この例では、queue 1 が合計バッファの 70% を受け取るように queue-set 2 を変更します。

    Switch(config)#mls qos queue-set output 2 buffers 70 10 10 10

    この例では、queue-set 2 と queue 1 のしきい値を変更します。 必要に応じて予約されたプールからバッファを引き出すことができるように、threshold 1 と threshold 2 の両方が 3100 にマッピングされます。

    Switch(config)#mls qos queue-set output 2 threshold 1 3100 3100 100 3200
  7. 正しいキューとキュー セットに変更が反映されることを確認します。
    Switch#show mls qos queue-set
    Queueset: 1
    Queue : 1 2 3 4
    ----------------------------------------------
    buffers : 25 25 25 25
    threshold1: 100 200 100 100
    threshold2: 100 200 100 100
    reserved : 50 50 50 50
    maximum : 400 400 400 400
    Queueset: 2
    Queue : 1 2 3 4
    ----------------------------------------------
    buffers : 70 10 10 10
    threshold1: 3100 100 100 100
    threshold2: 3100 100 100 100
    reserved : 100 50 50 50
    maximum : 3200 400 400 400
  8. 影響を受けるインターフェイスに変更が反映されるように、このインターフェイスが queue-set 2 を使用するようにします。
    Switch(config)#int gi1/0/1
    Switch(config-if)#queue-set 2
    Switch(config-if)#end

    インターフェイスが queue-set 2 にマッピングされていることを確認します。

    Switch#show run int gi1/0/1
    interface GigabitEthernet1/0/1
    switchport mode access
    mls qos trust dscp
    queue-set 2
    end

    インターフェイスがパケットを引き続きドロップするかどうかを確認します。

  9. また、共有とシェーピングのオプションを使用して queue 1 が処理されるレートを増やすようにスケジューラを設定することもできます。 この例では、queue 1 は単独で合計 CPU サイクルの 50% を受け取り、他の 3 つのキューはまとめて CPU サイクルの 50% を受け取ります。
    Switch(config-if)#srr-queue bandwidth share 1 75 25 5
    Switch(config-if)#srr-queue bandwidth shape 2 0 0 0

    インターフェイスがパケットを引き続きドロップするかどうかを確認します。

  10. このインターフェイス上でプライオリティ キューを有効にします。 この操作は、プライオリティ キューのすべてのトラフィックが他のキューより先に処理されることを確実にします。

    : 他のキューを処理する前に、プライオリティ キューは空になるまで処理されます。 デフォルトでは、スイッチ 2960、3560、3750 では、queue 1 がプライオリティ キューです。

    Switch(config)#int gi1/0/1
    Switch(config-if)#priority-queue out
    Switch(config-if)#end

    インターフェイスでドロップされるパケットのマーキングを queue 1(プライオリティ キュー)に送るようにマッピングできます。 この操作は、このマーキングがあるトラフィックが必ず先に処理されることを確実にします。

    Switch(config)#mls qos srr-queue output dscp-map queue 1 threshold 1

一般的な問題

次に、いくつかの一般的な問題を示します。

  • QoS を有効にした後、インターフェイスで出力がドロップされます。 
  • ボイスコールが途切れ途切れになります。
  • 追加された遅延によって、ビデオ トラフィックが最適な状態ではなくなります。
  • 接続がリセットされます。

FAQ

Q: キュー セットはいつ変更しますか、また共有とシェーピングはいつ使用しますか。

A: この決定は、ドロップの性質によって異なります。 ドロップが断続的に増加する場合、この問題はバースト トラフィックが原因である可能性があります。 その一方でドロップが常に一定のレートで増加する場合、パケットをドロップするキューは送信できるデータよりも多くのデータを受信している可能性があります。

断続的なドロップの場合、キューは一時的なバーストに対応できる大きなバッファを必要とします。 このソリューションを実行するには、キュー セットを変更して影響を受けるキューに、より多くのバッファを割り当てて、しきい値も増やす必要があります。

連続的なドロップの場合は、影響を受けるキューが処理される頻度を増やし、CPU サイクルごとにキューから取り除くパケットの量を増やすようにスケジューラを設定します。  このソリューションを実行するには、出力キューで共有またはシェーピングを設定する必要があります。

Q: 共有モードとシェーピング済みモードの違いは何ですか。

A: シェーピング済みモードでは、出力キューには帯域幅の比率が保証され、出力キューはその総量にレート制限されています。 シェーピングされるトラフィックは、リンクがアイドル状態であっても、割り当てられた帯域幅以上は使用しません。 シェーピング済みモードにより、時間の流れの中で均等なトラフィックのフローが実現され、バースト トラフィックの浮き沈みが緩和されます。 シェーピングの場合は、各重みの絶対値を使用して、キューに使用可能な帯域幅が計算されます。

srr-queue bandwidth shape weight1 weight2 weight3 weight4

このキューのシェーピング帯域幅は、インバース比率(1/weight)によって制御されます。 つまり、queue1 は合計帯域幅の reserved 1/weight1 などになります。 重み 0 を設定した場合は、対応するキューが共有モードで動作します。 srr-queue bandwidth shapeconfiguration コマンドsrr-queue bandwidth share interface configuration コマンドでキューに指定された重み付けが反映されます。

共有モードでは、設定された重み付けに基づいてキュー間で帯域幅が共有されます。 帯域幅はこのレベルで保証されますが、このレベルに制限されるものではありません。 たとえば、特定のキューが空であり、リンクを共有する必要がない場合、残りのキューは未使用の帯域幅を使用して、共有できます。

srr-queue bandwidth share weight1 weight2 weight3 weight4

queue1 には最低 weight1/(weight1 + weight2 + weight3 + weight4)パーセントの帯域幅が保証されますが、必要に応じて他のシェーピングされていないキューの帯域幅を消費することもできます。

関連情報



Document ID: 116089