はじめに
このドキュメントでは、Cisco IOS® XEルータでのインターフェイスのパケットドロップをトラブルシューティングする方法について説明します。
要件
パケットフローとCisco IOS XEに関する基礎知識
使用するコンポーネント
このドキュメントは、ISR 4000ルータやASR 1000ルータなどのCisco IOS XEルータプラットフォームに基づいています。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
背景説明
Cisco IOS XEルータでは、次のようなさまざまなコンポーネントでパケットドロップが発生する可能性があります。
この廃棄は、インターフェイス上の入力方向または出力方向のいずれかで観察できます。QFPを分析する際、主に出力廃棄に注目します。
Cisco IOS XEデバイスのコントロールプレーンに影響するパケットドロップについては、「ガイド:ポリサーがしきい値を超えた場合のトラブルシューティング」に記載されているパントドロップを参照してください。
入力ドロップ
インターフェイスでは、入力キューでの入力廃棄が発生する可能性があります。このカウンタは、入力キューフィールドのドロップ数カウンタのセクションでコマンドshow interfacesを使用して調べることができます。
---- show interfaces ----
GigabitEthernet0/0/0 is up, line protocol is up
Input queue: 0/375/71966/0 (size/max/drops/flushes); Total output drops: 47009277
インターフェイスの入力廃棄カウンタは、show interface summaryコマンドのIQD 列にも表示されます。この列は入力キューから廃棄されたパケットを表しています。
---- show interface summary ----
Interface IHQ IQD OHQ OQD RXBS RXPS TXBS TXPS TRTL
-----------------------------------------------------------------------------------------------------------------
* Te0/0/0 0 0 0 0 29544000 2830 1957000 1446 0
* Te0/0/1 0 0 0 0 23476000 2555 16655000 3346 0
* GigabitEthernet0/0/0 0 71966 0 47019440 18852000 5321 59947000 6064 0
通常、インターフェイスでの入力廃棄は、入力キューがいっぱいになり、時間内に処理できない場合に発生します。その結果、使用されているキューイングアルゴリズムに基づいてパケットを選択的に廃棄できます。
入力ドロップの考えられる原因には次のものがあります。
- 送信側デバイスが受信側デバイスの処理能力を超えるレートでパケットを送信しているため、入力キューが使い果たされています
- トラフィックパターンのバーストまたはマイクロバースト
- プラットフォームの制限
インターフェイスレベルでhold-queue コマンドを使用し、入力キューサイズを増やしてみてください。
Router(config-if)#hold-queue ?
<0-240000> Queue length
注:一部のプラットフォームでは、hold-queueコマンドを有効にできません。プラットフォームの仕様を確認するか、TACにケースを提出します。
注:フロー制御メカニズムを使用して、受信側デバイスから送信側デバイスにポーズフレームを送信することもできます。フロー制御の詳細については、各プラットフォームの『インターフェイスおよびハードウェアコンポーネント設定ガイド』を参照してください。
インターフェイスでの出力廃棄
インターフェイスでの出力廃棄は出力キューで発生し、show interfacesコマンドで確認できます。
---- show int gi 1/0/46 ----
GigabitEthernet1/0/46 is up, line protocol is up (connected)
Input queue: 0/2000/0/0 (size/max/drops/flushes); Total output drops: 154786
Total Output Dropsカウンタは、該当するインターフェイスの出力キューの飽和状態を示します。この状態は、輻輳を管理するためにパケットを選択的に廃棄できるQuality of Service(QoS)などのメカニズムによって悪化する可能性があります。
QoSによってトラフィックの優先順位が変更されるので、トラブルシューティングのもう1つの手順は、コマンドservice-policyの出力を使用して、出力方向で設定されたポリシーマップを介して、インターフェイスがデフォルト以外のキューイング方式を使用しているかどうかを確認することです。
interface GigabitEthernet0/1
service-policy output PRIORITIZE-VOICE
出力廃棄が、実装されているサービス品質(QoS)メカニズムによって発生したものであるかどうかを確認するには、show policy-map interface <interface-name> outコマンドを使用します。次に例を示します。
---- show policy-map interface gi0/0/0 output ----
GigabitEthernet0/0/0
Service-policy output: PRIORITIZE-VOICE
queue stats for all priority classes:
Queueing
queue limit 512 packets
(queue depth/total drops/no-buffer drops) 0/0/0
(pkts output/bytes output) 0/0
Class-map: VOICE (match-any)
0 packets, 0 bytes
5 minute offered rate 0000 bps, drop rate 0000 bps
Match: dscp ef (46)
Priority: Strict, b/w exceed drops: 0
Class-map: class-default (match-any)
0 packets, 0 bytes
5 minute offered rate 0000 bps, drop rate 0000 bps
Match: any
queue limit 4166 packets
(queue depth/total drops/no-buffer drops) 0/0/0
(pkts output/bytes output) 0/0
Router#
このコマンドは、設定されたクラス間のQuality of Service(QoS)メカニズムによる廃棄を表示します。
注:インターフェイスでの出力廃棄が、ポリシーマップで確認される廃棄と相関する場合、廃棄は一般に、設定されているQuality of Service(QoS)によって予測されます。必要に応じてTACに連絡し、使用するQoSメカニズムを詳しく調べ、この機能に対応するガイドを参照してください。
QoSの動作と実装方法の詳細については、『Quality of Service(QoS)設定ガイド、Cisco IOS XE 17.x』を参照してください。
キューイング方式を表示するには、show interfacesコマンドを使用してキューイング方式の値を確認します。デフォルトでは、発信パケットの処理方式は先入れ先出し(FIFO)です。
---- show interfaces gigabitEthernet 0/0/0 ----
Queueing strategy: Class-based queueing
Quality of Service(QoS)が確立されない場合の出力ドロップ
インターフェイスのquality of service(QoS)の出力方向にポリシーマップが関連付けられていない場合、他の原因によって出力ドロップが発生する可能性があります。
Quality of Service(QoS)が設定されていないインターフェイスで出力廃棄が発生する理由には、次のようなものがあります。
- ポートチャネルを形成し、1つの出力インターフェイスでオーバーサブスクライブしている着信インターフェイス
- Quantum Flow Processor(QFP)バックプレッシャ
- ライセンススループットの制限
- プラットフォームの制限
この状態をさらにトラブルシューティングするには、このドキュメントの「Quantum Flow Processor(QFP)ドロップ」セクションを参照してください。
Quantum Flow Processor(QFP)ドロップ
QFPドロップの理由を検証するには、以下に示すように、show platform hardware qfp active statistics drop コマンドを使用します。
---- show platform hardware qfp active statistics drop ----
Last clearing of QFP drops statistics : never
-------------------------------------------------------------------------
Global Drop Stats Packets Octets
-------------------------------------------------------------------------
BFDoffload 23944858 1904416850
IpTtlExceeded 184211 28644972
IpsecIkeIndicate 175 26744
IpsecInput 686112 171458640
IpsecInvalidSa 1 80
Ipv4Martian 4 392
Ipv4NoAdj 19776 6587643
Ipv4NoRoute 75 10950
Ipv6NoRoute 27068 1515808
ReassDrop 3489529 450382594
ReassNoFragInfo 4561070 6387610348
ReassOverlap 3 198
ReassTimeout 7408271 2631950860
TailDrop 193769387 157113756882
このコマンドは、QFPドロップのさまざまな原因と、各カテゴリの関連するパケットカウンタを示します。
注:ほとんどのQFPドロップカテゴリの理由は、その名前で説明がつきます。reasonカテゴリは、トラブルシューティングフローを示します。一般的ではないパケットドロップカテゴリの場合は、必要に応じてCisco TACにケースを提出してください。
テールドロップ
最も頻繁に見られるドロップタイプの1つにTailDropカウンタがあります。このカウンタは通常、次の理由で増加します。
生成されたログの種類:
%BW_LICENSE-4-THROUGHPUT_MAX_LEVEL: F0/0: cpp_ha_top_level_server:最後の<period>時間の<sampling-number>サンプリング期間中に、平均スループットレートがライセンスされた帯域幅<mbps> Mbpsに近づきました。サンプリング期間は<sampling-period>秒です
確認コマンド:
- show platform hardware qfp active infrastructure bqs queue output default interface <インターフェイス>
- show plat hardware qfp active infrastructure bqs queue output default all
- show platform hardware qfp active feature lic-bw oversubscription
- show platform hardware throughput level(プラットフォームのハードウェアスループットレベル)
- show platform hardware throughput crypto(プラットフォームのハードウェアのスループットを表示)
影響を受けるトラフィックがドロップされているかどうか、およびQFPによる詳細なパケット処理のビュー(パケットトレース機能)を理解するには、パケットトレース機能を使用します。「Cisco IOS XEデータパスパケットトレース機能のトラブルシューティング」を参照してください。
生成されたログの種類:
%IOSXE_QFP-2-LOAD_EXCEED: Slot: 0, QFP:0, Load <load-percentage>%が設定しきい値を超えています。
注:プラットフォーム制限のスループット数とデータシートのスケーリングを参照してください。スループットは、デバイスの設定に含まれる機能の数と用途によって異なります。また、QFPに挿入される集約ビット/秒(bps)によっても異なります。
コマンドshow platform hardware qfp active datapath utilization summaryを使用すると、直前の5秒、1分、5分、または60分でQFP使用率を確認できます。
---- show platform hardware qfp active datapath utilization summary ----
CPP 0: 5 secs 1 min 5 min 60 min
Input: Total (pps) 1 2 2 2
(bps) 320 1032 1032 1032
Output: Total (pps) 0 1 1 1
(bps) 0 8560 8560 8576
Processing: Load (pct) 0 0 0 0
Crypto/IO
Crypto: Load (pct) 0 0 0 0
RX: Load (pct) 0 0 0 0
TX: Load (pct) 2 2 2 2
Idle (pct) 97 97 97 97
QFPでの追加のドロップ検証については、show drops { bqs | crypto| firewall| interface| ip-all| nat| punt| qfp| qos|history}コマンドを使用します。詳細については、『Cisco Catalyst 8500 and 8500Lシリーズエッジプラットフォームソフトウェアコンフィギュレーションガイド』を参照してください。
パケットドロップのトラブルシューティングに関するその他のヒント
インターフェイス上のカウンタ
show interfaces [interface]コマンドを介したさまざまなカウンタが表示されます。各カウンタの意味については、『イーサネットのトラブルシューティング』のドキュメントで説明されています。
履歴ビット/秒CLIベースのグラフ
インターフェイスレベルでhistory bpsコマンドを使用すると、インターフェイスからの着信方向と発信方向のCLI内で1秒あたりの履歴ビットのグラフビューを有効にできます。この設定により、インターフェイス上のbpsの履歴のグラフが生成されます。
Router(config)#interface gigabitEthernet 0/0/0
Router(config-if)#history bps
history bps output-dropsや他のカウンタの履歴を有効にすることもできます。
時間の経過に伴う履歴カウンタの結果を表示するには、show interfaces <interface> history コマンドを使用します。
---- show interfaces gigabitEthernet 0/0/0 history ? ----
60min Display 60 minute histograms only
60sec Display 60 second histograms only
72hour Display 72 hour histograms only
all Display all three histogram intervals
both Display both input and output histograms
input Display input histograms only
output Display output histograms only
| Output modifiers
#show int gi1 history 60sec
90100 *
82100 *
74100 ******
66100 ***********
58100 ***********
50100 ****************
42100 *********************
34100 *******************************
26100 ************************************
18100 ***************************************************
10100 **********************************************************
0....5....1....1....2....2....3....3....4....4....5....5....6
0 5 0 5 0 5 0 5 0 5 0
GigabitEthernet1 output rate(mbits/sec) (last 60 seconds)
clear counters
次のコマンドは、さまざまなカウンタ統計情報をクリアするために使用されます。
- clear counters:インターフェイスレベルのカウンタデータをクリアします。
- show platform hardware qfp active statistics drop clear:QFP(Quantum Flow Processor)の廃棄カウンタをリセットします。
時間の経過に伴うドロップの割合
インターフェイスレベルでhistory bps output-dropsコマンドを使用して経時的なドロップを理解する以外に、出力ドロップ数が影響を与えるかどうかを確認するには、他のカウンタ値を使用して最後にカウンタがクリアされてからの出力ドロップの全体的な割合を取得します。
最後のブート以降もカウンタがクリアされていない場合は、show versionコマンドを使用してシステムの稼働時間を取得するか、show interfacesコマンドを使用してshow interface countersの最後のクリアの値を参照します。
カウンタが最後にクリアされた時点、またはデバイスの稼働時間を特定した後に、その期間中に発生した出力廃棄の割合を計算します。
これは、出力ドロップの合計値に100を掛けてから、show interfaces <interface>コマンドからのパケット出力カウンタ値を結果を除算することで実行できます。この操作の結果から、その時間枠におけるそのインターフェイスの出力廃棄の割合がわかります。
注:show interfacesおよびshow platform hardware qfp active statistics dropのカウンタは履歴であり、最後にクリアされてからの累積であることに注意してください。カウンタは、リロードが実行されるとクリアされます。
次の出力例を参照してください。
---- show version ----
Hostname uptime is 51 weeks, 1 day, 14 hours, 17 minutes
---- show interface GigabitEthernet0/0/1 ----
GigabitEthernet0/0/1 is up, line protocol is up
Last clearing of "show interface" counters never
Input queue: 0/375/0/0 (size/max/drops/flushes); Total output drops: 1351
219128599 packets output, 84085726336 bytes, 0 underruns
この出力例は、インターフェイスのカウンタが一度もクリアされなかったことを示しています。つまり、デバイスの稼働時間の最後の51週間の合計出力廃棄の割合は、( 1351 x 100 ) / 219128599 = .0006%です。
この割合を解釈すると、このインターフェイスでの合計出力ドロップ数は有意ではなく、このカウンタは履歴および累積カウンタで、長時間のアップタイムを考慮すると、ドロップ数は影響を与えないことがわかります。
読み込み間隔
負荷間隔はインターフェイスレベルの設定パラメータで、負荷統計の計算に使用されるデータの時間の長さを示します。
Router#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#interface gigabitEthernet 0/0/0
Router(config-if)#load-interval ?
<30-600> Load interval delay in seconds
load-intervalパラメータの結果は、入力および出力レート値の下のコマンドshow interfacesに反映されます。
---- show interfaces gigabitEthernet 0/0/0 ----
GigabitEthernet0/0/0 is administratively down, line protocol is down
5 minute input rate 0 bits/sec, 0 packets/sec
5 minute output rate 0 bits/sec, 0 packets/sec
これは、show interfacesコマンドを実行する際の1秒あたりのビット数を確認する際に重要になります。
入力レートと出力レートの値は、インターフェイスで入出力される1秒あたりのビット数を理解するのに役立ちます。
すべてのインターフェイスでの入力および出力レート値の大まかな概要を確認するには、show interface summaryコマンドを使用し、物理インターフェイスから集約された出力レートを取得します。これは、特定の時点での1秒当たりの合計集約ビット数を理解するのに役立ちます。 次の出力例のRXBSカウンタとTXBSカウンタを参照してください。
---- show interfaces summary ----
*: interface is up
IHQ: pkts in input hold queue IQD: pkts dropped from input queue
OHQ: pkts in output hold queue OQD: pkts dropped from output queue
RXBS: rx rate (bits/sec) RXPS: rx rate (pkts/sec)
TXBS: tx rate (bits/sec) TXPS: tx rate (pkts/sec)
TRTL: throttle count
Interface IHQ IQD OHQ OQD RXBS RXPS TXBS TXPS TRTL
-----------------------------------------------------------------------------------------------------------------
* GigabitEthernet0/0/0 1 0 0 0 9000 19 0 0 0
GigabitEthernet0/0/1 0 0 0 0 0 0 0 0 0
GigabitEthernet0/0/2 0 0 0 0 0 0 0 0 0
* GigabitEthernet0/0/3 0 0 0 0 9000 19 0 0 0
QoSポリシーを一時的に削除する
トラブルシューティングを行うには、影響を受けるインターフェイスからQoSポリシーを一時的に削除します。インターフェイス設定レベルで、コマンドno service-policy output <policy-name>を使用します。
- QoSポリシーを適用せずにドロップが続く場合、問題はQoSとは無関係です。
- QoSポリシーを削除した後にドロップが停止する場合は、ポリシーが原因である可能性があります。
注:TACのサポートが必要な場合は、ドロップがサービス品質に起因するものかどうかを判断する分離が重要です。この分離は初期段階で適切なエキスパートにケースを転送します。
注:ドロップはIPSec機能が原因である可能性もあります。Ipsecドロップは一般に、トンネル送信元として使用される物理インターフェイスに集約されます。トンネルの使用時にのみドロップが発生する場合は、サポートが必要かどうかをTACに知らせることが重要です。これにより、初期段階で対応するチームにケースをルーティングできます
関連記事およびドキュメント