简介
本文档介绍如何在Nexus系列交换机上填充生成树协议(STP)控制数据包中的源MAC地址字段。
作者:Nikolay Kartashev、Jun Wang,Cisco TAC工程师。
先决条件
要求
Cisco 建议您了解以下主题:
- 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地址。此MAC地址对于两个vPC对等体相同。这可确保vPC故障切换场景中的一致和无缝行为。
在vPC网络环境中排除STP故障时,Nexus系列交换机可能会在某些源BPDU的源MAC地址字段中使用其他供应商的MAC地址,这通常会造成混淆。这些部分解释了此原因,并将不同Nexus系列平台之间的此行为进行比较。
网络图
以一对Nexus 7000系列交换机形成vPC域并连接到两台接入交换机为例。一个接入交换机通过vPC孤立端口连接到vPC域,另一个接入交换机通过虚拟端口通道接口连接。vPC孤立端口和虚拟端口通道都配置为第2层中继接口,如图所示
在本示例中,虽然vPC接口仅传输启用vPC的vlan,但vPC孤立端口同时中继启用vPC的vlan和非启用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)开始,Cisco分配了0026.0bf1.f000到0026.0bf2.2ffff的MAC地址范围供MAC使用在虚拟端口通道接口上发送的BPDU中的源MAC地址的nx-OS。
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使用新的Cisco MAC地址(00:26:0b:xx:xx:xx)作为vPC端口上生成的BPDU的源地址。两台vPC对等设备对此参数的配置相同非常重要。在发出此通信之前,您还可以禁用边缘设备上的以太网通道防护,并最大限度地减少因STP不一致而造成的流量中断。建议在更新两个对等体上的相关配置后重新启用以太网通道防护。
Continue?(是/否)[否]
验证
当前没有可用于此配置的验证过程。
故障排除
目前没有针对此配置的故障排除信息。
摘要
思科交换机上的MAC地址学习机制不使用STP PDU,因此使用非思科源MAC地址不会对日常第2层网络操作产生负面影响。但是,为了符合标准,自发BPDU应从分配的MAC地址范围填充源MAC地址字段。Cisco Nexus系列交换机通过更改Nexus 5000系列交换机和Nexus 9000系列交换机的默认设置以及在Nexus 7000系列交换机上提供命令行配置选项,在Cisco NX-OS软件中提供此类合规性。
相关信息