概要
このドキュメントでは、Nexus 7000スイッチで実行されるBFD、OSPFなどのコントロールプレーンプロトコルに対するARPパケットストームの影響について説明します。
著者:Cisco TACエンジニア、Nishad Mohiuddin、Nikolay Kartashev
Q. Cisco NX-OSはBFDをサポートする互換性のあるモジュールにBFD操作を配布できるため、ARPパケットストームはNexus 7000プラットフォームのBFDセッションに影響を与えますか。
A.一般に、ARPパケットストームは、Nexus 7000スイッチで実行されるBFDセッションの安定性に影響を与える可能性があります。正確な症状は、ARPパケットストームのイベントの長期性と強さによって異なります。次に、Cisco TACラボネットワークのテスト結果を示します。
ラボ設定の詳細
次のラボ設定は、Nexus 7000スイッチのCPUに対するARPトラフィックの量の影響をテストするために構築されています。
ここで、N7k-AはDevice Under Test(DUT)として使用されます。DUTは、次のハードウェア構成のNexus 7009スイッチです
N7k-A# show module
Mod Ports Module-Type Model Status
--- ----- ----------------------------------- ------------------ ----------
1 0 Supervisor module-1X N7K-SUP1 active *
2 0 Supervisor module-1X N7K-SUP1 ha-standby
3 32 10 Gbps Ethernet Module N7K-M132XP-12 ok
4 32 10 Gbps Ethernet Module N7K-M132XP-12 ok
N7k-A#
N7k-Aには次のデバイスが接続されています
- N7k-Bは、インターフェイスEthernet 3/15に接続されたVPCピアです
- ASR1kはレイヤ3ネイバーで、インターフェイスEthernet 3/14に接続されています
- N7k-Cは、インターフェイスEthernet 4/10に接続されたレイヤ3ネイバーです
- IXIAトラフィックジェネレータはvlan 6内にあり、インターフェイスEthernet 3/10に接続されています。これはレイヤ2アクセスポートとして設定されています
DUTには3つのBFDセッションがあり、1つはスロット4のラインカードでN7k-Cに、2つはスロット3のラインカードでN7k-BとASR1kに向かっています
N7k-A# show bfd neighbors
OurAddr NeighAddr LD/RD RH/RS Holdown(mult) State Int
10.80.6.173 10.80.6.174 1090519061/4105 Up 4951(3) Up Eth3/14
10.80.1.162 10.80.1.161 1090519054/1090519044 Up 4203(3) Up Eth4/10
10.80.1.61 10.80.1.62 1090519060/1090519059 Up 5921(3) Up Vlan6
N7k-A#
また、DUTには3つのOSPFセッションがあり、1つはN7k-Cに向かうスロット4のラインカードに、2つはスロット3のラインカードに、もう1つはN7k-BとASR1kに向かうセッションです。
N7k-A# show ip ospf neighbors
OSPF Process ID 1
Total number of neighbors: 3
Neighbor ID Pri State Up Time Address Interface
10.80.0.2 1 FULL/ - 00:13:26 10.80.1.62 Vlan6
10.80.4.25 1 FULL/DR 00:12:40 10.80.6.174 Eth3/14
10.80.0.3 1 FULL/DR 20:15:07 10.80.1.161 Eth4/10
N7k-A#
OSPFがBFDに登録されている
router ospf 1
bfd
router-id 10.80.0.1
また、N7k-AのARPテーブルには、3つすべてのBFD/OSPFネイバーのエントリがあります
N7k-A# show ip arp
Address Age MAC Address Interface
10.80.1.62 00:13:30 4055.390f.48c1 Vlan6
10.80.6.174 00:12:46 88f0.774b.0700 Ethernet3/14
10.80.1.161 00:15:13 6c9c.ed44.6841 Ethernet4/10
N7k-A#
ARPストーム開始
IXIAトラフィックジェネレータは、ネットワークの不安定な部分をシミュレートするために使用され、DUTに送信される大量のARPトラフィックが発生します(次の図を参照)
次の出力は、IXIAトラフィックジェネレータが接続されているインターフェイスEthernet 3/10での入力トラフィックの増加を示しています。これらは、vlan 6で受信されたブロードキャストARPパケットです
N7k-A# show interface Ethernet3/10 | grep "30 seconds input rate"
30 seconds input rate 3102999976 bits/sec, 6062053 packets/sec
N7k-A#
このシナリオでは、各ブロードキャストARPパケットのコピーがN7k-AのCPUに送信されるため、CoPPのモジュール3で違反バイトが増加します
N7k-A# show policy-map interface control-plane class copp-system-p-class-normal
Control Plane
service-policy input: copp-system-p-policy-strict
class-map copp-system-p-class-normal (match-any)
match access-group name copp-system-p-acl-mac-dot1x
match protocol arp
set cos 1
police cir 680 kbps , bc 250 ms
module 3 :
conformed 2295040 bytes; action: transmit
violated 20569190016 bytes; action: drop
module 4 :
conformed 128 bytes; action: transmit
violated 0 bytes; action: drop
N7k-A#
注:スロット4のモジュールには違反バイトはありません。これは、ブロードキャストARPストームの送信元がモジュール3のインターフェイスのみに接続されているためです
ARPストームが始まる時点では、上記の出力は通常、ネットワーク上の問題を示す最初の(そして唯一の)記号です。ほとんどの場合、これらの兆候は気付かれず、ネットワークオペレータから見落とされ、接続の重大な問題につながる状況にすばやく進みます。
ARPストームがコントロールプレーンに影響を与え始める
デフォルトでは、Nexus 7000プラットフォームのARPタイムアウト値は25分または1500秒に設定されています。Nexusスイッチは、ネクストホップのレイヤ3ネイバーのIP-to-MAC解決を最新の状態に維持するために、ローカルARPキャッシュエントリを定期的に更新する必要があります。
次に、ARPキャッシュエントリの期限が切れた後のDUTのARPキャッシュテーブルの出力を示します。
N7k-A# show ip arp
Address Age MAC Address Interface
10.80.1.62 00:00:06 INCOMPLETE Vlan6
10.80.6.174 00:00:10 INCOMPLETE Ethernet3/14
10.80.1.161 00:12:59 6c9c.ed44.6841 Ethernet4/10
N7k-A#
スロット3のラインカードに接続されているデバイスのARPキャッシュエントリはINCOMPLETEステータスを示しています。一方、スロット4のラインカードに接続されているスイッチN7k-Cのエントリは、期待どおりに更新されています。
次のDUTログメッセージは、コントロールプレーンレベルへの影響を示します
N7k-A# show logging log
...
2016 Nov 16 22:12:55 N7k-A %BFD-5-SESSION_STATE_DOWN: BFD session 1090519060 to neighbor 10.80.1.62 on interface Vlan6 has gone down. Reason: 0x3.
2016 Nov 16 22:12:55 N7k-A %OSPF-5-ADJCHANGE: ospf-1 [10600] Nbr 10.80.1.62 on Vlan6 went DOWN
2016 Nov 16 22:12:55 N7k-A %BFD-5-SESSION_REMOVED: BFD session to neighbor 10.80.1.62 on interface Vlan6 has been removed
2016 Nov 16 22:12:56 N7k-A %OSPF-5-ADJCHANGE: ospf-1 [10600] Nbr 10.80.1.62 on Vlan6 went EXSTART
2016 Nov 16 22:13:40 N7k-A %OSPF-5-ADJCHANGE: ospf-1 [10600] Nbr 10.80.6.174 on Ethernet3/14 went DOWN
2016 Nov 16 22:13:40 N7k-A %BFD-5-SESSION_STATE_DOWN: BFD session 1090519061 to neighbor 10.80.6.174 on interface Eth3/14 has gone down. Reason: 0x3.
2016 Nov 16 22:13:40 N7k-A %OSPF-5-ADJCHANGE: ospf-1 [10600] Nbr 10.80.6.174 on Ethernet3/14 went EXSTART
2016 Nov 16 22:13:46 N7k-A %BFD-5-SESSION_REMOVED: BFD session to neighbor 10.80.6.174 on interface Eth3/14 has been removed
2016 Nov 16 22:15:45 N7k-A %OSPF-5-ADJCHANGE: ospf-1 [10600] Nbr 10.80.6.174 on Ethernet3/14 went INIT
...
N7k-A#
この出力では、OSPFがDOWN状態からEXSTART状態に切り替わり、次にINIT状態に戻ることに注目してください。これは、OSPFがユニキャストを使用してEXSTART状態の間にプレフィックスを交換するためです。ARPパケットストーム時にスロット3のモジュールでARP解決が不完全であるため、ルート交換が完了せず、OSPF隣接関係が形成されません。
注:ネクストホップのIPからMACへのARP解決は、BFDの動作と同様にユニキャストに依存します。BFDが適切な動作のためにARPを解決する必要があると結論付けることができます。
次の出力は、スロット3のモジュール上のBFDセッションとOSPFセッションの両方に対するARPパケットストームの影響を確認したものです。スロット4のモジュール上のこのBFDセッションとOSPFセッションは確立され、安定しています。
N7k-A# show bfd neighbors
OurAddr NeighAddr LD/RD RH/RS Holdown(mult) State Int
10.80.1.162 10.80.1.161 1090519054/1090519044 Up 5764(3) Up Eth4/10
N7k-A#
N7k-A# show ip ospf neighbors
OSPF Process ID 1
Total number of neighbors: 3
Neighbor ID Pri State Up Time Address Interface
10.80.0.2 1 EXSTART/ - 00:02:54 10.80.1.62 Vlan6
10.80.4.25 1 INIT/DR 00:00:05 10.80.6.174 Eth3/14
10.80.0.3 1 FULL/DR 20:29:28 10.80.1.161 Eth4/10
N7k-A#
ARPパケットストームが停止するとどうなりますか。
ARPパケットストームが停止すると、次の回復が自動的に行われ、ネットワークが収束し始め、ARPブロードキャストストームの前と同じ安定した状態になります。
- ARPキャッシュエントリがN7k-Aで解決される
- スロット3のモジュールのBFDセッションを再確立
- スロット3のモジュールのOSPFセッションを再確立
結論
Cisco NX-OSは、BFDをサポートする互換性のあるモジュールにBFD操作を分散できますが、Nexus 7000プラットフォームのローカルARPキャッシュエントリの更新時間よりも長い間、大量のARPトラフィックがスイッチのCPUに負荷をでさせる。
これは、ユニキャストであるネクストホップのARP解決を必要とするBFD動作に起因する可能性があります。ネクストホップのARPキャッシュエントリが時間内に更新されない場合、BFDセッションは失敗します。