目录

简介

问题 — 端口VLAN ID(PVID)不一致

解决方案

交换机上的BPDU过滤器

在ASR 9000上阻止PVST+ BPDU

问题 — 当您通过ASR 9000使用多种类型的生成树协议(STP)时，交换机端口会在阻塞和转发之间摆动

解决方案

问题 — 生成树端口由于检测到自环路而被阻塞

解决方案

相关信息

简介

本文档介绍将当前的Cisco IOS®交换机上的第2层(L2)生成树网络与运行Cisco IOS XR的Cisco Aggregation Services Router(ASR)9000系列集成时遇到的常见问题。

问题 — 端口VLAN ID(PVID)不一致

当运行增强型每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过滤器可阻止入站和出站BPDU。如果在接口上启用BPDU过滤，则与在其上禁用生成树相同，这可能会导致生成树环路。

在switch1和switch2上，使用以下命令启用BPDU过滤器：

interface TenGigabitEthernet1/2

spanning-tree bpdufilter enable

在ASR 9000上阻止PVST+ BPDU

如果配置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

问题 — 当您通过ASR 9000使用多种类型的生成树协议(STP)时，交换机端口会在阻塞和转发之间摆动

默认情况下，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

解决方案

为防止此问题，需要考虑三个选项。

- 在switch2上配置MST，并在switch1和switch2的a9k1接口上启用MST。

- 在a9k1上使用以太网服务访问列表，以便在从switch2的入口或到switch1的出口上丢弃PVST+ BPDU。

- 在通向switch2的a9k1接口上运行每VLAN生成树接入网关(PVSTAG)。这会导致a9k1使用来自交换机2的PVST+ BPDU。

问题 — 生成树端口由于检测到自环路而被阻塞

当交换机在同一接口上收到它发送的生成树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标签不匹配，则不会将其发送出去。

相关信息

- 实施多生成树协议

- 生成树PVID-和Type- 不一致故障排除

- 了解多生成树协议 (802.1s)

- 技术支持和文档 - Cisco Systems