局域网交换 : 生成树协议

生成树协议根防护增强功能

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


目录


简介

本文档说明了生成树协议 (STP) 根防护功能。此功能是 Cisco 创建的 STP 增强功能之一。此功能提高了交换网络的可靠性、可管理性和安全性。

先决条件

要求

本文档没有任何特定的要求。

使用的组件

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

规则

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

功能描述

标准 STP 并未为网络管理员提供任何安全执行第 2 层 (L2) 交换网络拓扑的方法。执行拓扑的方法对于采用共享管理控制(即不同管理实体或公司控制一个交换网络)的网络特别重要。

交换网络的转发拓扑被计算出来。除其他参数外,该计算还基于根网桥安置。任何交换机都可能是网络中的根网桥。但最优转发拓扑会将根网桥放置在预先确定的特定位置。使用标准 STP,网络中任何网桥 ID 较低的网桥将扮演根网桥的角色。管理员不能强制确定根网桥的位置。

注意: 管理员可以将根网桥的优先级设置为 0,以保护根网桥的位置。但是,优先级为 0 的网桥并不能保证具有较低的 MAC 地址。

根防护功能提供了在网络中强制执行根网桥安置的方法。

根防护可确保启用了根防护的端口为指定端口。通常,除非根网桥的两个或多个端口连接在一起,否则根网桥端口全部为指定端口。如果网桥在启用了根防护的端口上收到高级 STP 网桥协议数据单元 (BPDU),根防护会将此端口转换为根不一致 STP 状态。此根不一致状态实际上等效于监听状态。此时不会通过此端口转发任何流量。根防护以这种方式强制确定根网桥的位置。

本部分的示例说明恶意根网桥如何在网络中造成问题,以及根防护如何帮助解决这类问题。

图 1 中,交换机 A 和 B 构成了网络的核心,A 为 VLAN 的根网桥。交换机 C 为接入层交换机。B 与 C 之间的链路在 C 侧阻塞。箭头表示 STP BPDU 的流向。

图 1

/image/gif/paws/10588/74a.gif

图 2 中,设备 D 开始参与 STP。例如,在客户连接服务提供商网络的电脑或其他交换机上启动基于软件的网桥应用程序。如果网桥 D 的优先级为 0 或任何低于根网桥优先级的值,则设备 D 将被选为此 VLAN 的根网桥。如果设备 A 与 B 之间的链路为 1 千兆,并且 A 与 C 之间以及 B 与 C 之间的链路为 100 Mbps,则选择 D 作为根网桥将导致连接两个核心交换机的千兆以太网受到阻塞。此阻塞将使该 VLAN 中的所有数据通过一条 100 Mbps 链路流经接入层。如果通过该 VLAN 核心的数据流超出了此链路的容纳能力,则该链路会丢弃一些帧。帧丢弃会导致性能下降或连接中断。

图 2

/image/gif/paws/10588/74b.gif

根防护功能可防止网络出现此类问题。

根防护配置针对的是每个端口。根防护不允许端口成为 STP 根端口,因此,端口始终是 STP 指定的。如果一个更好的 BPDU 到达此端口,根防护不会考虑此 BPDU 并选择新的 STP 根。相反,根防护会将该端口置于根不一致 STP 状态。必须在不应出现根网桥的所有端口上启用根防护。从某种程度上说,您可以在能够定位 STP 根的网络部分周围配置一个边界。

在连接交换机 D 的交换机 C 的端口上启用根防护,如图 2 所示。

在收到高级 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

可用性

根防护在软件版本 6.1.1 及更高版本的 Catalyst 29xx、4500/4000、5500/5000 和 6500/6000 的 Catalyst OS (CatOS) 中可用。对于Catalyst 6500/6000运行Cisco IOSï ¿ Â的½系统软件,此功能在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 及更高版本中支持根防护功能。

配置

CatOS 配置

根防护配置针对的是每个端口。在运行 CatOS 的 Catalyst 交换机上,请按以下方式配置根防护:

vega> (enable) set spantree guard root 1/1
Rootguard on port 1/1 is enabled.
Warning!! Enabling rootguard may result in a topology change.
vega> (enable)

为验证是否已配置根防护,请发出以下命令:

vega> (enable) show spantree guard
Port                     VLAN Port-State    Guard Type
------------------------ ---- ------------- ----------
 1/1                     1    forwarding          root
 1/2                     1    not-connected       none
 3/1                     1    not-connected       none
 3/2                     1    not-connected       none
 3/3                     1    not-connected       none
 3/4                     1    not-connected       none
 5/1                     1    forwarding          none
 5/25                    1    not-connected       none
15/1                     1    forwarding          none
vega> (enable)

Catalyst 6500/6000 和 Catalyst 4500/4000 的 Cisco IOS 软件配置

在运行 Cisco IOS 系统软件的 Catalyst 6500/6000 或 Catalyst 4500/4000 交换机上,请发出以下一组命令以配置 STP 根防护:

Cat-IOS# configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.

Cat-IOS#(config)# interface fastethernet 3/1

Cat-IOS#(config-if)# spanning-tree guard root

注意: 运行 Cisco IOS 系统软件的 Catalyst 6500/6000 的 Cisco IOS 软件版本 12.1(3a)E3 将此命令由 spanning-tree rootguard 更改为“spanning-tree guard root”。运行 Cisco IOS 系统软件的 Catalyst 4500/4000 在所有版本中使用 spanning-tree guard root 命令。

Catalyst 2900XL/3500XL、2950 和 3550 的 Cisco IOS 软件配置

在 Catalyst 2900XL、3500XL、2950 和 3550 上,请按本例所示,在接口配置模式下为交换机配置根防护:

Hinda# configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.
Hinda(config)# interface fastethernet 0/8
Hinda(config-if)# spanning-tree rootguard
Hinda(config-if)# ^Z
*Mar 15 20:15:16: %SPANTREE-2-ROOTGUARD_CONFIG_CHANGE: Rootguard enabled on 
port FastEthernet0/8 VLAN 1.^Z
Hinda#

STP BPDU 防护和 STP 根防护有何区别?

BPDU 防护与根防护类似,但它们的作用不同。如果在端口上启用了 PortFast,则 BPDU 防护会在收到 BPDU 时禁用该端口。该禁用有效阻止了位于此类端口之后的设备参与 STP。您必须手动重新启用处入 errDisable 状态的端口或配置 errdisable-timeout

只要设备不尝试成为根,根防护就允许设备参与 STP。如果根防护阻塞端口,随后的恢复将自动完成。一旦冲突设备停止发送高级 BPDU,便将进行恢复。

有关 BPDU 防护的详细信息,请参阅以下文档:

根防护是否有助于解决两个根的问题?

网络中的两个网桥之间可能存在单向链路故障。由于该故障,一个网桥无法从根网桥接收 BPDU。出现此故障时,根交换机可以接收其他交换机发送的帧,但其他交换机无法接收根交换机发送的 BPDU。这可能会导致 STP 循环。由于其他交换机无法接收来自根的任何 BPDU,因此,这些交换机认为自己是根,并开始发送 BPDU。

当真正的根网桥开始接收 BPDU 时,根会丢弃这些 BPDU,因为它们并不是高级 BPDU。根网桥不会发生更改。因此,根防护并不能帮助解决该问题。单向链路检测 (UDLD) 和环路防护功能可解决该问题。

有关 STP 故障情形及如何解决这些故障的详细信息,请参阅以下文档:


相关信息


Document ID: 10588