概要
本書では、各障害タイプと、その障害が発生したときの手順について説明します。シスコ アプリケーション セントリック インフラストラクチャ(ACI)ファブリックの通常操作中に、管理者は特定のタイプのパケット ドロップの障害に遭遇する場合があります。
管理対象オブジェクト
Cisco ACI では、すべてのエラーは管理対象オブジェクト(MO)で挙げられます。 たとえば、障害「F11245 - 入力のドロップ パケット レート(l2IngrPktsAg15min:dropRate)」は MO l2IngrPktsAg15min の dropRate パラメータに関してです。
このセクションでは、ドロップパケットの障害に関するマネージドオブジェクト(MO)の例をいくつか紹介します。
|
例 |
説明 |
サンプルパラメータ |
MOのサンプル 障害が発生する |
l2IngrPkts |
l2IngrPkts5min l2IngrPkts15min l2IngrPkts1h など... |
これは VLAN ごとの各時間内の入力パケットの統計を表します |
dropRate floodRate multicastRate unicastRate |
vlanCktEp(VLAN) |
l2IngrPktsAg |
l2IngrPktsAg15min l2IngrPktsAg1h l2IngrPktsAg1d など... |
これは EPG、BD、VRF 等ごとの入力パケットの統計を表します 例) EPG統計情報は、EPGに属するVLAN統計情報の集約を表します |
dropRate floodRate multicastRate unicastRate |
fvAEPg(EPG) fvAp(アプリケーションプロファイル) fvBD(BD) l3extOut(L3OUT) |
eqptIngrDropPkts |
eqptIngrDropPkts15min eqptIngrDropPkts1h eqptIngrDropPkts1d など... |
これはインターフェイスごとの各時間内の入力ドロップ パケット統計を表します |
*1 forwardingRate *1 errorRate *1 bufferRate
|
l1PhysIf(物理ポート) pcAggrIf(ポートチャネル) |
*1:SUP_REDIRECTパケットが転送ドロップとしてログに記録されるため、eqptIngrDropPktsのこれらのカウンタは、いくつかのNexus 9000プラットフォームでのASICの制限により、誤って増加される可能性があります。CSCvo68407も参照 およびCSCvn72699 を参照してください。
ハードウェア ドロップ カウンタのタイプ
ACI モードで動作する Nexus 9000 スイッチには、ASIC での入力インターフェイスのドロップの原因に関する主要なハードウェア カウンタが 3 つあります。
l2IngrPkts、l2IngrPktsAg の dropRate には、これらのカウンタが含まれます。eqptIngrDropPkts の上記の表の 3 つのパラメータ(forwardingRate、errorRate、bufferRate)は、それぞれ 3 つのインターフェイス カウンタを表します。
[転送(Forward)]
転送ドロップは ASIC の LookUp(LU)ブロックでドロップされるパケットです。LU ブロックでは、パケット転送の判断は、パケット ヘッダー情報に基づいて行われます。パケットをドロップする判断の場合、転送ドロップがカウントされます。これが起きる原因はさまざまですが、主要なものに焦点をあてて説明します。
SECURITY_GROUP_DENY
通信を許可す契約の欠如が原因のドロップ。
パケットがファブリックに入ると、スイッチは送信元と宛先 EPG を参照してこの通信を可能にする契約があるかどうかを確認します。 送信元および宛先が異なる EPG にあり、その間でこのパケット タイプを許可する契約がない場合、スイッチはパケットをドロップし、SECURITY_GROUP_DENY であると分類します。この場合転送ドロップ カウンタが増えます。
VLAN_XLATE_MISS
不適切な VLAN によるドロップ。
パケットがファブリックに入ると、スイッチはパケットを参照して、このポートの設定でこのパケットの受け入れが可能か判断します。 たとえば、フレームは802.1Qタグ10でファブリックに入ります。スイッチのポートにVLAN 10がある場合は、内容を検査し、宛先MACに基づいて転送を決定します。ただし、VLAN 10がポートにない場合は廃棄し、VLAN XLATE XLATE_MISS転送ドロップカウンタが増加します。
「XLATE」、つまり「変換」となる原因は、ACI ではリーフ スイッチがカプセル化された 802.1Q のフレームを受け入れ、VXLAN もしくはファブリック内でその他の正規化に使用する新しい VLAN に変更するためです。 導入されていない VLAN のフレームが入ると 「変換」は失敗します。
ACL_DROP
sup-tcam によるドロップ。
ACI のスイッチの sup-tcam には、通常の L2/L3 転送の判断に加えて適用する特殊なルールが含まれます。sup-tcam ルールは組み込み型でユーザ設定はできません。sup-tcam ルールの目的は主に一部の例外やコントロール プレーン トラフィックを処理することにあり、ユーザがチェックしたりモニタしたりするようには意図されていません。パケットが sup-tcam ルールに抵触していて、パケットをドロップするルールである場合、ドロップされたパケットは ACL_DROP としてカウントされ、転送ドロップ カウンタでカウントされます。これが発生すると、通常はパケットが基本的な ACI の転送の原則に反する転送をされようとしていることを意味します。
ドロップの名前が ACL_DROP であっても、この「ACL」はスタンドアロン NX-OS デバイスや他のルーティング/スイッチング デバイスに設定できる通常のアクセス コントロール リストと同じではないことに注意してください。
SUP_REDIRECT
これはドロップではありません。
Supによってリダイレクトされたパケット(CDP/LLDP/UDLD/BFDなど)は、パケットが正しく処理されてCPUに転送されたとしても、転送ドロップとしてカウントされることがあります。
これは N9K-C93180YC-EX など -EX プラットフォームでのみ発生します。しかしこれは -EX プラットフォームの ASIC の制限によるものなので、「ドロップ」に数えるべきではありません。
エラー
スイッチが前面パネルインターフェイスの1つで無効なフレームを受信すると、エラーとしてドロップされます。 この例として、FCS や CRC エラーのフレームなどがあります。アップリンク/ダウンリンクのリーフポート、またはスパインポートを調べる場合は、「show interface」を使用してFCS/CRCエラーをチェックするのが最適です。
ただし、通常の動作時には、リーフのアップリンク/ダウンリンクポートまたはスパインポートでエラーパケットが増加することが予想されます。このカウンタには、システムによってプルーニングされ、インターフェイスから送信されないフレームも含まれます。
例:ルーテッドパケット、同じインターフェイスブロードキャスト/フラッディングフレームのTTL障害。
バッファ
スイッチがフレームを受信し、入出力のいずれかで使用できるバッファ クレジットがない場合は、フレームは「バッファ」でドロップされます。 これは、ネットワークのどこかで輻輳が発生していることを示唆しています。 エラーを示すリンクが満杯だったり、宛先を含むリンクが輻輳しているかもしれません。
CLI でのドロップ状態表示
管理対象オブジェクト
APIC の 1 つにセキュア シェル(SSH)接続し、次のコマンドを実行します。
apic1# moquery - c l2IngrPktsAg15min
このコマンドは、このクラス l2IngrPktsAg15min 用にすべてのオブジェクト インスタンスを提供します。
特定のオブジェクトを照会するフィルタの例を示します。この例では、フィルタは、「tn-TENANT1/ap APP1/epg EPG1」を含む dn の属性のオブジェクトのみを示します。
また、この例では必要な属性だけを表示するために egrep を使用しています。
出力例1:TENANT1、アプリケーション プロファイル APP1、epg EPG1 の EPG カウンタ オブジェクト(l2IngrPktsAg15min)。
apic1# moquery -c l2IngrPktsAg15min -f 'l2.IngrPktsAg15min.dn*"tn-TENANT1/ap-APP1/epg-EPG1"' | egrep 'dn|drop[P,R]|rep'
dn : uni/tn-TENANT1/ap-APP1/epg-EPG1/CDl2IngrPktsAg15min
dropPer : 30 <--- number of drop packet in the current periodic interval (600sec)
dropRate : 0.050000 <--- drop packet rate = dropPer(30) / periodic interval(600s)
repIntvEnd : 2017-03-03T15:39:59.181-08:00 <--- periodic interval = repIntvEnd - repIntvStart
repIntvStart : 2017-03-03T15:29:58.016-08:00 = 15:39 - 15:29
= 10 min = 600 sec
または、オブジェクト dn がわかっている場合、-c の代わりにオプション -d を使用して特定のオブジェクトを取得することができます。
出力例 2:TENANT1、アプリケーション プロファイル APP1、epg EPG2の EPG カウンタ オブジェクト(l2IngrPktsAg15min)。
apic1# moquery -d uni/tn-TENANT1/ap-APP1/epg-EPG2/CDl2IngrPktsAg15min | egrep 'dn|drop[P,R]|rep'
dn : uni/tn-jw1/BD-jw1/CDl2IngrPktsAg15min
dropPer : 30
dropRate : 0.050000
repIntvEnd : 2017-03-03T15:54:58.021-08:00
repIntvStart : 2017-03-03T15:44:58.020-08:00
ハードウェアカウンタ
エラーが表示される場合や、CLI を使用してスイッチポートのパケット ドロップを確認する場合は、一番の方法はハードウェアのプラットフォーム カウンタを表示することです。一部の例外を除き、ほとんどすべてのカウンタは show interface を使用して表示できます。 3 つの主要なドロップの原因はプラットフォーム カウンタを使用してのみ表示できます。 これらを表示するには、次の手順を実行します。
リーフ
リーフに SSH 接続し、次のコマンドを実行します。
ACI-LEAF#vsh_lc
module-1# show platform internal counters port <X>
* X はポート番号を表します
イーサネット 1/31 の出力例:
ACI-LEAF# vsh_lc
vsh_lc
module-1#
module-1# show platform internal counters port 31
Stats for port 31
(note: forward drops includes sup redirected packets too)
IF LPort Input Output
Packets Bytes Packets Bytes
eth-1/31 31 Total 400719 286628225 2302918 463380330
Unicast 306610 269471065 453831 40294786
Multicast 0 0 1849091 423087288
Flood 56783 8427482 0 0
Total Drops 37327 0
Buffer 0 0
Error 0 0
Forward 37327
LB 0
AFD RED 0
----- snip -----
スパイン
ボックス型スパイン(N9K-C9336PQ)は、リーフとまったく同じです。
モジュラスパイン(N9K-C9504など)の場合は、プラットフォームカウンタを表示する前に、まず特定のラインカードを取り付ける必要があります。 スパインに SSH 接続して、次のコマンドを実行します。
ACI-SPINE#vsh
ACI-SPINE# attach module <X>
module-2# show platform internal counters port <Y>.
* X は、表示したいラインカードのモジュール番号を表します
Y はポート番号を表します
イーサネット 2/1 の出力例:
ACI-SPINE# vsh
Cisco iNX-OS Debug Shell
This shell should only be used for internal commands and exists
for legacy reasons. User should use ibash infrastructure as this
will be deprecated.
ACI-SPINE#
ACI-SPINE# attach module 2
Attaching to module 2 ...
To exit type 'exit', to abort type '$.'
Last login: Mon Feb 27 18:47:13 UTC 2017 from sup01-ins on pts/1
No directory, logging in with HOME=/
Bad terminal type: "xterm-256color". Will assume vt100.
module-2#
module-2# show platform internal counters port 1
Stats for port 1
(note: forward drops includes sup redirected packets too)
IF LPort Input Output
Packets Bytes Packets Bytes
eth-2/1 1 Total 85632884 32811563575 126611414 25868913406
Unicast 81449096 32273734109 104024872 23037696345
Multicast 3759719 487617769 22586542 2831217061
Flood 0 0 0 0
Total Drops 0 0
Buffer 0 0
Error 0 0
Forward 0
LB 0
AFD RED 0
----- snip -----
障害
F112425:入力ドロップパケットレート(l2IngrPktsAg15min:dropRate)
説明:
この障害の一般的な原因の1つは、レイヤ2パケットが「転送ドロップ」の理由でドロップされることです。さまざまな理由がありますが、最も一般的な理由は次のとおりです。
一部のプラットフォーム(CSCvo68407を参照) )。CPUにリダイレクトする必要があるL2パケット(CDP/LLDP/UDLD/BFDなど)が「転送ドロップ」として記録され、CPUにコピーされる制限があります。これは、これらのモデルで使用されるASICの制限によるものです。
解決策:
上記のドロップは純粋に表面的なものなので ベストプラクティスでは、「統計しきい値」セクションに示すように、障害のしきい値を増やすことをお勧めします。 方法については「統計情報のしきい値」の手順を参照してください。
F100264 - 入力バッファのドロップ パケット レート(eqptIngrDropPkts5min:bufferRate)
説明:
このエラーはバッファの理由でパケットがポートにドロップされているときに増加します。前述のように、通常これはインターフェイスの輻輳が出入力どちらかの方向で起こっているときに発生します。
解決策:
このエラーは、輻輳による環境で実際にドロップされたパケットを表します。 ドロップされたパケットは ACI ファブリックで稼働するアプリケーションの問題を引き起こしている可能性があります。ネットワーク管理者はパケット フローを分離し、輻輳が予想外のトラフィック フロー、非効率なロード バランシングなど、あるいはこれらのポートの想定内の使用によるものであるかどうかを判断する必要があります。
F100696 - 入力転送のパケット ドロップ(eqptIngrDropPkts5min:forwardingRate)
注:F11245に関して上記のようなASICの制限があると、これらの障害も発生する可能性があります。詳細については、 CSCvo68407 を参照してください。
このエラーの発生シナリオはいくつかあります。最も一般的なものは以下です。
説明 1)スパイン ドロップ
スパインインターフェイスでこの障害が発生している場合は、不明なエンドポイントへのトラフィックが原因である可能性があります。
ARPまたはIPパケットがプロキシルックアップのためにスパインに転送され、エンドポイントがファブリックで不明な場合、特別な収集パケットが生成され、適切なBD(内部)マルチキャストグループアドレスのすべてのリーフに送信されます。これは、ブリッジ ドメイン(BD)の各リーフからエンドポイントを検出するための ARP 要求をトリガーします。 制限によりまた、リーフによって受信された収集パケットもファブリックに再度反映され、リーフに接続されたスパインリンクでの転送ドロップをトリガーします。このシナリオの転送ドロップは、Generation 1スパインハードウェアでのみ増加します。
解決策 1)
この問題は、不要な量のユニキャストトラフィックをACIファブリックに送信するデバイスが原因であることが判明しているため、この問題の原因となっているデバイスを特定し、それを防止できるかどうかを確認する必要があります。通常はモニタリングの目的でサブネットの IP アドレスをスキャンまたはプローブするデバイスによって引き起こされています。 どの IP がこのトラフィックを送信しているのかを調べるには、エラーを示すスパイン インターフェイスに接続されたリーフに SSH 接続します。
次に、以下のコマンドを実行して収集パケットをトリガーしている送信元 IP アドレス(SIP)を確認します。
ACI-LEAF# show ip arp internal event-history event | grep glean | grep sip | more
[116] TID 11304:arp_handle_inband_glean:3035: log_collect_arp_glean;sip = 192.168.21.150;dip = 192.168.20.100;info = Received glean packet is an IP packet
[116] TID 11304:arp_handle_inband_glean:3035: log_collect_arp_glean;sip = 192.168.21.150;dip = 192.168.20.100;info = Received glean packet is an IP packet
次の出力例では、gleanパケットが192.168.21.150によってトリガーされており、これを軽減できるかどうかを確認することをお勧めします。
説明 2)リーフ ドロップ
このエラーがリーフ インターフェイスで発生する場合、考えられる原因は前述の SECURITY_GROUP_DENY のドロップです。
解決策 2)
ACIリーフは、契約違反により拒否されたパケットのログを保持します。このログは、CPUリソースを保護するためにすべてのパケットをキャプチャするのではなく、大量のログを提供します。
必要なログを取得するには、障害が発生したインターフェイスがポートチャネルの一部である場合、このコマンドとgrepをポートチャネルに使用する必要があります。それ以外の場合は、物理インターフェイスを取得できます。
契約のドロップ量に応じてこのログはすぐにロールオーバーできます。
ACI-LEAF# show logging ip access-list internal packet-log deny | grep port-channel2 | more
[ Sun Feb 19 14:16:12 2017 503637 usecs]: CName: jr:sb(VXLAN: 2129921), VlanType: FD_VLAN, Vlan-Id: 59, SMac: 0x8c604f0288fc, DMac:0x0022bdf819ff, SIP: 192.168.21.150, DIP: 192.168.20.3, SPort: 0, DPort: 0, Src Intf: port-channel2, Pr
oto: 1, PktLen: 98
[ Sun Feb 19 14:16:12 2017 502547 usecs]: CName: jr:sb(VXLAN: 2129921), VlanType: FD_VLAN, Vlan-Id: 59, SMac: 0x8c604f0288fc, DMac:0x0022bdf819ff, SIP: 192.168.21.150, DIP: 192.168.20.3, SPort: 0, DPort: 0, Src Intf: port-channel2, Pr
oto: 1, PktLen: 98
この場合、192.168.21.150はICMPメッセージ(IPプロトコル番号1)を192.168.20.3に送信しようとしています。ただし、ICMPを許可する2つのEPG間に契約がないため、パケットはドロップされます。 ICMP が許可されるべきである場合、2 つの EPG 間に契約を追加できます。
統計情報のしきい値
このセクションでは、ドロップカウンタに対して障害を引き起こす可能性がある統計情報オブジェクトのしきい値を変更する方法について説明します。
各オブジェクト(l2IngrPkts、eqptIngrDropPktsなど)の統計情報のしきい値は、さまざまなオブジェクトに対するモニタリングポリシーを通じて設定されます。
次の表に示すように、eqptIngrDropPktsは、たとえばモニタリングポリシーを介したl1PhysIfオブジェクトでモニタされます。
eqptIngrDropPktsの転送ドロップパケットレート
これには2つの部分があります。
+アクセスポリシー(外部デバイスへのポート)a.k.a前面パネルポート
+ファブリックポリシー(リーフ/スパイン間のポート。ファブリックポート)
各ポートオブジェクト(l1PhysIf、pcAggrIf)には、上記の図に示すように、インターフェースポリシーグループを介して、独自のモニタリポリシーを割り当てることができます。
デフォルトでは、APIC GUIの[Fabric] > [Access Policies]と[Fabric] > [Fabric Policies]の両方にデフォルトの監視ポリシーが設定されています。これらのデフォルトのモニタリングポリシーは、すべてのポートにそれぞれ割り当てられます。[Access Policies]のデフォルトのモニタリングポリシーは前面パネルポート用で、[Fabric Policies]のデフォルトのモニタリングポリシーはファブリックポート用です。
ポートごとのしきい値を変更する必要がない限り、各セクションのデフォルトのモニタリングポリシーを直接変更して、すべての前面パネルポートおよび/またはファブリックポートに変更を適用できます。
次の例は、ファブリックポート(ファブリックポリシー)のeqptIngrDropPktsのフォワードドロップのしきい値を変更する方法です。 前面パネルポートの[Fabric] > [Access Policies]で同じことを実行してください。
1. [Fabric] > [Fabric Policies] > [Monitoring Policies]に移動します。
2.右クリックし、[Create Monitoring Policy]を選択します。
(しきい値の変更をすべてのファブリックポートに適用できる場合は、新しいファブリックポートを作成する代わりに、デフォルトに移動します)
3.新しい監視ポリシーまたはデフォルトを展開し、「統計収集ポリシー」に移動します.
4.右側のペインの[Monitoring Object]の鉛筆アイコンをクリックし、[Layer 1 Physical Interface Configuration (l1.PhysIf)]を選択します。
(このステップ4は、デフォルトポリシーの使用時にスキップできます)
5.右側のペインの[Monitoring Object] ドロップダウンから、[Layer 1 Physical Interface Configuration (l1.PhysIf)]を選択し、[Stats Type]で[Ingress Drop Packets]を選択します
6. [Config Thresholds]の横にある[+]をクリックします。
7.転送ドロップのしきい値の編集
8.転送ドロップレートの重大、メジャー、マイナー、および警告の設定に対する上昇しきい値を無効にすることをお勧めします。
9.この新しいモニタリングポリシーを、必要なポートのインターフェイスポリシーグループに適用します。ファブリックポリシーでインターフェイスプロファイル、スイッチプロファイルなどを適宜設定することを忘れないでください。
(このステップ9は、デフォルトポリシーの使用時にスキップできます)
10.フロントパネルポート(アクセスポリシー)の場合、この新しいモニタリングポリシーをポートチャネルおよび物理ポートに適用できるように、統合インターフェイス(pc.AggrIf)と同じ操作を行ってください。
(このステップ10は、デフォルトポリシーの使用時にスキップできます)
l2IngrPktsAgでの入力ドロップパケットレート
これには複数の部分があります。
上の図に示すように、l2IngrPktsAgは多くのオブジェクトの下で監視されます。上の図は、一部の例だけを示していますが、l2IngrPktsAgのすべてのオブジェクトを示しているわけではありません。ただし、統計情報のしきい値は、モニタリングポリシーだけでなく、l1PhysIfまたはpcAggrIfの下のeqptIngrDropPktsを使用して設定します。
各オブジェクト(EPG(fvAEPg)、ブリッジドメイン(fvBD)など)には、上の図に示すように、独自のモニタリングポリシーを割り当てることができます。
デフォルトでは、特に設定されていない限り、テナントの下にあるすべてのオブジェクトは、デフォルトのモニタリングポリシーを使用します。[Tenant] > [common] > [Monitoring Polices] > [default]を選択します。
各コンポーネントごとのしきい値を変更する必要がない限り、テナント共通のデフォルトのモニタリングポリシーを直接変更して、関連するすべてのコンポーネントに変更を適用できます。
次の例は、ブリッジドメインのl2IngrPktsAg15minのIngress Drop Packets Rateのしきい値を変更することです。
1. [テナント] > (テナント名) > [モニタリングポリシー]に移動します。
(デフォルトのモニタリングポリシーを使用する場合、または新しいモニタリングポリシーをテナント間で適用する場合は、テナントを共通にする必要があります)
2.右クリックし、[Create Monitoring Policy]を選択します。
(しきい値の変更をすべてのコンポーネントに適用できる場合は、新しいコンポーネントを作成する代わりに、デフォルトに移動します)
3.新しい監視ポリシーまたはデフォルトを展開し、「統計収集ポリシー」に移動します.
4.右側のペインのMonitoring Objectの鉛筆アイコンをクリックし、 ブリッジドメイン(fv.BD)。
(このステップ4は、デフォルトポリシーの使用時にスキップできます)
5.右側のペインのMonitoring ObjectドロップダウンからBridge Domain (fv.BD)を選択し、Stats TypeでAggregated inged ingress ingress packetsを選択します。
6. [Config Thresholds]の横にある[+]をクリックします。
7.転送ドロップのしきい値の編集
8.転送ドロップレートの重大、メジャー、マイナー、および警告の設定に対する上昇しきい値を無効にすることをお勧めします。
9.しきい値の変更を必要とするブリッジドメインにこの新しいモニタリングポリシーを適用します。
(このステップ9は、デフォルトポリシーの使用時にスキップできます)
注
デフォルト以外のモニタリングポリシーには、デフォルトのモニタリングポリシーに存在する設定がない場合があります。これらの設定をデフォルトのモニタリングポリシーと同じにしておく必要がある場合は、デフォルトのモニタリングポリシー設定を確認し、デフォルト以外のモニタリングポリシーで同じポリシーを手動で設定する必要があります。