簡介
本檔案將說明如何在Nexus系列交換器上填充跨距樹狀目錄通訊協定(STP)控制封包中的來源MAC位址欄位。
作者:Nikolay Kartashev、Jun Wang、思科TAC工程師。
必要條件
需求
思科建議您瞭解以下主題:
- Nexus系列交換機上的虛擬埠通道(vPC)
- STP
採用元件
本檔案中的資訊是根據Nexus 7000系列交換器平台。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路正在作用,請確保您已瞭解任何指令可能造成的影響。
問題描述
vPC允許物理連線到兩個不同的Cisco Nexus 7000系列裝置的鏈路顯示為由第三台裝置提供的單埠通道。第三台裝置可以是交換機、伺服器或任何支援鏈路聚合技術的其他網路裝置。
與Cisco Catalyst系列交換機類似,Cisco Nexus系列交換機使用STP為乙太網路構建邏輯無環拓撲。
由於vPC屬於多機箱EtherChannel(MCEC)技術系列,因此STP控制資料包的源MAC地址欄位(也稱為網橋協定資料單元(BPDU))需要特殊的指南,才能將vPC域正確表示為單個交換機。
以下是典型的BPDU結構的提醒,其中「來源位址」欄位是本文討論的重點,如下圖所示
Cisco Nexus系列交換機在從虛擬埠通道介面傳送的BPDU的「源MAC地址」欄位中使用虛擬MAC地址。兩個vPC對等體的此MAC地址相同。這可確保vPC故障切換場景中的行為一致且無縫。
當您對vPC網路環境中的STP進行故障排除時,經常會出現混淆,原因是Nexus系列交換機可能使用某些源自BPDU的源MAC地址欄位中的其他供應商MAC地址。以下各節解釋了出現此現象的原因,並比較不同Nexus系列平台之間的此行為。
網路圖表
考慮一對Nexus 7000系列交換機構成vPC域並且與兩個接入交換機具有連線的示例。一個接入交換機通過vPC孤立埠連線到vPC域,另一個接入交換機通過虛擬埠通道介面連線。vPC孤立埠和虛擬埠通道均配置為第2層中繼介面,如下圖所示
在本示例中,vPC介面只傳送支援vPC的vlan,而vPC孤立埠中繼啟用vPC和不支援vPC的vlan。
組態
這是第一台Nexus 7000系列交換機上的vPC介面配置。第二台Nexus 7000系列交換機具有相同的配置。
Nexus7000-1# show running-config interface port-channel 60
!Command: show running-config interface port-channel60
!Time: Fri Jul 14 02:56:21 2017
version 7.2(2)D1(2)
interface port-channel60
switchport
switchport trunk allowed vlan 1-199
switchport mode trunk
vpc 60
Nexus7000-1#
第一個Nexus 7000系列交換機上的vPC孤立埠配置如下:
Nexus7000-1# show running-config interface ethernet 3/13
!Command: show running-config interface Ethernet3/13
!Time: Sun Jul 16 04:49:43 2017
version 7.2(2)D1(2)
interface Ethernet3/13
switchport
switchport mode trunk
no shutdown
Nexus7000-1#
vPC孤立埠上的STP
第一個Nexus 7000系列交換機的vPC孤立埠上的資料包捕獲顯示傳出BPDU的源MAC地址基於埠MAC地址,適用於vPC和非vPC VLAN。
#Nexus7000-1# show interface ethernet 3/13
Ethernet3/13 is up
admin state is up, Dedicated Interface
Hardware: 10000 Ethernet, address: 503d.e5b8.7298 (bia 503d.e5b8.7298)
...
Nexus7000-1# ethanalyzer local interface inband-out display-filter stp limit-captured-frames 1000 | include b8:72:98
Capturing on inband
2017-07-16 04:47:17.383777 Cisco_b8:72:98 -> Spanning-tree-(for-bridges)_00 STP 60 RST. Root = 0/1/a4:4c:11:6a:24:41 Cost = 2 Port = 0x818d
2017-07-16 04:47:17.383876 Cisco_b8:72:98 -> PVST+ STP 64 RST. Root = 0/1/a4:4c:11:6a:24:41 Cost = 2 Port = 0x818d
2017-07-16 04:47:17.384182 Cisco_b8:72:98 -> PVST+ STP 64 RST. Root = 4096/2/00:23:04:ee:be:01 Cost = 0 Port = 0x818d
2017-07-16 04:47:17.384483 Cisco_b8:72:98 -> PVST+ STP 64 RST. Root = 4096/3/00:23:04:ee:be:01 Cost = 0 Port = 0x818d
2017-07-16 04:47:17.384876 Cisco_b8:72:98 -> PVST+ STP 64 RST. Root = 4096/4/00:23:04:ee:be:01 Cost = 0 Port = 0x818d
2017-07-16 04:47:17.385189 Cisco_b8:72:98 -> PVST+ STP 64 RST. Root = 4096/5/00:23:04:ee:be:01 Cost = 0 Port = 0x818d
2017-07-16 04:47:17.385504 Cisco_b8:72:98 -> PVST+ STP 64 RST. Root = 4096/6/00:23:04:ee:be:01 Cost = 0 Port = 0x818d
...
2017-07-16 04:47:17.399802 Cisco_b8:72:98 -> PVST+ STP 64 RST. Root = 4096/c8/00:23:04:ee:be:01 Cost = 0 Port = 0x818d
附註:在傳出BPDU中使用埠MAC地址作為源MAC地址欄位是Cisco Nexus系列交換機和Cisco Catalyst系列交換機平台上的預設行為。
vPC上的STP
Nexus系列交換機從虛擬埠通道傳送的BPDU的源MAC地址構建方式如下:
vPC BPDU源MAC地址= 0026.fxxx.0000
其中xxx是vPC埠通道號。
例如,此資料包捕獲在vPC埠通道號位置顯示值0x03c,該數值轉換為十進位制值60。這是Nexus 7000系列交換機上配置的虛擬埠通道數。
2017-07-13 02:54:12.710581 00:26:f0:3c:00:00 -> 01:00:0c:cc:cc:cd STP 100 RST. Root = 4096/43/00:23:04:ee:be:01 Cost = 0 Port = 0x903b
2017-07-13 02:54:12.710599 00:26:f0:3c:00:00 -> 01:00:0c:cc:cc:cd STP 100 RST. Root = 4096/44/00:23:04:ee:be:01 Cost = 0 Port = 0x903b
2017-07-13 02:54:12.710601 00:26:f0:3c:00:00 -> 01:00:0c:cc:cc:cd STP 100 RST. Root = 4096/45/00:23:04:ee:be:01 Cost = 0 Port = 0x903b
2017-07-13 02:54:12.710603 00:26:f0:3c:00:00 -> 01:00:0c:cc:cc:cd STP 100 RST. Root = 4096/46/00:23:04:ee:be:01 Cost = 0 Port = 0x903b
但是,對源MAC地址00:26:f0:3c:00:00的組織唯一識別符號(OUI)的檢查顯示此MAC地址是分配給cTrixs International GmbH組織的範圍的一部分。
附註:要查詢MAC地址塊的分配,您可以使用連結https://www.wireshark.org/tools/oui-lookup.html上提供的Wireshark OUI查詢或任何類似工具。
捕獲中顯示了具有MAC地址解析的相同輸出。 作為網路運營商,當您對vPC網路環境中的STP進行故障排除時,可以看到這一點。
Nexus7000-1# ethanalyzer local interface inband-out display-filter stp limit-captured-frames 1000 | include CtrixIn
Capturing on inband
2017-07-17 04:34:32.324661 CtrixsIn_3c:00:00 -> PVST+ STP 64 RST. Root = 4096/5/00:23:04:ee:be:01 Cost = 0 Port = 0x903b
2017-07-17 04:34:32.324864 CtrixsIn_3c:00:00 -> PVST+ STP 64 RST. Root = 4096/6/00:23:04:ee:be:01 Cost = 0 Port = 0x903b
2017-07-17 04:34:32.325075 CtrixsIn_3c:00:00 -> PVST+ STP 64 RST. Root = 4096/7/00:23:04:ee:be:01 Cost = 0 Port = 0x903b
2017-07-17 04:34:32.325265 CtrixsIn_3c:00:00 -> PVST+ STP 64 RST. Root = 4096/8/00:23:04:ee:be:01 Cost = 0 Port = 0x903b
2017-07-17 04:34:32.325466 CtrixsIn_3c:00:00 -> PVST+ STP 64 RST. Root = 4096/9/00:23:04:ee:be:01 Cost = 0 Port = 0x903b
附註:非vPC埠通道介面從第一個操作介面獲取MAC地址。傳出BPDU的源MAC地址欄位使用埠通道介面MAC地址。
行為改變
從Nexus 5000系列交換機的5.2(1)N1(9)和7.1(4)N1(1)開始,思科分配從0026.0bf1.f000到0026.0bf2.2ffff的一系列MAC地址,供NX-OS用於虛擬埠 — 通道介面上傳送的BPDU中的源MAC地址。
vPC BPDU源MAC地址= 0026.0bf1.fxxx
其中xxx是vPC埠通道號。
在引入更改後,從Nexus 5000系列交換機上的虛擬埠通道60傳送的源BPDU的源MAC地址將為00:26:0b:f1:f0:3c,具有Cisco Systems, Inc.的OUI。
14 2017-07-13 04:38:16.781559 00:26:0b:f1:f0:3c -> 01:00:0c:cc:cc:cd STP 100 RST. Root = 4096/18/00:23:04:ee:be:01 Cost = 0 Port = 0x903b
15 2017-07-13 04:38:16.781561 00:26:0b:f1:f0:3c -> 01:00:0c:cc:cc:cd STP 100 RST. Root = 4096/19/00:23:04:ee:be:01 Cost = 0 Port = 0x903b
16 2017-07-13 04:38:16.782222 00:26:0b:f1:f0:3c -> 01:00:0c:cc:cc:cd STP 100 RST. Root = 4096/20/00:23:04:ee:be:01 Cost = 0 Port = 0x903b
17 2017-07-13 04:38:16.782229 00:26:0b:f1:f0:3c -> 01:00:0c:cc:cc:cd STP 100 RST. Root = 4096/21/00:23:04:ee:be:01 Cost = 0 Port = 0x903b
Nexus 7000和Nexus 9000系列交換機的預設行為未更改。但是,從Nexus 7000的6.1(3)和Nexus 9000的7.0(3)I6(2)的7.0(3)I7(2)開始,您可以在vPC域配置模式下使用此命令來執行此更改。
Nexus7000-1(config-vpc-domain)# mac-address bpdu source version 2
系統會顯示此警告消息,通知您此配置命令的影響。
警告:此命令將觸發STP使用新的思科MAC地址(00:26:0b:xx:xx:xx)作為vPC埠上生成的BPDU的源地址。兩台vPC對等裝置必須配置相同的此引數。您也可以在發出此命令之前禁用邊緣裝置上的Ether通道防護,並最大限度地減少由於STP不一致而造成的流量中斷。建議在更新兩個對等點上的相關組態後,重新啟用Ether通道防護。
是否繼續?(是/否)[否]
驗證
目前沒有適用於此組態的驗證程序。
疑難排解
目前尚無適用於此組態的具體疑難排解資訊。
摘要
STP PDU不被Cisco交換機上的MAC地址學習機制使用,因此使用非Cisco源MAC地址對日常第2層網路操作沒有負面影響。但是,為了符合標準,自發起的BPDU應該從分配的MAC地址範圍填充源MAC地址欄位。Cisco Nexus系列交換機通過更改Nexus 5000系列交換機和Nexus 9000系列交換機的預設設定,以及在Nexus 7000系列交換機上提供命令列配置選項,在Cisco NX-OS軟體中提供此類合規性。
相關資訊