この製品のドキュメントセットは、偏向のない言語を使用するように配慮されています。このドキュメントセットでの偏向のない言語とは、年齢、障害、性別、人種的アイデンティティ、民族的アイデンティティ、性的指向、社会経済的地位、およびインターセクショナリティに基づく差別を意味しない言語として定義されています。製品ソフトウェアのユーザインターフェイスにハードコードされている言語、RFP のドキュメントに基づいて使用されている言語、または参照されているサードパーティ製品で使用されている言語によりドキュメントに例外が存在する場合があります。シスコのインクルーシブ ランゲージの取り組みの詳細は、こちらをご覧ください。
シスコは世界中のユーザにそれぞれの言語でサポート コンテンツを提供するために、機械と人による翻訳を組み合わせて、本ドキュメントを翻訳しています。ただし、最高度の機械翻訳であっても、専門家による翻訳のような正確性は確保されません。シスコは、これら翻訳の正確性について法的責任を負いません。原典である英語版(リンクからアクセス可能)もあわせて参照することを推奨します。
このドキュメントでは、Cisco Nexus 9500-R EoRおよびNexus 3000-R ToRの入力廃棄の原因と解決策について説明します。入力廃棄は、輻輳のために入力キューで廃棄されたパケットの数を示します。この数には、テールドロップとWeighted Random Early Detection(WRED;重み付けランダム早期検出)によって引き起こされるドロップが含まれます。
ランダム/散発性/履歴(つまり発生していない)ドロップが発生した場合は、Cisco TACに連絡して、詳細な調査を依頼してください。このウォークスルーは、入力廃棄が頻繁に増加する場合に便利です。
Rシリーズは入力VOQアーキテクチャを使用します。VOQアーキテクチャは、入力バッファの出力キューを仮想キューでエミュレートします。各出力ポートには、ユニキャストトラフィック用の8つのキューと、マルチキャストトラフィック用の8つのキューがあります。トラフィックは、パケットのClass-of-Service(CoS)またはDifferentiated Services Code Point(DSCP)値に基づいてトラフィッククラスに分類され、そのトラフィッククラスに対応する仮想キューにキューイングされます。
Rシリーズは、分散クレジットメカニズムを使用して、ファブリック上でトラフィックを転送します。パケットがVOQから送出されるようにスケジュールされる前に、入力バッファスケジューラは、出力バッファの特定のポートとプライオリティのクレジットを要求します。クレジットは、宛先ポートとプライオリティの入力クレジットスケジューラから要求されます。バッファスペースが使用可能な場合、出力スケジューラはアクセスを許可し、クレジット認可を入力バッファスケジューラに送信します。出力バッファに使用可能なバッファスペースがない場合、出力スケジュールはクレジットを付与せず、次のクレジットが使用可能になるまでトラフィックがVOQにバッファリングされます。
次に、-Rプラットフォームのパケット転送パイプラインを示します。この記事では、Ingress Traffic Managerコンポーネントに焦点を当てます。アーキテクチャの詳細については、このリンクを参照してください
入力トラフィックマネージャ(ITM)は、入力パイプラインのブロックです。VOQへのトラフィックのキューイング、ファブリック上での送信のためのトラフィックのスケジュール、クレジットの管理に関連する手順を実行します。
入力VOQバッファブロックは、オンチップバッファとオフチップパケットバッファの両方を管理します。どちらのバッファもVOQアーキテクチャを使用し、トラフィックはIRPP(Ingress Receiver Packet Processor)からの情報に基づいてキューイングされます。ユニキャストおよびマルチキャストトラフィックでは、合計96,000のVOQを使用できます。
パケットが入力パイプラインから送信される前に、パケットがファブリック経由で転送されるようにスケジュールする必要があります。入力スケジューラは、出力トラフィックマネージャブロックにある出力スケジューラにクレジット要求を送信します。入力トラフィックマネージャは、クレジットを受信すると、入力送信パケットプロセッサへのトラフィックの送信を開始します。出力バッファがいっぱいになると、トラフィックは出力ポートとトラフィッククラスで表される専用キューにバッファリングされます。
一般的に、さまざまなNexusハードウェアで次のような理由で入力廃棄が発生する可能性があります
PID |
N9K-X9636C-R |
N9K-X9636Q-R |
N9K-X9636C-RX |
N9K-X96136YC-R |
N3K-C36180YC-R |
N3K-C3636C-R |
この記事では、「input discards」のカウンタと同じ値を参照するHW内部カウンタの値は、テスト中にエラーが増加していたことと同じように変化し、関連するコマンドをライブで取得する必要があります。
この手順は後で役立ちます。
この例では、キュー7、デフォルトキューです。入力には合計8つのキューがあります。
Nexus-R# bcm-shell mod 1 "diag counters g" | /|\ | J E R I C H O N E T W O R K I N T E R F A C E | \|/ | +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+ | NBI | | RX_TOTAL_BYTE_COUNTER = 10,616,663,796 | TX_TOTAL_BYTE_COUNTER = 41,136 | | RX_TOTAL_PKT_COUNTER = 10,659,301 | TX_TOTAL_PKT_COUNTER = 606 | | RX_TOTAL_DROPPED_EOPS = 0 | | +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+ | IRE | EPNI | | CPU_PACKET_COUNTER = 606 | | | NIF_PACKET_COUNTER = 10,659,302 | EPE_BYTES_COUNTER = 41,136 | | OAMP_PACKET_COUNTER = 0 | EPE_PKT_COUNTER = 606 | | OLP_PACKET_COUNTER = 0 | EPE_DSCRD_PKT_CNT = 0 | | RCY_PACKET_COUNTER = 0 | | | IRE_FDT_INTRFACE_CNT = 0 | | +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+ | IDR | EGQ | | | | | MMU_IDR_PACKET_COUNTER = 10,659,302 | FQP_PACKET_COUNTER = 606 | | IDR_OCB_INTERFACE_COUNTER = 0 | PQP_UNICAST_PKT_CNT = 606 | | | PQP_DSCRD_UC_PKT_CNT = 0 | | | PQP_UC_BYTES_CNT = 48,408 | +-------------------------------------------+-------------------------------------------| PQP_MC_PKT_CNT = 0 | | IQM | PQP_DSCRD_MC_PKT_CNT = 0 | | | PQP_MC_BYTES_CNT = 0 | | ENQUEUE_PKT_CNT = 1,403,078 | EHP_UNICAST_PKT_CNT = 606 | | DEQUEUE_PKT_CNT = 1,403,078 | EHP_MC_HIGH_PKT_CNT = 0 | | DELETED_PKT_CNT = 0 | EHP_MC_LOW_PKT_CNT = 0 | | ENQ_DISCARDED_PACKET_COUNTER = 9,256,829 | DELETED_PKT_CNT = 0 | | Rejects: PORT_AND_PG_STATUS | | | | RQP_PKT_CNT = 606 | | | RQP_DSCRD_PKT_CNT = 0 | | | PRP_PKT_DSCRD_TDM_CNT = 0 | | | PRP_SOP_DSCRD_UC_CNT = 0 | | | PRP_SOP_DSCRD_MC_CNT = 0 | | | PRP_SOP_DSCRD_TDM_CNT = 0 | | | EHP_MC_HIGH_DSCRD_CNT = 0 | | | EHP_MC_LOW_DSCRD_CNT = 0 | | | ERPP_LAG_PRUNING_DSCRD_CNT = 0 | | | ERPP_PMF_DISCARDS_CNT = 0 | | | ERPP_VLAN_MBR_DSCRD_CNT = 0 | +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+ | | FDA | | | CELLS_IN_CNT_P1 = 0 | CELLS_OUT_CNT_P1 = 0 | | | CELLS_IN_CNT_P2 = 0 | CELLS_OUT_CNT_P2 = 0 | +-------------------------------------------+-------------------------------------------| CELLS_IN_CNT_P3 = 0 | CELLS_OUT_CNT_P3 = 0 | | IPT | CELLS_IN_TDM_CNT = 0 | CELLS_OUT_TDM_CNT = 0 | | | CELLS_IN_MESHMC_CNT = 0 | CELLS_OUT_MESHMC_CNT = 0 | | EGQ_PKT_CNT = 606 --> CELLS_IN_IPT_CNT = 606 | CELLS_OUT_IPT_CNT = 606 | | ENQ_PKT_CNT = 1,403,084 | EGQ_DROP_CNT = 0 | | FDT_PKT_CNT = 1,402,472 | EGQ_MESHMC_DROP_CNT = 0 | | CRC_ERROR_CNT = 0 | EGQ_TDM_OVF_DROP_CNT = 0 | | CFG_EVENT_CNT = 606 * | | | CFG_BYTE_CNT = 48,408 | | +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+ | FDT | FDR | | IPT_DESC_CELL_COUNTER = 5,609,892 | P1_CELL_IN_CNT = 0 | | IRE_DESC_CELL_COUNTER = 0 | P2_CELL_IN_CNT = 0 | | | P3_CELL_IN_CNT = 0 | | TRANSMITTED_DATA_CELLS_COUNTER = 5,609,892 | CELL_IN_CNT_TOTAL = 0 | +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+ | /|\ | J E R I C H O F A B R I C I N T E R F A C E | \|/ |
0より大きいQUEUE_DELETED_PACKET_COUNTERは、パケットがIQM(Ingress Queueing Manager)によって削除されたことを示します。これは、アクティブなキューがクレジットを受け取っていないため、スケジューリング方式の設定ミスを示唆します。これはbcm-shell mod X "getReg IQM_QUEUE_DELETED_PACKET_COUNTER"で確認できます
ENQ_DISCARDED_PACKET_COUNTERは、エンキュー前にパケットが廃棄されたことを意味します。このカウンタはBCMでも設定されています(読み取り時にコマンドがクリアされます)。
show hardware internal errors module X(コマンドが読み取り時にクリアートされる)を使用すると、常に次のことがわかります。
この例では、Eth1/33を表示しています。実際のネットワークでは、輻輳した出力ポートを認識していません。
このコマンドは、特定のポートの入力VoQのフローの詳細を表示します。また、VoQの現在の信用残高も示します。
ポートのVOQは次のように生成されます。
LCは0ベース:モジュール1は0、モジュール2は1など
LCごとに256のシステムポートIDがあります
ID = (LC *システムポートID) + FP番号
Eth1/9 = (0 * 256) + 9 = 9
VOQ ID = 32 +(システムポートID * 8)
Eth1/9 = 32 + (9 * 8) = 104
したがって、Eth1/9のVOQは、以前に収集した出力と一致する104になります
キューが303の場合、これらのキューは実際には範囲であるため、303 + 7または303-7になります。問題は、296-303または303-310の範囲で一致するVOQがあるポートはどれですか。
Eth1/9のキュー7が輻輳していることがわかっているため、実際には303が範囲の中で最も高いため、296 ~ 303の範囲は十分に知識のある推測です。
ASIC 0についても同じ内容を表示します。簡略化のためにはここでは示しません。Voq列の下に、対象の範囲がそのASICに含まれていないことがわかります
上記の出力には、いくつかの点があります。
この時点で、出力の輻輳ポートが見つかりました。ネットワークに誤ってバーストしているかどうかや、SPANを設定し、宛先ポートが1Gで、1つ以上の10Gインターフェイスを発信しているか、ボトルネックや設計の問題かどうかを確認します。
これらは、より高度です。通常のシナリオでは、Egress Congestedポートを検出する必要はありません。
attach module X show hardware internal jer-usd tm_debug asic <slot> module <module> show hardware internal jer-usd info voq [ asic <instance> ] [ port <port> ] [ ] show hardware internal jer-usd info non-empty voq asic [ <instance> ] [ ] show hardware internal jer-usd info voq-profile { QueueThreshold drop_p <dp> | OCBThreshold } [ asic <instance> ] [ port<port> ] [ ] show hardware internal jer-usd info voq-connector front-port <port> [ ] show hardware internal jer-usd stats vsq { front-port <port> | inband asic <slot> | recycle-port <port> asic <slot> } show hardware internal jer-usd ingress-vsq buffer-occupancy front-port <port> show hardware internal jer-usd info IQM { counter | rate } asic <instance> dst-port <port> [ interval <int> ] [ ] show hardware internal jer-usd info SCH { counter | rate } asic <instance> dst-port <port> [ interval <int> ] [ ]
bcm-shell mod X
diag cosq print_flow_and_up dest_id=<flow_id>
diag cosq voq id=<voqid> detailed=1
diag cosq qpair e2e ps=<id>
cosq conn ing
cosq conn egr
dump IPS_CR_BAL_TABLE <voqID>
getReg IQM_QUEUE_MAXIMUM_OCCUPANCY_QUEUE_SIZE
トラフィックジェネレータが各サーバに2Gのトラフィックを送信する次のトポロジを考えます。
どのキューが空でないかを迅速にチェックします。4つがあることに注意してください。
これらのキューが属するインターフェイスを判別します。最初にASIC 0をチェックします(1つのインターフェイスでのみ示されます)。
他の3つのキュー値についても、同じプロセスを繰り返します。247、303、351。
Eth1/33をSPAN宛先ポートとして設定し、Eth1/9をRX方向のSPAN送信元ポートとして設定します
Eth1/9が10.10.10.1/24にあるSRC 10.10.10.10およびDEST 192.168.10.10を使用してパケットを送信する – これはInput Discard(INPUT;入力廃棄)にはなりません。ただし、次のカウンタが表示されます。
Nexus-R# bcm-shell mod 1 "diag counters g" | /|\ | J E R I C H O N E T W O R K I N T E R F A C E | \|/ | +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+ _PACKET_COUNTER = 0 | DELETED_PKT_CNT = 12,027,201 | | | Discards: INVALID_OTM SRC_EQUAL_DEST +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+
SRC 10.10.10.10およびDEST 192.168.10.10を使用してパケットを送信します。ここで、Eth1/9は10.10.10.1/24に存在し、Eth1/33は172.16.0.1/30サブネットのL3ポートです。ドロップカウンタは発生せず、宛先が不明な場合でも入力廃棄はありません。
Eth1/9が単なるワイドトランク(またはアクセスポート)である場合にパケットを送信する:ポートがSTPフォワーディングステートに移行する間、これはInput Discard(INPUT;入力廃棄)として登録されます。
Nexus-R(config)# int e1/9
Nexus-R(config-if)# switchport mode trunk
Nexus-R# bcm-shell mod 1 "diag counters g" | i i --|IQM|ENQ_DISCARD|Rejects +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+ +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+ +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+ +-------------------------------------------+-------------------------------------------| PQP_MC_PKT_CNT = 1,678,949 | | IQM | PQP_DSCRD_MC_PKT_CNT = 11,369,033 | | ENQ_DISCARDED_PACKET_COUNTER = 1,289,182 | DELETED_PKT_CNT = 11,369,081 | | Rejects: QUEUE_NOT_VALID_STATUS | Discards: SRC_EQUAL_DEST | +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+
Nexus-R# show span int e1/9
Vlan Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
VLAN0001 Desg BLK 2 128.9 P2p
VLAN0010 Desg BLK 2 128.9 P2p
<snip>
QUEUE_NOT_VALID_STATUSは、パケットプロセッサ(PP)によるドロップの決定またはパケットプロセッサ(PP)ブロックから受信した無効な宛先によるドロップです。
Eth1/9に10G+を送信すると、最初の場所でEth1/9を上限としているため、異なるタイプのドロップが発生します。それでもInput Discardとしてカウントされます。
bcm-shell.0> diag counters g | /|\ | J E R I C H O N E T W O R K I N T E R F A C E | \|/ | +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+ | NBI | | RX_TOTAL_BYTE_COUNTER = 53,913,106,009 | TX_TOTAL_BYTE_COUNTER = 1,164,231 | | RX_TOTAL_PKT_COUNTER = 54,145,395 | TX_TOTAL_PKT_COUNTER = 17,029 | | RX_TOTAL_DROPPED_EOPS = 0 | | +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+ | IRE | EPNI | | CPU_PACKET_COUNTER = 17,010 | | | NIF_PACKET_COUNTER = 54,145,476 | EPE_BYTES_COUNTER = 5,721,307 | | OAMP_PACKET_COUNTER = 0 | EPE_PKT_COUNTER = 50,703 | | OLP_PACKET_COUNTER = 0 | EPE_DSCRD_PKT_CNT = 0 | | RCY_PACKET_COUNTER = 16,837 | | | IRE_FDT_INTRFACE_CNT = 0 | | +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+ | IDR | EGQ | | | | | MMU_IDR_PACKET_COUNTER = 54,128,577 | FQP_PACKET_COUNTER = 50,703 | | IDR_OCB_INTERFACE_COUNTER = 0 | PQP_UNICAST_PKT_CNT = 50,683 | | | PQP_DSCRD_UC_PKT_CNT = 0 | | | PQP_UC_BYTES_CNT = 5,216,716 | +-------------------------------------------+-------------------------------------------| PQP_MC_PKT_CNT = 20 | | IQM | PQP_DSCRD_MC_PKT_CNT = 20 | | | PQP_MC_BYTES_CNT = 2,079 | | ENQUEUE_PKT_CNT = 5,463,323 | EHP_UNICAST_PKT_CNT = 50,683 | | DEQUEUE_PKT_CNT = 5,594,400 | EHP_MC_HIGH_PKT_CNT = 20 | | DELETED_PKT_CNT = 0 | EHP_MC_LOW_PKT_CNT = 0 | | ENQ_DISCARDED_PACKET_COUNTER = 48,716,055 | DELETED_PKT_CNT = 40 | | Rejects: VOQ_MX_QSZ_STATUS | | <snip>