简介
本文档介绍如何使用生成树协议(STP)来确保网络中具有冗余路径时不会产生环路。
先决条件
要求
本文档没有任何特定的要求。
使用的组件
本文档中的信息基于以下软件和硬件版本:
本文档中介绍的生成树原则适用于几乎所有支持STP的设备。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
背景信息
生成树协议 (STP) 是在网桥和交换机上运行的第二层协议。STP 的规范是 IEEE 802.1D。STP 的主要目的是确保当网络中有冗余路径时,不用创建环路。环路对网络有致命影响。
本文档中所涉及的配置适用于运行 Catalyst OS (CatOS) 的 Catalyst 2926G、2948G、2980G、4500/4000、5500/5000 和 6500/6000 交换机。有关在其他交换机平台上配置 STP 的信息,请参阅以下文档:
网络图
本文档使用以下网络设置:
概念
STP 在与 802.1D 兼容的网桥和交换机上运行。STP 还有其他一些形式,但 802.1D 却是最受用户欢迎并被广泛采用的一种形式。在网桥和交换机上实施 STP 是为了防止网络中出现环路。在需要冗余链路而不是环路的情况下使用 STP。冗余链路与网络出现故障切换时进行的备份同等重要。主链路出现故障时会激活备份链路,以便用户能够继续使用网络。如果网桥和交换机上没有 STP,这样的故障可能会导致出现环路。如果两台连接的交换机运行不同形式的STP,则它们需要不同的控制才能收敛。当交换机中使用不同类型时,会在阻塞和转发状态之间产生控制问题。因此,建议使用同一种形式的 STP。请考虑使用下面的网络:
在此网络中,计划在交换机 A 和交换机 B 之间设置冗余链路。但是,此设置可能会产生桥接环路。例如,从基站 M 传送来且传输至基站 N 的广播或多播数据包只继续在两台交换机之间传播。
然而,当两台交换机上均运行 STP 时,网络的逻辑结构如下图所示:
此信息适用于网络图中的方案:
为了提供此所需的路径冗余以及避免出现环路情况,STP 定义了跨越扩展网络中所有交换机的树。STP 强制某些冗余数据路径处于备用(阻塞)状态,而使其他路径处于转发状态。如果处于转发状态的链路不可用,则 STP 会通过激活相应的备用路径来重新配置网络及重新路由数据路径。
技术说明
通过 STP,网络中所有交换机的重点工作是选择作为网络焦点的根网桥。网络中的所有其他决策(例如,要阻塞哪个端口以及要使哪个端口处于转发模式)都是从此根网桥的角度做出的。交换环境与网桥环境不同,前者很可能处理多个 VLAN。当您在交换网络中实施根网桥时,通常将根网桥称为根交换机。由于每个 VLAN 都是独立的广播域,因此每个 VLAN 必须有其自己的根网桥。不同 VLAN 的所有根网桥可以位于一个交换机中,也可以位于多个交换机中。
注意:为特定VLAN选择根交换机非常重要。您可以亲自选择根交换机,也可以让交换机来决定选择哪个根交换机,但后者存在一定的风险。如果您不控制根交换机的选择进程,则网络中可能存在次优路径。
所有交换机都将交换用于根交换机选择和网络后续配置的信息。网桥协议数据单元 (BPDU) 传播此信息。每台交换机都会将它发送给相邻交换机的 BPDU 中的参数与它从相邻交换机接收的 BPDU 中的参数进行比较。
在 STP 根交换机选择进程中,数量越少效果越好。如果交换机 A 通告的根 ID 数字比交换机 B 通告的根 ID 数字少,则交换机 A 中的信息较好。交换机 B 将停止通告其根 ID,并接受交换机 A 的根 ID。
有关某些可选STP功能(列举如下)的详细信息,请参阅可选STP功能:
-
PortFast
-
根防护
-
环路防护
-
BPDU 防护
STP 操作
任务
先决条件
配置 STP 之前,请先选择一台交换机作为生成树的根网桥。这台交换机并不一定是功能最强大的交换机,但应选择网络上位置最集中的交换机。通过该网络的所有数据流都需要经过这台交换机。此外,请选择网络中受干扰程度最小的交换机。骨干交换机通常充当生成树根网桥,因为这些交换机通常不会连接到终端站。此外,网络内部的移动和更改操作影响这些交换机的可能性不大。
在您决定根交换机之后,请设置适当的变量以指定相应交换机作为根交换机。您必须设置的唯一变量是bridge priority 。如果某个交换机的网桥优先级低于所有其他交换机的网桥优先级,则其他交换机会自动选择该交换机作为根交换机。
交换机端口上的客户端(终端站)
您也可以针对每个端口发出set spantree portfast 命令。当您在端口上启用portfast 变量时,端口会立即从阻塞模式切换到转发模式。启用portfast 有助于防止使用Novell Netware或DHCP获得IP地址的客户端上出现超时。但是,当您具有交换机到交换机的连接时,请勿使用此命令。在这种情况下,该命令可能会导致出现环路。从阻塞模式转换到转发模式时会出现 30 到 60 秒的延迟,这可避免在连接两台交换机时网络中出现临时环路情况。
保留多数其他 STP 变量为其默认值。
操作规则
此部分列出有关 STP 如何工作的规则。当交换机首次出现时,它们用于启动根交换机的选择进程。每台交换机会将每个 VLAN 的 BPDU 传输给直接连接的交换机。
当 BPDU 通过网络传出时,每台交换机都会将它发送的 BPDU 与它从相邻交换机接收的 BPDU 进行比较。随后,这些交换机将通过协商确定将哪台交换机作为根交换机。网络中网桥 ID 最小的交换机将在此选举过程中获胜。
注意:请记住,每个VLAN对应一台根交换机。在根交换机标识之后,交换机将遵守这些规则。
-
STP 规则 2 - 必须将根端口设置为转发模式。
此外,每个 LAN 分段上的交换机都彼此通信,以确定哪台交换机最适宜用来将该分段中的数据移动至根网桥。此交换机称为指定的交换机。
-
STP 规则 3 - 在一个 LAN 分段中,连接到该 LAN 分段的指定交换机的端口必须处于转发模式。
-
STP 规则 4 - 所有交换机(特定于 VLAN)中的所有其他端口必须处于阻塞模式。该规则只适用于连接到其他网桥或交换机的端口。STP 不会对连接到工作站或 PC 的端口产生影响。这些端口保持转发状态。
注意:当STP在每VLAN生成树(PVST/PVST+)模式下运行时,添加或删除VLAN会触发对该VLAN实例的生成树重新计算,并且只有该VLAN的流量会中断。中继链路的其他 VLAN 部分通常可以转发流量。如果添加或移除存在的多生成树 (MST) 实例的 VLAN,则会触发重新计算该实例的生成树并且会中断该 MST 实例的所有 VLAN 部分的流量。
注意:默认情况下,生成树在每个端口上运行。无法在每个端口中禁用交换机的生成树功能。尽管您可以在每个 VLAN 中禁用 STP,或者在交换机中全局禁用 STP,但不建议您这样做。每次禁用生成树时都必须格外小心,因为这会在网络中产生第2层环路。
逐步指导
请完成以下步骤:
-
发出show version 命令以显示交换机运行的软件版本。
Switch-15> (enable)show version
WS-C5505 Software, Version McpSW: 4.2(1) NmpSW: 4.2(1)
Copyright (c) 1995-1998 by Cisco Systems
NMP S/W compiled on Sep 8 1998, 10:30:21
MCP S/W compiled on Sep 08 1998, 10:26:29
System Bootstrap Version: 5.1(2)
Hardware Version: 1.0 Model: WS-C5505 Serial #: 066509927
Mod Port Model Serial # Versions
--- ---- ---------- --------- ----------------------------------------
1 0 WS-X5530 008676033 Hw : 2.3
Fw : 5.1(2)
Fw1: 4.4(1)
Sw : 4.2(1)
在此方案中,交换机 15 最适合作为所有 VLAN 的网络的根交换机,因为它是骨干交换机。
-
发出set spantree root vlan_id 命令,以便将vlan_id 指定的一个或多个VLAN的交换机的优先级设置为8192。
注意:交换机的默认优先级为32768。当您使用此命令设置优先级时,请强制选择交换机 15 作为根交换机,因为交换机 15 的优先级最低。
Switch-15> (enable)set spantree root 1
VLAN 1 bridge priority set to 8192.
VLAN 1 bridge max aging time set to 20.
VLAN 1 bridge hello time set to 2.
VLAN 1 bridge forward delay set to 15.
Switch is now the root switch for active VLAN 1.
Switch-15> (enable)
Switch-15> (enable)set spantree root 200
VLAN 200 bridge priority set to 8192.
VLAN 200 bridge max aging time set to 20.
VLAN 200 bridge hello time set to 2.
VLAN 200 bridge forward delay set to 15.
Switch is now the root switch for active VLAN 200.
Switch-15> (enable)
Switch-15> (enable)set spantree root 201
VLAN 201 bridge priority set to 8192.
VLAN 201 bridge max aging time set to 20.
VLAN 201 bridge hello time set to 2.
VLAN 201 bridge forward delay set to 15.
Switch is now the root switch for active VLAN 201.
Switch-15> (enable)
Switch-15> (enable)set spantree root 202
VLAN 202 bridge priority set to 8192.
VLAN 202 bridge max aging time set to 20.
VLAN 202 bridge hello time set to 2.
VLAN 202 bridge forward delay set to 15.
Switch is now the root switch for active VLAN 202.
Switch-15>
Switch-15> (enable)set spantree root 203
VLAN 203 bridge priority set to 8192.
VLAN 203 bridge max aging time set to 20.
VLAN 203 bridge hello time set to 2.
VLAN 203 bridge forward delay set to 15.
Switch is now the root switch for active VLAN 203.
Switch-15>
Switch-15> (enable)set spantree root 204
VLAN 204 bridge priority set to 8192.
VLAN 204 bridge max aging time set to 20.
VLAN 204 bridge hello time set to 2.
VLAN 204 bridge forward delay set to 15.
Switch is now the root switch for active VLAN 204.
Switch-15> (enable)
此命令的简短版本具有相同效果,如以下示例所示:
set spantree priority Switch-15> (enable)set spantree root 1,200-204
VLANs 1,200-204 bridge priority set to 8189.
VLANs 1,200-204 bridge max aging time set to 20.
VLANs 1,200-204 bridge hello time set to 2.
VLANs 1,200-204 bridge forward delay set to 15.
Switch is now the root switch for active VLANs 1,200-204.
Switch-15> (enable)
命令提供用于指定根交换机的第三种方法:
Switch-15> (enable)set spantree priority 8192 1
Spantree 1 bridge priority set to 8192.
Switch-15> (enable)
注意:在此场景中,所有交换机都开始采用原始配置。因此,所有交换机的网桥优先级最初均为 32768。如果您不确定网络中的所有交换机的优先级是否大于 8192,请将所需根网桥的优先级设置为 1。
-
发出set spantree portfast mod_num/port_num enable 命令以配置交换机12、13、14、16和17上的PortFast设置。
注意:仅在连接到工作站或PC的端口上配置此设置。请勿在连接到其他交换机的任何端口上启用 Portfast。
根据此信息,在端口3/1至3/24和端口4/1至4/24上发出set spantree portfast命令:
Switch-12> (enable)set spantree portfast 3/1-24 enable
Warning: Spantree port fast start should
only be enabled on ports connected to a single host. Connecting hubs, concentrators, switches, bridges, etc.
to a fast start port can cause temporary spanning-tree loops. Use with caution. Spantree ports 3/1-24 fast start enabled.
Switch-12> (enable) Switch-12> (enable)set spantree portfast 4/1-24 enable Warning: Spantree port fast start should
only be enabled on ports connected to a single host. Connecting hubs, concentrators, switches, bridges, etc.
to a fast start port can cause temporary spanning-tree loops. Use with caution. Spantree ports 4/1-24 fast start enabled. Switch-12> (enable)
-
发出 show spantree vlan_id命令,以验证交换机15是否是所有相应VLAN的根交换机。
根据该命令的输出,将根交换机的 MAC 地址与从中发出该命令的交换机的 MAC 地址进行比较。如果二者的地址相符,则您所在的交换机就是 VLAN 的根交换机。1/0 根端口也表明您位于根交换机。下面是命令输出示例:
Switch-15> (enable)show spantree 1
VLAN 1
spanning-tree enabled
spanning-tree type ieee
Designated Root 00-10-0d-b1-78-00
!--- This is the MAC address of the root switch for VLAN 1.
Designated Root Priority 8192
Designated Root Cost 0
Designated Root Port 1/0
Root Max Age 20 sec Hello Time 2 sec Forward Delay 15 sec
Bridge ID MAC ADDR 00-10-0d-b1-78-00
Bridge ID Priority 8192
Bridge Max Age 20 sec Hello Time 2 sec Forward Delay 15 sec
此输出显示交换机 15 是 VLAN 1 的生成树上的指定根交换机。指定根交换机的MAC地址00-10-0d-b1-78-00与交换机15的网桥ID MAC地址00-10-0d-b1-78-00相同。另一种指示此交换机是指定根交换机的判定方法是指定根端口为 1/0。
在交换机12的此输出中,该交换机将交换机15识别为VLAN 1的Designated Root:
Switch-12> (enable)show spantree 1
VLAN 1
spanning-tree enabled
spanning-tree type IEEEDesignated Root 00-10-0d-b1-78-00
!--- This is the MAC address of the root switch for VLAN 1.
Designated Root Priority 8192
Designated Root Cost 19
Designated Root Port 2/3
Root Max Age 20 sec Hello Time 2 sec Forward Delay 15 sec
Bridge ID MAC ADDR 00-10-0d-b2-8c-00
Bridge ID Priority 32768
Bridge Max Age 20 sec Hello Time 2 sec Forward Delay 15 sec
注意:其他交换机和VLAN的show spantree vlan_id命令的输出也可指示交换机15是所有VLAN的指定根交换机。
验证
本部分提供可用于确认您的配置是否正常运行的信息。
故障排除
本部分提供的信息可用于对配置进行故障排除。
当端口速度/双工更改时,STP 路径成本会自动更改
STP 基于交换机之间链路的介质速度(带宽)计算路径成本,并计算每个端口转发帧的端口成本。生成树将根据路径成本选择根端口。到根网桥的路径成本最低的端口将成为根端口。根端口始终处于转发状态。
如果更改端口的速度/双工,则生成树将自动重新计算路径成本。路径成本更改的同时会更改生成树拓扑。
有关如何计算端口成本的详细信息,请参阅配置生成树的计算和分配端口成本部分。
故障排除命令
注意:使用debug命令之前,请参阅有关debug命令的重要信息。
命令汇总
语法: |
show version |
如本文档中所引用部分: |
show version |
语法: |
set spantree root [vlan_id] |
如本文档中所引用部分: |
set spantree root 1 |
|
set spantree root 1,200-204 |
语法: |
set spantree priority [vlan_id] |
如本文档中所引用部分: |
set spantree priority 8192 1 |
语法: |
set spantree portfast mod_num/port_num {enable | disable} |
如本文档中所引用部分: |
set spantree portfast 3/1-24 enable |
语法: |
show spantree [vlan_id] |
如本文档中所引用部分: |
show spantree |
相关信息