本文档介绍增强交换网络可靠性和可管理性的生成树协议(STP)根防护功能。
本文档没有任何特定的要求。
本文档不限于特定的软件和硬件版本。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
标准 STP 并未为网络管理员提供任何安全执行第 2 层 (L2) 交换网络拓扑的方法。执行拓扑的方法对于采用共享管理控制(即不同管理实体或公司控制一个交换网络)的网络特别重要。
交换网络的转发拓扑被计算出来。除其他参数外,该计算还基于根网桥安置。任何交换机都可能是网络中的根网桥。但最优转发拓扑会将根网桥放置在预先确定的特定位置。使用标准 STP,网络中任何网桥 ID 较低的网桥将扮演根网桥的角色。
根防护功能提供了在网络中强制执行根网桥安置的方法。
根防护可确保启用了根防护的端口为指定端口。通常,除非根网桥的两个或多个端口连接在一起,否则根网桥端口全部为指定端口。如果网桥在启用了根防护的端口上收到高级 STP 网桥协议数据单元 (BPDU),根防护会将此端口转换为根不一致 STP 状态。此根不一致状态实际上等效于监听状态。此时不会通过此端口转发任何流量。根防护以这种方式强制确定根网桥的位置。
本部分的示例说明恶意根网桥如何在网络中造成问题,以及根防护如何帮助解决这类问题。
在映像1中,交换机A和B构成了网络的核心,A是VLAN的根网桥。交换机 C 为接入层交换机。B和C之间的链路在C端被阻断。箭头表示 STP BPDU 的流向。
图 1
交换机A是根桥
在映像2中,设备D开始参与STP。例如,基于软件的网桥应用程序在连接到服务提供商网络的PC或其他交换机上启动。如果网桥 D 的优先级为 0 或任何低于根网桥优先级的值,则设备 D 将被选为此 VLAN 的根网桥。如果设备 A 与 B 之间的链路为 1 千兆,并且 A 与 C 之间以及 B 与 C 之间的链路为 100 Mbps,则选择 D 作为根网桥将导致连接两个核心交换机的千兆以太网受到阻塞。
此块导致该VLAN中的所有数据通过100 Mbps链路在接入层流动。如果通过该VLAN核心的数据流多于此链路可容纳的数据流,则会丢弃一些帧。帧丢弃会导致性能下降或连接中断。
图 2
交换机D是新的根桥
根防护功能可防止网络出现此类问题。
根防护配置针对的是每个端口。根防护不允许端口成为STP根端口,因此端口始终被指定为STP。如果一个更好的 BPDU 到达此端口,根防护不会考虑此 BPDU 并选择新的 STP 根。相反,根防护会将该端口置于根不一致 STP 状态。您必须在所有不能出现根网桥的端口上启用根防护。从某种程度上说,您可以在能够定位 STP 根的网络部分周围配置一个边界。
在映像2中,在连接到交换机D的交换机C端口上启用根防护。
在交换机收到上级BPDU后,映像2中的交换机C会阻塞连接到交换机D的端口。根防护将该端口置于根不一致 STP 状态。在此状态下,没有流量经过该端口。设备 D 停止发送高级 BPDU 之后,该端口再次解除阻塞。通过 STP,该端口从监听状态进入识别状态,并最终转换为转发状态。恢复是自动进行的;不需要人为干预。
本消息在根防护阻塞端口后出现:
%SPANTREE-2-ROOTGUARDBLOCK: Port 1/1 tried to become non-designated in VLAN 77. Moved to root-inconsistent state
根防护在运行Cisco IOS®系统软件的Catalyst 6500/6000中可用。此功能首先在Cisco IOS软件版本12.0(7)XE中引入。对于运行 Cisco IOS 系统软件的 Catalyst 4500/4000,此功能在所有版本中均可用。
对于 Catalyst 2900XL 和 3500XL 交换机,根防护在 Cisco IOS 软件版本 12.0(5)XU 及更高版本中可用。Catalyst 2950 系列交换机在 Cisco IOS 软件版本 12.0(5.2)WC(1) 及更高版本中支持根防护功能。Catalyst 3550 系列交换机在 Cisco IOS 软件版本 12.1(4)EA1 及更高版本中支持根防护功能。
新型Cisco Catalyst系列交换机也具备此功能。
在运行 Cisco IOS 系统软件的 Catalyst 6500/6000 或 Catalyst 4500/4000 交换机上,请发出以下一组命令以配置 STP 根防护:
Switch#configure terminal Enter configuration commands, one per line. End with CNTL/Z. ! Switch#(config)#interface fastethernet 3/1 Switch#(config-if)#spanning-tree guard root
!
在 Catalyst 2900XL、3500XL、2950 和 3550 上,请按本例所示,在接口配置模式下为交换机配置根防护:
Switch#configure terminal Enter configuration commands, one per line. End with CNTL/Z. Switch(config)# interface fastethernet 0/8 Switch(config-if)# spanning-tree rootguard Switch(config-if)# ^Z *Mar 15 20:15:16: %SPANTREE-2-ROOTGUARD_CONFIG_CHANGE: Rootguard enabled on port FastEthernet0/8 VLAN 1. Switch#
BPDU 防护与根防护类似,但它们的作用不同。如果在端口上启用了 PortFast,则 BPDU 防护会在收到 BPDU 时禁用该端口。该禁用有效阻止了位于此类端口之后的设备参与 STP。您必须手动重新启用处入 errDisable 状态的端口或配置 errdisable-timeout。
只要设备不尝试成为根,根防护就允许设备参与 STP。如果根防护阻塞端口,随后的恢复将自动完成。一旦设备停止发送上级BPDU,就会立即进行恢复。
有关BPDU防护的详细信息,请参阅生成树PortFast BPDU防护增强功能。
网络中的两个网桥之间可能存在单向链路故障。由于该故障,一个网桥无法从根网桥接收 BPDU。出现此故障时,根交换机可以接收其他交换机发送的帧,但其他交换机无法接收根交换机发送的 BPDU。这可能会导致 STP 循环。由于其他交换机无法接收来自根的任何 BPDU,因此,这些交换机认为自己是根,并开始发送 BPDU。
当真正的根网桥开始接收 BPDU 时,根会丢弃这些 BPDU,因为它们并不是高级 BPDU。根网桥不会发生更改。因此,根防护并不能帮助解决该问题。单向链路检测 (UDLD) 和环路防护功能可解决该问题。
有关STP故障场景及其故障排除方法的详细信息,请参阅生成树协议问题和相关设计注意事项。
| 版本 | 发布日期 | 备注 |
|---|---|---|
5.0 |
15-Jun-2026
|
重新认证 |
3.0 |
13-Dec-2024
|
固定的超链接、格式和说明。 |
2.0 |
20-Nov-2023
|
已更新标题、SEO和格式。 |
1.0 |
29-Nov-2001
|
初始版本 |