本文档介绍将当前的Cisco IOS®交换机上的第2层(L2)生成树网络与运行Cisco IOS XR的Cisco Aggregation Services Router(ASR)9000系列集成时遇到的常见问题。
当运行增强型每VLAN生成树(PVST+)的Cisco IOS交换机收到带有不一致PVID的网桥协议数据单元(BPDU)时,会阻塞交换机端口。当交换机之间的设备更改或转换PVST+ BPDU上的IEEE 802.1Q标记时,会发生此问题。
当ASR 9000在运行PVST+的交换机之间提供L2VPN点对点或多点服务并重写VLAN标记时,基于Cisco IOS的交换机上可能会显示以下系统日志消息:
%SPANTREE-2-RECV_PVID_ERR: Received BPDU with inconsistent
peer vlan id 10 on GigabitEthernet0/10 VLAN20.
%SPANTREE-2-BLOCK_PVID_LOCAL: Blocking GigabitEthernet0/10
on VLAN20. Inconsistent local vlan.
此问题是由于PVST+ BPDU中包含的PVID标记引起的。此标记旨在检测错误配置并避免意外环路。但是,在此场景中,它会导致两端被阻止并且不允许流量通过。
示例如下:
以下是ASR 9000系列(a9k1)配置的配置:
2vpn
bridge group bg1
bridge-domain bd1
interface TenGigE0/0/0/0.10
!
interface TenGigE0/0/0/1.20
interface TenGigE0/0/0/0.10 l2transport
encapsulation dot1q 10
rewrite ingress tag pop 1 symmetric
interface TenGigE0/0/0/1.20 l2transport
encapsulation dot1q 20
rewrite ingress tag pop 1 symmetric
为防止出现此问题,您可以阻止PVST+ BPDU。此操作会禁用生成树,并且如果交换机之间存在冗余连接,则可能导致环路。
交换机上的BPDU过滤器功能可阻止BPDU。BPDU过滤器会在两个方向上阻止BPDU,从而有效地禁用端口上的生成树。BPDU过滤器可阻止入站和出站BPDU。如果在接口上启用BPDU过滤,则与在其上禁用生成树相同,这可能会导致生成树环路。
在switch1和switch2上,使用以下命令启用BPDU过滤器:
interface TenGigabitEthernet1/2
spanning-tree bpdufilter enable
如果配置ASR9000以丢弃PVST+ BPDU,则避免此问题。这通过L2以太网服务访问列表完成,以拒绝发往PVST+ BPDU MAC地址的数据包。
非VLAN 1(非本地)VLAN的PVST+ BPDU被发送到PVST+ MAC地址(也称为共享生成树协议[SSTP] MAC地址0100.0ccc.ccd),并使用相应的IEEE 802.1Q VLAN标记进行标记。
此访问控制列表(ACL)可用于阻止PVST+ BPDU:
ethernet-services access-list l2acl
10 deny any host 0100.0ccc.cccd
20 permit any any
将ACL应用于配置为l2transport的接口:
interface TenGigE0/0/0/0.10 l2transport
encapsulation dot1q 10
rewrite ingress tag pop 1 symmetric
ethernet-services access-group l2acl ingress
interface TenGigE0/0/0/1.20 l2transport
encapsulation dot1q 20
rewrite ingress tag pop 1 symmetric
ethernet-services access-group l2acl ingress
默认情况下,ASR9000并不像大多数Cisco IOS交换机那样执行生成树。在以太网虚拟电路(EVC)模型中,BPDU只是另一个第2层组播数据包。遇到的常见问题是由于跨ASR 9000网桥域运行的多种STP类型而导致生成树不一致。这可以通过几种不同的方式显示。
请考虑以下简单拓扑:
假设switch1运行多生成树(MST),switch2运行PVST+。如果a9k1未运行任何形式的生成树,则switch1会将此端口视为边界端口。对于不在通用生成树实例0(CST0)中的VLAN,Switch1回到PVST模式。如果这是所需的设计,您应该熟悉MST和PVST交互,如了解多生成树协议(802.1s)白皮书中所述。
现在假设您在switch1上以及通向switch1的a9k1接口上运行MST,但是您仍然在switch2上运行PVST+。PVST+ BPDU通过网桥域并到达交换机1。然后,交换机1会看到来自a9k1的MST BPDU和来自交换机2的PVST+ BPDU,这会导致交换机1端口上的生成树从阻塞持续变为无阻塞,从而导致流量丢失。
Switch1报告以下系统日志:
%SPANTREE-SP-2-PVSTSIM_FAIL: Superior PVST BPDU received on VLAN 2 port Gi2/13,
claiming root 2:000b.45b7.1100. Invoking root guard to block the port
%SPANTREE-SP-2-ROOTGUARD_BLOCK: Root guard blocking port GigabitEthernet2/13
on MST1.
%SPANTREE-SP-2-ROOTGUARD_UNBLOCK: Root guard unblocking port GigabitEthernet2/13
on MST0.
%SPANTREE-SP-2-PVSTSIM_FAIL: Superior PVST BPDU received on VLAN 2 port Gi2/13,
claiming root 2:000b.45b7.1100. Invoking root guard to block the port
%SPANTREE-SP-2-ROOTGUARD_BLOCK: Root guard blocking port GigabitEthernet2/13
on MST1.
show spanning-tree interface命令输出显示,交换机1 Cisco IOS设备上的输出不断变化:
show spanning-tree interface gig 2/13
Mst Instance Role Sts Cost Prio.Nbr Type
------------------- ---- --- --------- -------- -------
MST0 Desg BKN*20000 128.269 P2p Bound(PVST) *ROOT_Inc
MST1 Desg BKN*20000 128.269 P2p Bound(PVST) *ROOT_Inc
MST2 Desg BKN*20000 128.269 P2p Bound(PVST) *ROOT_Inc
show spanning-tree interface gig 2/13
Mst Instance Role Sts Cost Prio.Nbr Type
------------------- ---- --- --------- -------- ---------
MST0 Desg FWD 20000 128.269 P2p
MST1 Desg FWD 20000 128.269 P2p
MST2 Desg FWD 20000 128.269 P2p
为防止此问题,需要考虑三个选项。
当交换机在同一接口上收到它发送的生成树BPDU时,它会由于自身环路而阻塞该VLAN。当带有中继端口的交换机连接到提供L2多点服务的ASR 9000路由器,并且ASR 9000不会在同一网桥域中的l2传输接口上重写VLAN标记时,会发生这种常见问题。
考虑前面所示的简单拓扑。但是现在,由于a9k1的设计原因,来自同一交换机中继接口的多个VLAN合并到一个网桥域中。
以下是a9k1配置:
l2vpn
bridge group bg1
bridge-domain bd1
interface GigabitEthernet0/1/0/31.2
!
interface GigabitEthernet0/1/0/31.3
!
interface GigabitEthernet0/1/0/31.4
!
interface GigabitEthernet0/1/0/32.2
!
interface GigabitEthernet0/1/0/32.3
!
interface GigabitEthernet0/1/0/32.4
interface GigabitEthernet0/1/0/31.2 l2transport
encapsulation dot1q 2
!
interface GigabitEthernet0/1/0/31.3 l2transport
encapsulation dot1q 3
!
interface GigabitEthernet0/1/0/31.4 l2transport
encapsulation dot1q 4
这会将VLAN 2至4桥接到a9k1上的一个网桥域中。
默认情况下,ASR 9000 EVC型号不重写任何标签或弹出。VLAN2的PVST+ BPDU进入接口gig 0/1/0/31.2,然后转发回gig 0/1/0/31.3和gig 0/1/0/31.4。由于配置不是对入口pop操作的重写,因此BPDU返回不变。当交换机将自己的BPDU取回并由于自环路阻塞该VLAN时,交换机将看到此情况。
show spanning-tree interface命令显示已阻止的VLAN:
6504-A#show spanning-tree interface gig 2/13
Vlan Role Sts Cost Prio.Nbr Type
------------------- ---- --- --------- --------
VLAN0002 Desg BLK 4 128.269 self-looped P2p
VLAN0003 Desg BLK 4 128.269 self-looped P2p
VLAN0004 Desg BLK 4 128.269 self-looped P2p
通过在ASR 9000 l2transport接口上使用ethernet egress-filter strict命令可以消除此问题。
这不是推荐的设计。但是,如果这是真正需要的设计,则可以使用此解决方案来防止交换机收到它发回同一接口的BPDU。
可以在a9k1 l2transport接口上或全局使用ethernet egress-filter strict命令。下面是接口下的示例:
interface GigabitEthernet0/1/0/31.2 l2transport
encapsulation dot1q 2
ethernet egress-filter strict
!
interface GigabitEthernet0/1/0/31.3 l2transport
encapsulation dot1q 3
ethernet egress-filter strict
!
interface GigabitEthernet0/1/0/31.4 l2transport
encapsulation dot1q 4
ethernet egress-filter strict
ethernet egress-filter strict命令在接口上启用严格出口以太网流点(EFP)过滤。只有通过接口上的入口EFP过滤器的数据包才会从该接口发送出去。其他数据包在出口过滤器中丢弃。这意味着如果流出的数据包与接口上配置的encapsulation dot1q标签不匹配,则不会将其发送出去。
版本 | 发布日期 | 备注 |
---|---|---|
1.0 |
19-Sep-2013 |
初始版本 |