局域网交换 : 生成树协议

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

2016 年 10 月 24 日 - 机器翻译
其他版本: PDFpdf | 英语 (2015 年 10 月 20 日) | 反馈


目录


简介

在第 2 层 (L2) 网络中,任何两台设备之间只能有一个路径。可检测并阻塞冗余路径从而避免转发环路的生成树协议 (STP) 支持冗余。某些配置错误可能会导致 STP 故障并造成网络中断。若要阻止停机,需要实现某些增强功能,以使 STP 能够检测出某些错误配置情况,并将相关端口置于“不一致”状态。

STP 不一致分为以下几种不同的类型:

本文档说明如何对最后两个不一致(PVID 和类型)的原因进行故障排除。请参阅之前所述的文档排除其他不一致故障。

先决条件

要求

本文档的读者应了解 STP 概念。

使用的组件

本文档不限于特定的软件或硬件版本。

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您使用的是真实网络,请确保您已经了解所有命令的潜在影响。

规则

有关文档规则的详细信息,请参阅 Cisco 技术提示规则

PVID 和类型不一致理论

Cisco Catalyst 交换机使用 Inter-Switch Link (ISL) 中继实现 PVST。在 IEEE 802.1Q 和 ISL 中继的支持下,需要一种方法在所有 VLAN 的 PVST 和单个生成树的 IEEE 802.1Q 概念之间进行互操作。PVST+ 功能可满足此要求。

注意: 从 STP 的角度来看,IEEE 802.1D 无法感知 VLAN,而 IEEE 802.1Q 可感知 VLAN,但是它针对所有 VLAN 使用单个 STP 实例。换言之,如果端口处于阻塞状态,则该端口上的所有 VLAN 均处于阻塞状态。对于转发而言也是如此。

下表显示了 PVST+ 如何与 IEEE 802.1Q 或 IEEE 802.1D 进行互操作,如果 IEEE 802.1Q 中继上的本地 VLAN 是 VLAN 1:

  • VLAN 1 STP BPDU 以未标记状态发送至 IEEE STP MAC 地址 (0180.c200.0000)。

  • VLAN 1 STP BPDU 也以未标记状态发送至 PVST+ MAC 地址。

  • 非 VLAN 1 STP BPDU 标记为相应的 IEEE 802.1Q VLAN 标记,并发送至 PVST+ MAC 地址(也称为共享生成树协议 [SSTP] MAC 地址 0100.0ccc.cccd)。

如果 IEEE 802.1Q 中继上的本地 VLAN 不是 VLAN 1:

  • VLAN 1 STP BPDU 标记为相应的 IEEE 802.1Q VLAN 标记,并发送至 PVST+ MAC 地址。

  • VLAN 1 STP BPDU 以未标记状态发送至 IEEE 802.1Q 中继的本地 VLAN 上的 IEEE STP MAC 地址。

  • 非 VLAN 1 STP BPDU 标记为相应的 IEEE 802.1Q VLAN 标记,并发送至 PVST+ MAC 地址。

    注意: 本地 VLAN STP BPDU 以未标记状态发送。

这样,PVST+ 的 VLAN 1 STP 与 IEEE 802.1D 或 802.1Q 的 STP 合并,而其他 VLAN 通过 IEEE 802.1D 或 802.1Q 网桥的云进行隧道传输。例如,IEEE 802.1D 或 802.1Q 云类似于通向 PVST+ VLAN(而不是 1)的“线”。

要使 STP 正常运行,在将 PVST+ 网桥连接至 IEEE 802.1D 或 802.1Q 网桥时需要遵循某些规则。主要规则是:PVST+ 网桥必须通过 IEEE 802.1Q 中继和一致本地 VLAN 连接至 IEEE 802.1D 或 802.1Q 网桥,该本地 VLAN 位于连接至 IEEE 802.1Q 或 802.1D 网桥云的所有网桥上。

PVST+ BPDU 包含可使 PVST+ 网桥检测是否遵循上一个规则的 VLAN 编号。当 Catalyst 交换机检测到配置错误时,会将相应的端口置于“PVID 不一致”或“类型不一致”状态,从而有效阻塞相应端口上对应 VLAN 中的数据流。这些状态将会阻止配置错误或接线错误造成的转发环路。

为说明对不一致检测的需要,请考虑以下拓扑,其中交换机 A 和 C 运行 PVST+ STP,交换机 B 运行 802.1Q STP:

/image/gif/paws/24063/pvid_inconsistency_24063a.gif

如果 VLAN 1 中根的 BPDU 优于 VLAN 2 中根的 BPDU,则 VLAN 2 拓扑中将不存在阻塞端口。VLAN 2 的 BPDU 绝不会在拓扑周围形成“完整的环路”;在 B-C 链路上将其替换为 VLAN 1 BPDU,因为 B 仅运行一个与 PVST+ 的 VLAN 1 STP 合并的 STP。因此存在转发环路。幸运的是,交换机 A 将 VLAN 2 的 PVST+ BPDU(发送至交换机 B 泛洪的 SSTP 地址)向交换机 C 发送。交换机 C 将端口 C-B 置于类型不一致状态,从而阻止环路。

注意: 在某些命令输出中,*-inconsistent STP 状态称为“broken”。

检测到 STP 不一致时,交换机将发送以下 syslog 消息:

%SPANTREE-2-RECV_1Q_NON_TRUNK: Received IEEE 802.1Q BPDU on non trunk
FastEthernet0/1 on vlan 1.
%SPANTREE-2-BLOCK_PORT_TYPE: Blocking FastEthernet0/1 on vlan 1.
Inconsistent port type.

%SPANTREE-2-RX_1QPVIDERR: Rcved pvid_inc BPDU on 1Q port 3/25 vlan 1
%SPANTREE-2-RX_BLKPORTPVID: Block 3/25 on rcving vlan 1 for inc peer vlan 10
%SPANTREE-2-TX_BLKPORTPVID: Block 3/25 on xmtting vlan 10 for inc peer vlan

在该示例中,VLAN 1 是 BPDU 的接收处,而 VLAN 10 是 BPDU 的源。检测到不一致时,两个 VLAN 同时在接收 BPDU 的端口受阻

注意: 消息可能变化基于是在使用中的思科IOSï ¿  ½软件版本或Catalyst OS (CatOS)操作系统的种类和版本。

注意: 如果端口停止接收不一致的 BPDU,则 *-inconsistent 状态将被清除,并且 STP 将基于常规 STP 操作更改端口状态。此时将发送指示更改的 syslog 消息:

%SPANTREE-SP-2-UNBLOCK_CONSIST_PORT: Unblocking FastEthernet0/1 on vlan 1.
Port consistency restored.

有关 PVST+ 操作的详细信息,请参阅 IEEE 802.1Q VLAN 之间的桥接

排除故障

为查看不一致端口列表,最新基于 Cisco IOS 的 STP 实现可支持 show spanning-tree inconsistentports 命令。

大多数情况下,检测端口上 STP 不一致的原因显而易见:

  • 接入端口收到 IEEE 802.1Q 标记的 SSTP BPDU。

    /image/gif/paws/24063/pvid_inconsistency_24063b.gif

    这种情况下,网桥 A 上的接入端口从网桥 B 接收来自 VLAN(而非 1)STP 的标记 PVST+ BPDU。A 上的端口将被置于类型不一致状态。

    注意: 不需要直接连接交换机;如果这些交换机通过一个或多个 IEEE 802.1D 或 IEEE 802.1Q 交换机(甚至集线器)连接,则效果相同。

  • IEEE 802.1Q 中继端口收到未标记的 SSTP BPDU,其 VLAN 类型、长度、值 (TLV) 与收到 BPDU 的 VLAN 不匹配。

    /image/gif/paws/24063/pvid_inconsistency_24063c.gif

    这种情况下,A 上的中继端口收到来自 VLAN 2 STP 且带 VLAN 2 标记的 PVST+ BPDU。这将触发 A 上的端口同时在 VLAN 1 和 VLAN 2 中受阻。

如果点对点链路两端的设备是 Cisco Catalyst 交换机,则检查本地和远程端口配置通常可显示配置不匹配:

  • 在一侧配置了 IEEE 802.1Q 中继端口,但另一侧为接入端口。

  • 两侧同时配置了 IEEE 802.1Q 中继,但是本地 VLAN 不同。

这些情况下,可更正配置不匹配以解决 STP 不一致问题。

有些情况下可能不容易确定原因:

  • 收到的 BPDU 来自具有多个设备的共享介质。

  • 收到来自交换机云的 BPDU,该交换机云实施 IEEE 802.1D 或 802.1Q STP 模式,而 PVST+ 交换机连接至云。

  • BPDU 来自某种隧道(例如 Data Link Switch Plus [DLSw+] 云、第 2 层协议隧道、EoMPLS、虚路径链路 [VPL] 和 LAN 仿真 [LANE] 等)之后。

/image/gif/paws/24063/pvid_inconsistency_24063d.gif

在本示例中,交换机 B 配置错误并将 SSTP BPDU 注入了云。这导致交换机 A、C 和 D 上的端口状态变为类型不一致。问题是产生“冲突”BPDU 的设备并未直接连接至受影响的交换机。因此,在中继上有许多设备时,要排除所有设备的故障将会变得非常耗时。

幸运的是,有一种系统化的方法可以针对此问题进行故障排除:

  1. 建立 BPDU 的源 MAC 地址发送网桥 ID。这必须在问题出现时完成。

  2. 找到产生“冲突”BPDU 的网桥。这不必在问题出现时完成,可在稍后进行。

对于步骤 1,通常有两个选项:使用数据包分析程序或启用调试,以查看接收的 BPDU 的转储。

有关使用 debug 转储 STP BPDU 的详细信息,请参阅在运行 Cisco 集成 IOS(本地模式)的 Catalyst 交换机上排除 STP 的故障中的 STP 调试命令部分。

以下为显示所接收的 BPDU 的调试输出示例:

*Mar 14 19:33:27: STP SW: PROC RX: 0100.0ccc.cccd<-0030.9617.4f08 type/len 0032
*Mar 14 19:33:27:     encap SNAP linktype sstp vlan 10 len 64 on v10 Fa0/14
*Mar 14 19:33:27:     AA AA 03 00000C 010B SSTP
*Mar 14 19:33:27:     CFG P:0000 V:00 T:00 F:00 R:8000 0050.0f2d.4000 00000000
*Mar 14 19:33:27:     B:8000 0050.0f2d.4000 80.99 A:0000 M:1400 H:0200 F:0F00
*Mar 14 19:33:27:     T:0000 L:0002 D:0001

如果知道源 MAC 地址和发送网桥 ID,则需要找到该 MAC 地址所属的设备。但交换机通常不能从 BPDU 帧获知源的 MAC 地址,这让情况变得更加复杂。如果发出 show mac-address-table address BPDU_mac_address 命令(针对基于 Cisco IOS 的交换机)或 show cam mac_address 命令(针对基于 CatOS 的交换机),则通常无法找到任何条目。

找到“冲突”MAC 地址的一种方法是从连接至云的所有交换机收集 show spanning-tree(针对 Cisco IOS)或 show spantree(针对 CatOS)命令输出。这些命令输出包括有关每个网桥的网桥 ID 的信息。

Boris# show spanning-tree

!--- Use with Cisco IOS.

VLAN0001
  Spanning tree enabled protocol rstp
  Root ID    Priority    0
             Address     0007.4f1c.e847
             Cost        131
             Port        136 (GigabitEthernet3/8)
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
  Bridge ID  Priority    32769  (priority 32768 sys-id-ext 1)
             Address     00d0.003f.8800

!--- Output suppressed.

Doris (enable) show spantree

!--- Use with CatOS.

VLAN 1
Spanning tree mode          RAPID-PVST+
Spanning tree type          ieee
Spanning tree enabled
Designated Root             00-07-4f-1c-e8-47
Designated Root Priority    0
Designated Root Cost        123
Designated Root Port        9/7                     
Root Max Age   20 sec   Hello Time 2  sec   Forward Delay 15 sec
Bridge ID MAC ADDR          00-d0-03-ef-4c-00

!--- Output suppressed.

注意: 根据不同的型号、软件版本和配置,交换机可能具有多个网桥 ID MAC 地址。幸运的是,通常所有地址都会在某个范围内(例如从 0001.1234.5600 到 0001.1234.5640)。如果知道某个网桥 ID MAC 地址,您可以检查发送网桥 ID MAC 地址(可在步骤 1 中找到)是否在指定网桥 ID MAC 地址范围内。

还可使用网络管理工具收集所有网桥的网桥 ID。

如果找到发送“冲突”BPDU 的网桥,您需要验证连接到云的端口的配置:确保其与连接至相同云的其他交换机一致(中继相对于非中继和本地 VLAN)。

可能存在网桥发送了正确的 BPDU,但在隧道云内部被错误修改这样的情况。在这种情况下,可以发现进入云的“冲突”BPDU 与其他网桥的配置一致,但是相同 BPDU 在退出云时变为不一致(例如,BPDU 在不同的 VLAN 中退出云,或者变为已标记或未标记)。在这种情况下,可能有助于核查“冲突”BPDU 的源 MAC 地址所属网桥是否与发送网桥 ID 相同。如果情况不是如此,可以尝试找到拥有 BPDU 的源 MAC 地址的网桥,并验证其配置。

要找到具有 BPDU 的源 MAC 地址的交换机,可采取与找到网桥 ID 相同的方法,当前已检查 show module 命令输出的除外(针对 Catalyst 4000、5000 和 6000)。对于 Catalyst 2900 XL、3500 XL、2950 和 3550,必须检查 show interface 命令输出,以查看属于端口的 MAC 地址。

Cat4000-IOS# show module

!--- Use for Catalyst 4000,5000,6000

Mod  Ports Card Type                              Model             Serial No.
----+-----+--------------------------------------+-----------------+-----------
 1      2  1000BaseX (GBIC) Supervisor(active)    WS-X4515          ZZZ00000001
 5     14  1000BaseT (RJ45), 1000BaseX (GBIC)     WS-X4412-2GB-T    ZZZ00000002

 M MAC addresses                    Hw  Fw           Sw               Status
--+--------------------------------+---+------------+----------------+---------
 1 000a.4172.ea40 to 000a.4172.ea41 1.2 12.1(12r)EW  12.1(14)E1, EARL Ok
 5 0001.4230.d800 to 0001.4230.d80d 1.0                               Ok

!--- Output suppressed.

cat3550# show interface | i bia

  Hardware is Gigabit Ethernet, address is 0002.4b28.da80 (bia 0002.4b28.da80)
  Hardware is Gigabit Ethernet, address is 0002.4b28.da83 (bia 0002.4b28.da83)
  Hardware is Gigabit Ethernet, address is 0002.4b28.da86 (bia 0002.4b28.da86)
  Hardware is Gigabit Ethernet, address is 0002.4b28.da88 (bia 0002.4b28.da88)
  Hardware is Gigabit Ethernet, address is 0002.4b28.da89 (bia 0002.4b28.da89)

!--- Output suppressed.

注意: 如果云为 DLSw+,请参阅了解和配置 DLSw 和 802.1Q


相关信息


Document ID: 24063