STP 的主要任务是防止第2层网络(网桥或交换机)出现网络环路,它警惕地监视着网络以找出所有可用链路,并关闭任何冗余链路以确保不会出现环路
1、STP相关名词
- 根桥(Root Bridge) 根桥是指拥有最佳桥囚的网桥
- BPDU 指网络中所有交换机都需要相互交换的、用于根交换机选举的信息
- 桥ID STP使用桥ID跟踪网络中的所有交换机,桥ID由桥优先级和桥MAC地址共同决定,在网络中拥有最小桥 ID的网桥将成为根桥
- 非根桥(Designated Bridge) 指除了根桥外的所有网桥。非根桥会与所有的网桥交换 BPDU,并在所有交换机上更新 STP 拓扑数据库,以防止环路并对链路失效提供保障措施
- 端口开销 当两台交换机间存在多条链路时,端口开销用于确定最佳路径,一条链路的开销取决于链路的带宽
- 根端口(Root Port) 与根桥直接相连的链路所在的端口,或者是通往根桥路径开销最低的端口
- 指定端口(Designated Port) 指定端口时专门指定的,通过其根端口到达根桥开销最低的端口,指定端口会被标记为转发端口
- 非指定端口 开销比指定端口高的端口,非指定端口将被设置为阻塞状态,不能进行转发
- 转发端口 能够进行数据帧转发的端口,可以是根端口或指定端口
- 阻塞端口 不能转发帧的端口,设置阻塞端口是为了避免环路
2、STP生成树的操作
2.1、根桥选举
桥 ID 将用于 STP 域中根桥的选举,并且当多个候选者的可用根端口和路径开销相等时,桥 ID 也可以确定此 STP 域中剩余设备的根端口,其包括了设备的优先级和 MAC 地址
为了确定根桥,需要将每个桥的优先级和它的 MAC 地址结合起来,如果两个交换机碰巧拥有相同的优先级数值,那么MAC地址就成为决定哪个设备具有最低(最佳 )ID 的依据
2.2、端口状态
端口状态 | 目的 | 说明 |
---|---|---|
Forwarding | 端口既转发用户流量也处理BPDU报文。 | 只有根端口或指定端口才能进入Forwarding状态。 |
Learning | 设备会根据收到的用户流量构建MAC地址表,但不转发用户流量。 | 过渡状态,增加Learning状态防止临时环路。 |
Listening | 确定端口角色,将选举出根桥、根端口和指定端口。 | 过渡状态。 |
Blocking | 端口仅仅接收并处理BPDU,不转发用户流量。 | 阻塞端口的最终状态。 |
Disabled | 端口不仅不处理BPDU报文,也不转发用户流量。 | 端口状态为Down。 |
3.3、汇聚
当交换机上的所有端口都转换到了转发或阻塞模式时,就会形成会聚,在会聚完成之前,无法转发数据,从阻塞转换到转发模式通常会需要 等待一定的时间
因为从阻塞到转发的典型的生成树拓扑会聚需要一定的时间,这样在服务器或主机上就会引发超时的问题,针对这样的问题,可以在个别端口上关闭STP协议即可
4、RSTP快速生成树协议
RSTP删除了3种端口状态,新增加了2种端口角色,并且把端口属性充分的按照状态和角色解耦;此外,RSTP还增加了相应的一些增强特性和保护措施,实现网络的稳定和快速收敛
- RSTP的状态规范把原来的5种状态缩减为3种:
- 如果不转发用户流量也不学习MAC地址,那么端口状态就是Discarding状态。
- 如果不转发用户流量但是学习MAC地址,那么端口状态就是Learning状态。
- 如果既转发用户流量又学习MAC地址,那么端口状态就是Forwarding状态。
- RSTP与STP端口状态对比
STP端口状态 | RSTP端口状态 | 端口在拓扑中的角色 |
---|---|---|
Forwarding | Forwarding | 包括根端口、指定端口 |
Learning | Learning | 包括根端口、指定端口 |
Listening | Discarding | 包括根端口、指定端口 |
Blocking | Discarding | 包括Alternate端口、Backup端口 |
Disabled | Discarding | 包括Disable端口 |