このドキュメントでは、Selective Packet Discard(SPD;選択的パケット廃棄)メカニズムと、その監視および調整方法について説明します。
注:この文書では、Cisco 12000 シリーズ インターネット ルータの show interfaces 出力で入力廃棄が増加している場合のトラブルシューティング方法については説明していません。この問題の詳細については、『Cisco 12000シリーズインターネットルータでの入力廃棄のトラブルシューティング』を参照してください。
ドキュメント表記の詳細は、『シスコ テクニカル ティップスの表記法』を参照してください。
このドキュメントに関しては個別の前提条件はありません。
このドキュメントの情報は、次のソフトウェアとハードウェアのバージョンに基づいています。
Cisco 7200 シリーズ ルータ
Cisco 7500 シリーズ ルータ
Cisco 12000 シリーズ インターネット ルータ
Cisco IOS®ソフトウェアのすべてのバージョン
このマニュアルの情報は、特定のラボ環境に置かれたデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、初期(デフォルト)設定の状態から起動しています。実稼動中のネットワークで作業をしている場合、実際にコマンドを使用する前に、その潜在的な影響について理解しておく必要があります。
Selective Packet Discard(SPD; 選択パケット廃棄)は、Route Processor(RP; ルート プロセッサ)でプロセス レベル入力キューを管理するためのメカニズムです。 SPD の目標は、プロセス レベル キューの輻輳が発生したときに、ルーティング プロトコル パケットやその他の重要なトラフィック制御レイヤ 2 キープアライブに優先権を与えることです。
従来、Cisco 7x00 や Cisco Express Forwarding(CEF)非対応の 7500 システムなどのプラットフォームでは、ファースト スイッチング キャッシュにデータをキャッシュするため、ルート プロセッサによって大量のトランジット パケットが転送されていました。そのため、このような場合にルーティング プロトコル パケットを、同じキューを共有するトランジット パケットより優先させるため、SPD が必要になりました。
現在、Cisco 12000 シリーズ インターネット ルータ、および CEF が動作する 7500 では、ルータ自身宛てのトラフィックのみがプロセス レベルに送られます。この場合は、Simple Network Management Protocol(SNMP; 簡易ネットワーク管理プロトコル)などの管理トラフィックが存在するとき、または RP にトラフィックを送信する Denial of Service(DoS; サービス拒絶)攻撃が発生しているときに、ルーティング プロトコル パケットを優先するために SPD が使用されます。
Cisco 12000 シリーズでは、着信パケットを RP に送って処理する必要があるとラインカードが判断した場合、パケットはシスコ セルとしてスイッチ ファブリックを通じて伝送され、最終的に Cisco Cell Segmentation And Reassembly(CSAR)Field Programmable Gate Array(FPGA)によって受信されます。
その目的は、スイッチ ファブリックと RP CPU の間のトラフィックを処理することです。ここで SPD チェックが実行されます。これは IP パケット、Connectionless Network Service(CLNS; コネクションレス型ネットワーク サービス)、レイヤ 2 キープアライブ、および RP に送られるこれらと同様のパケットに適用されます。SPD では次の 2 つのチェックを行います。これにより、いずれかの状態チェックでパケットが廃棄される可能性があります。
SPD 状態チェック
入力キュー チェック
RPのIPプロセスキューは、次の2つの部分に分けられます。一般的なパケットキューとプライオリティキュー。一般パケット キューに入れられたパケットは SPD 状態チェックを受け、プライオリティ キューに入れられたパケットはこのチェックを受けません。プライオリティ パケット キューに入る資格があるのは 6 や 7 などの高い IP 優先順位を持つパケットで、このようなパケットが廃棄されることはありません。しかし、プライオリティ パケット キューに入る資格のないパケットは、SPD 状態によっては、一般パケット キューの長さに応じてここで廃棄できます。一般パケット キューには次の 3 つの状態があり、これらの状態の変化に応じて低優先順位パケットの扱いが変わります。
NORMAL:キューサイズ<=分
RANDOM DROP:最小<=キューサイズ<=最大
FULL DROP:最大<=キューサイズ
NORMAL 状態では、形式が正しいパケットも正しくないパケットも廃棄されません。
RANDOM DROP 状態では、形式が正しいパケットがランダムに廃棄されます。アグレッシブモードが設定されている場合、不正なパケットはすべて廃棄されます。それ以外の場合は、整形式のパケットと同様に扱います。
注:これらのランダム廃棄はSPDフラッシュと呼ばれます。基本的に、インターフェイスが過負荷になると、フラッシュが発生します。バッファミスにより、フラッシュカウンタが増加します。
FULL DROP 状態では、形式が正しいパケットも正しくないパケットもすべて廃棄されます。これらの最小値(デフォルトは 73)と最大値(デフォルトは 74)は、シャーシ上の最小保持キューから算出されますが、グローバル コマンド ip spd queue min-threshold および ip spd queue max-threshold によって上書きできます。
SPDは、次の2つの異なるモードに設定できます。normal(デフォルト)およびaggressive。両者の違いは、ルータが無効な IP パケット(無効なチェックサム、不正確なバージョン、不正確なヘッダー長、不正確なパケット長)をどのように取り扱うかという点のみです。 アグレッシブ モードの場合に RANDOM DROP 状態になると、形式が正しくない IP パケットが SPD によって廃棄されます。アグレッシブ モードに設定するには、ip spd mode aggressive コマンドを使用します。
注:アグレッシブ モードは、Cisco 12000 シリーズ インターネット ルータには実装されていません。これは、形式が正しくない IP パケットが入力ラインカードによって直接廃棄され、Gigabit Route Processor(GRP; ギガビット ルート プロセッサ)には送られないためです。 そのため、このプラットフォームではアグレッシブ モードは必要ありません。
入力キューはハードウェア インターフェイスごとに維持され、すべてのサブインターフェイス間で共有されます。SPD を使用しない場合は、パケットが到達したときに入力キューがいっぱいであれば、パケットは廃棄されます。デフォルトの入力キュー サイズは 75 です。このサイズは、hold-queue [size] in インターフェイス設定コマンドを使用してインターフェイスごとに設定できます。入力キューのパケット数は、show interfaces コマンドの「input queue」フィールドに表示されます。
router#show interfaces pos 3/0 POS3/0 is up, line protocol is up Hardware is Packet over SONET Internet address is 137.40.55.2/24 MTU 4470 bytes, BW 2488000 Kbit, DLY 100 usec, rely 255/255, load 1/255 Encapsulation PPP, crc 32, loopback not set Keepalive not set Scramble disabled LCP Open Open: IPCP, CDPCP, OSICP, TAGCP Last input 00:00:01, output 00:00:00, output hang never Last clearing of "show interface" counters 2w3d Queueing strategy: fifo Output queue 0/40, 0 drops; input queue 0/75, 0 drops 30 second input rate 9000 bits/sec, 0 packets/sec 30 second output rate 0 bits/sec, 0 packets/sec 456292 packets input, 917329913 bytes, 0 no buffer Received 0 broadcasts, 0 runts, 0 giants, 0 throttles 0 parity 0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort 112046977 packets output, 32078928095 bytes, 0 underruns 0 output errors, 0 applique, 3 interface resets 0 output buffer failures, 0 output buffers swapped out 1 carrier transitions
注:1つのインターフェイスで入力キューサイズを小さくすると、他のすべてのインターフェイスで大量の入力ドロップが発生する可能性があります。最小入力保持キューのサイズは必ず 75 以上にしてください。
SPDを使用しても、通常のIPパケットの動作は変更されません。ただし、SPDはルーティングプロトコルパケットをIP precedenceフィールドで認識するため、ルーティングプロトコルパケットの優先度が高くなります。したがって、IP 優先順位が 6 に設定されている場合、そのパケットは優先されます。
SPD では、これらのパケットを優先するために、これらのパケットが通常の入力キュー制限を超えてプロセス レベル入力キューにキューイングされることを許可します。通常の制限を超えて許可されるパケットの数を、SPD ヘッドルームと呼びます。デフォルトは 100 です。これは、入力保持キューのサイズ(入力キューのデフォルト サイズ + SPD ヘッドルームのサイズ)が 175 未満であれば、高優先順位のパケットは廃棄されないことを意味します。
Cisco IOS ソフトウェア リリース 12.0(22)S 以降は、Cisco 12000 シリーズ インターネット ルータがより大規模な SP ネットワークに対応できるように、SPD ヘッドルームのデフォルトが 1000 になっています。これは、ますます多くの近隣デバイスの間で Border Gateway Protocol(BGP; ボーダーゲートウェイ プロトコル)ピアリングが形成され、ますます高速なインターフェイスを経由して、ますます多くのルートがアドバタイズされているためです。BGP が 1 回クリアされると 1 つのインターフェイスで数千の入力キューが廃棄され、これによってコンバージェンス時間が著しく妨げられる可能性があります。
SPD ヘッドルームは、spd headroom コマンドを使用して設定できます。SPD ヘッドルームの現在のレベルは、show spd または show ip spd コマンドの出力に表示されます。
Router#show spd Headroom: 1000, Extended Headroom: 10 Router#show ip spd Current mode: normal Queue min/max thresholds: 73/74, Headroom: 1000, Extended Headroom: 10 IP normal queue: 0, priority queue: 0. SPD special drop mode: none
注:IP 通常キューのサイズも、show ip spd コマンドによって監視できます。
Connectionless Network Service(CLNS)Intermediate System-to-Intermediate System(CLNS ISIS)パケット、ポイントツーポイントプロトコル(PPP)パケット、およびHigh-Level Data Link Control(HDLC)キープアライブなどの非IPパケットは、最近までレイヤ3ではなくレイヤ2として処理されました。さらに、レイヤ3以上で動作するInterior Gateway Protocols(IGP;内部ゲートウェイプロトコル)には、通常のIPパケットよりも高い優先順位が与えられましたが、BGPパケットと同じ優先順位が与えられました。このため、BGP コンバージェンスの間、または BGP アクティビティが非常に高いときには、IGP hello やキープアライブがしばしば廃棄され、IGP の隣接関係がダウンしていました。
IGP およびリンクの安定性は、BGP の安定性よりも脆くかつ重大であるため、現在では IGP 関連のパケットに最高の優先順位と、デフォルトで 10 パケットの拡張 SPD ヘッドルームが与えられています。これは、入力保持キューのサイズが 185(入力キューのデフォルト サイズ + SPD 拡張ヘッドルーム)未満であれば、これらのパケットは廃棄されないことを意味します。
拡張 SPD ヘッドルームは、spd extended [size] コマンドを使用して拡張できます。拡張 SPD ヘッドルームの現在のレベルは、show spd または show ip spd コマンドの出力から把握できます。
Router#show ip spd Current mode: normal Queue min/max thresholds: 73/74, Headroom: 100, Extended Headroom: 10 IP normal queue: 0, priority queue: 0. SPD special drop mode: none
注:Cisco 12000シリーズインターネットルータでは、HDLCおよびPPPキープアライブとCLNS ISISルーティングプロトコルパケットは高優先度として扱われ、Cisco IOSソフトウェアリリース12.0(12)S1以降で拡張SPDヘッドルームにに入されます。ソフトウェアリリース12.0(18)Sでは、すべてのIGPパケットが拡張SPDヘッドルームにキューイングされる場合があります。
Cisco IOS ソフトウェア リリース 12.0(22)S より前のデフォルト値は次のとおりです。
入力キュー サイズ = 75
SPD ヘッドルーム サイズ = 100
拡張ヘッドルーム サイズ = 10
Cisco IOS ソフトウェア リリース 12.0(22)S 以降のデフォルト値は次のとおりです。
入力キュー サイズ = 75
SPD ヘッドルーム サイズ = 1000
拡張ヘッドルーム サイズ = 10
最初のケースを図示すると次のようになります。
通常の優先順位の IP パケットは、デフォルトのキュー制限(75)に達するまでキューイングできます。
高優先順位の IP パケットは、デフォルトのキュー制限 + SPD ヘッドルーム(Cisco IOS ソフトウェア リリースに応じて 175 または 1075)に達するまでキューイングできます。
CLNS、IGP、および LC キープアライブ パケットは、デフォルトのキュー制限 + SPD ヘッドルーム、SPD 拡張ヘッドルーム(Cisco IOS ソフトウェア リリースに応じて 185 または 1085)に達するまでキューイングできます。
ここでは、SPD に関するその他のヒントや情報を示します。
デフォルトでは、SPD は「オン」です。 SPD を有効/無効にするには、spd enable グローバル コマンドを使用します。
当初、SPD は Packet Over Sonet(PoS)インターフェイスでのみ使用できました。
Cisco IOS ソフトウェア リリース 12.0(21)S より前のリリースでは、Cisco 12000 シリーズ インターネット ルータに取り付けられたギガビット イーサネット ラインカード(エンジン 1 およびエンジン 2)およびファースト イーサネット ラインカードでは、SPD が機能しませんでした。超過パケットを格納するためには、入力保持キューを増やす必要がありました。
Cisco 7200/7500 シリーズ ルータでは、show interfaces コマンドの出力に SPD フラッシュ(ドロップ)カウンタが表示されます(非 First In, First Out(FIFO; 先入れ先出し)キューイングについては Cisco IOS ソフトウェア リリース 12.1(1)、12.1(1)T、および 12.0(9)ST 以降、FIFO キューイングについては 12.2(7)、12.2(7)T、および 12.1(7)E 以降)。その他のリリースおよび Cisco 12000 シリーズ インターネット ルータでは、このカウンタは show interface switching コマンドを入力した場合にのみ表示されます。たとえば、SPD フラッシュ、アグレッシブ ドロップ、および優先順位を表示するには show interface pos 0/1 switching コマンドを使用します。
以下が一例です。
7500_Router#show interfaces FastEthernet0/0/0 is up, line protocol is up Hardware is cyBus FastEthernet Interface, address is 0090.9282.7000 (bia 0090) MTU 1500 bytes, BW 100000 Kbit, DLY 100 usec, rely 255/255, load 1/255 Encapsulation ARPA, loopback not set Keepalive set (10 sec) Full-duplex, 100Mb/s, 100BaseTX/FX ARP type: ARPA, ARP Timeout 04:00:00 Last input 00:00:01, output 00:00:01, output hang never Last clearing of "show interface" counters never Queueing strategy: fifo Output queue 0/40, 0 drops; input queue 0/75, 0 drops, 0 flushes 30 second input rate 4000 bits/sec, 9 packets/sec 30 second output rate 0 bits/sec, 0 packets/sec 2628397 packets input, 546327119 bytes, 0 no buffer Received 0 broadcasts, 0 runts, 0 giants, 0 throttles 0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored 0 watchdog, 0 multicast 0 input packets with dribble condition detected 264792 packets output, 225434458 bytes, 0 underruns 0 output errors, 0 collisions, 20 interface resets 0 babbles, 0 late collision, 0 deferred 22 lost carrier, 0 no carrier 0 output buffer failures, 0 output buffers swapped out