在以太网中,二层网络的环路会带来广播风暴,MAC地址表震荡,重复数据帧等问题,为解决交换网络中的环路问题,提出了STP。
STP的主要作用:
消除环路:通过阻断冗余链路来消除网络中可能存在的环路。
链路备份:当活动路径发生故障时,**备份链路,及时恢复网络连通性。
STP操作:
1. 选举一个根桥。
选举依据的是桥ID,桥优先级是可以配置的,取值范围是0~65535,默认值为32768。优先级最高的设备(桥ID最小)会被选举为根桥。如果优先级相同,则会比较MAC地址,MAC地址越小则越优先。
2. 每个非根交换机选举一个根端口。
非根交换机在选举根端口时分别依据该端口的根路径开销、对端BID(Bridge ID)、对端PID(Port ID)和本端PID。根路径开销RPC(Root Path Cost)。如果有两个或两个以上的端口计算得到的累计根路径开销相同,那么选择收到发送者BID最小的那个端口作为根端口。
3. 每个网段选举一个指定端口。
在网段上抑制其他端口(无论是自己的还是其他设备的)发送BPDU报文的端口,就是该网段的指定端口。每个网段都应该有一个指定端口,根桥的所有端口都是指定端口(除非根桥在物理上存在环路)。
指定端口的选举也是首先比较累计根路径开销,累计根路径开销最小的端口就是指定端口。如果累计根路径开销相同,则比较端口所在交换机的桥ID,所在桥ID最小的端口被选举为指定端口。如果通过累计根路径开销和所在桥ID选举不出来,则比较端口ID,端口ID最小的被选举为指定端口。
4. 阻塞非根、非指定端口。
网络收敛后,只有指定端口和根端口可以转发数据。其他端口为预备端口,被阻塞,不能转发数据,只能够从所连网段的指定交换机接收到BPDU报文,并以此来监视链路的状态。
端口角色:根端口(RP) 指定端口(DP) 阻塞端口(Alternate Port)
端口状态
| 禁用Disabled | 端口既不处理和转发BPDU报文,也不转发用户流量。 |
| 侦听Listening | 端口可以转发BPDU报文,但不能转发用户流量。 |
| 学习 Learning | 端口可根据收到的用户流量构建MAC地址表,但不转发用户流量。增加Learning状态是为了防止临时环路。 |
| 转发 Forwarding | 端口既可转发用户流量也可转发BPDU报文,只有根端口或指定端口才能进入Forwarding状态。 |
| 阻塞Blocking | 端口仅仅能接收并处理BPDU,不能转发BPDU,也不能转发用户流量。此状态是预备端口的最终状态。 |
STP的消息(BPDU: Bridge Protocol Data Unit桥协议数据单元)
配置BPDU:
BPDU有两种类型:配置BPDU和TCN BPDU。
配置BPDU包含了桥ID、路径开销和端口ID等参数。STP协议通过在交换机之间传递配置BPDU来选举根交换机,以及确定每个交换机端口的角色和状态。在初始化过程中,每个桥都主动发送配置BPDU。在网络拓扑稳定以后,只有根桥主动发送配置BPDU,其他交换机在收到上游传来的配置BPDU后,才会发送自己的配置BPDU。
TCN BPDU是指下游交换机感知到拓扑发生变化时向上游发送的拓扑变化通知。
配置BPDU中包含了足够的信息来保证设备完成生成树计算,其中包含的重要信息如下:
根桥ID:由根桥的优先级和MAC地址组成,每个STP网络中有且仅有一个根。
根路径开销:到根桥的最短路径开销。
指定桥ID:由指定桥的优先级和MAC地址组成。
指定端口ID:由指定端口的优先级和端口号组成。
Message Age:配置BPDU在网络中传播的生存期。
Max Age:配置BPDU在设备中能够保存的最大生存期。
Hello Time:配置BPDU发送的周期。
Forward Delay:端口状态迁移的延时。
STP解决环路问题,但是收敛较慢,影响用户通信质量。
STP不足:
1.STP从初始状态到完全收敛至少需经过30s。
2.交换机有BP端口,RP端口down掉场景,直连链路down掉,其BP端口切换成RP端口并进入转发状态至少需要经过30s。
3.交换机无BP端口,RP端口down掉场景,SWB与SWA的直连链路down掉,则SWC的BP端口切换成DP端口并进入转发状态大约需要50s。
4.运行STP的交换机连接用户终端的场景,交换机连接终端的链路进入转发需要经过30s。
5.TC报文刷新MAC地址表效率低下
6.端口角色备份职能不清,端口状态定义繁冗。