STP,全称Spanning Tree Protocol,它是开放系统互联OSI模型中第二层“数据链路层”最主要的协议之一。
图片
生成树协议诞生的背景
在以太网交换网络中,为了提高网络可靠性,通常会使用冗余链路。但使用冗余链路在交换网络中会产生环路,导致广播风暴、MAC地址表不稳定等故障现象,从而影响用户通信质量。STP 协议的作用就是通过阻塞冗余链路的端口,在交换网络中防止环路的产生。
生成树协议发展历程
STP协议最初由IEEE在1989年发布的IEEE 802.1D标准中定义。STP协议的缺点是收敛时间长,因此 IEEE 在2004年发布了IEEE 802.1w 标准,定义了快速生成树协议 (Rapid Spanning Tree Protocol)。RSTP 协议的收敛时间比STP协议快得多,但仍然存在一些缺点。
为了解决STP和RSTP的缺点,在IEEE 802.1s的标准中再次定义了多生成树协议 (Multiple Spanning Tree Protocol)。MSTP协议可以为不同VLAN创建不同的生成树,从而提高网络的性能和可靠性。
STP、PVST、PVST+、RSTP 和 MSTP 之间的关系如下:
- STP 是生成树协议的基础,PVST、PVST+、RSTP 和 MSTP 都是基于 STP 协议的改进。
- PVST 和 PVST+ 是 Cisco 公司对 STP 协议的改进,可以为不同的 VLAN 创建不同的生成树。
- RSTP 是 STP 协议的改进,收敛时间更短。
- MSTP 是 STP 协议的改进,可以为不同 VLAN 创建不同的生成树,并且具有更好的性能和可靠性。
具体来说,STP 协议是单生成树协议 (Single Spanning Tree),它为整个网络创建一个生成树。STP 协议的缺点是收敛时间长,因此 Cisco 公司开发了 PVST 和 PVST+ 协议。PVST 和 PVST+ 协议都是基于 STP 协议的,但它们可以为不同的 VLAN 创建不同的生成树。这可以提高网络的性能和可靠性,但也增加了网络管理的复杂性。
RSTP 协议是快速生成树协议 (Rapid Spanning Tree),它可以缩短STP协议的收敛时间。RSTP协议的缺点是仍然是单生成树协议,它不能完全解决STP协议的缺点。
MSTP 协议是多生成树协议 (Multiple Spanning Tree),它可以为不同 VLAN 创建不同的生成树。因此,MSTP 协议是目前最先进的生成树协议。
生成树协议的原理
STP执行一种被称为STA(Spanning-Tree Algorithm,生成树算法)的算法,通过判断网络中存在环路的地方并阻断冗余链路。为了找到冗余链路, STA在网络中选择一个参考点,然后确定到该参考点的冗余路径,这个参考点通常被称为生成树的根。如果STA发现存在冗余路径,那么它将选择到达根的最优路径(通常是开销最小的路径),同时阻断所有其他冗余路径。如果最优路径发生故障,那么之前被阻塞的端口将被激活,生成新的最优路径并参与数据的转发。为了进一步说明生成树是怎样建立无环路径的,我们先熟悉一些STP名词:
根桥:生成树的“树根”,桥id最小的交换机。
非根交换机:除了根桥,其它的都是非根交换机。
根端口:离根桥最近的端口。每一个非根交换机都有一个根端口。
指定端口:除了根端口,所有参与数据转发的端口都是指定端口。根桥上所有的端口都是指定端口。
非根非指定端口:被阻塞的端口,也是我们理解的冗余链路的端口。
路径开销:到达根桥的过程中端口cost值的累计。端口cost值越小,路径开销越小,对应的路径就更优。
桥ID:是由桥优先级和桥MAC地址构成。
端口ID:是由端口优先级和端口号构成。
STP的选举过程
一、选举1个根网桥
每个VLAN中只能有1个网桥担当根网桥。在根网桥上,所有的端口都担当指定端口。指定端口不仅能够发送和接收流量,还可以发送和接收配置消息或BPDU。根网桥是所有交换机用来确定网络中是否存在环路的参考点。通过交换BPDU,交换机就知道谁的桥ID最小,谁就是根桥。
二、选择所有非根网桥的根端口
根端口能够发送和接收流量。如果非根网桥拥有到达根网桥的多条等价路径,那么非根网桥将选择连接到最低网桥ID的端口。如果等价路径的所有网桥ID都是相同的,那么非根网桥将选择具有最低端口ID(端口ID是局部有效的配置)的端口。
三、选择各个网段的指定端口
在各个网段中,STP在网桥上建立一个指定端口,它到达根网桥的路径开销最低。如果出现路径开销相等的情况,那么桥ID就派上用场了。如果相同网桥上多个端口的开销也相同,那么具有最低优先级的端口将被选为指定端口。如果端口优先级也相同,那么哪个端口的号最小就是谁。记住:生成树协议中都是选最低(最小)的,不管是ID、优先级还是端口号。非根非指定端口只能够接收流量,但不能参与转发,就是为了避免环路。
STP 协议会不断地监控网络拓扑,并根据需要调整逻辑树。如果网络拓扑发生变化,STP 可能会将某些链路从活动状态更改为阻塞状态,或者将某些链路从阻塞状态更改为活动状态。
日常配置STP的注意事项
为了能够在分布层和接入层的交换机之间转发流量,我们通常选择位于中心位置的交换机或核心交换机作为主根网桥,这些交换机具有充足的CPU资源和交换能力。在主根网桥或当前根网桥发生故障的时候,将选择备份或辅助根网桥。这种选择过程应当提前规划好,确保:即使主根网桥发生故障,新的根网桥仍然位于中心位置,并且具有接管主交换机角色的足够CPU资源和交换能力。在生产网络中,一般要求备份根网桥和主交换机具有相同的能力。如果满足上述要求,即使主根网桥发生故障,网络性能也不会受到太大的影响。