STP的原理、STP的端口状态、端口角色、选举规程
为什么会有STP:高效而又稳定得网络应该具有一定程度的“自愈”能力。比如当某个端口或某条链路出现故障时,网络能够自动吧流量切换到另一条备份链路上。那就需要在网络中提前布置冗余,冗余的布置固然可以增加网络的可用性,但是可能形成一个封闭的信息环路,并导致广播风暴以及MAC地址表不稳定等问题,进而会影响到用户的通信质量,最终可能对网络造成毁灭性的影响。那么就需要一个机制从逻辑上打破这个环路,STP协议也就是生成树协议,它的作用就是在拥有冗余链路的交换环境中,既保证每个节点可达,又能打破网络中的逻辑环路。也就是相当于拿一台交换机专门当做备份机,出问题了就从这个交换机走,保证网络的连通。
BPDU:为了计算生成树,交换机之间需要交换相关的信息和参数,这些信息和参数被封装在BPDU,BPDU包含:桥ID、根路径开销、指定桥ID、指定端口ID、Message Age、Max Age、Hello Time、Forward Delay
关于生存时间:
1.HELLO时间:交换机发送BPDU报文之间的时间间隔,默认为2s
2.转发延迟:交换机在侦听Listening到学习Learning状态所花费的时间,默认为15s(学习到转发状态也是15s)
3.最大老化时间:交换机在丢弃BPDU报文之前储存它的时间,默认为20s
STP端口状态:
Forwarding:转发状态。端口既可转发用户流量也可转发BPDU报文,只有根端口或指定端口才能进入Forwarding状态
Learning:学习状态。端口可根据收到的用户流量构建MAC地址表,但不转发用户流量。增加Learning状态是为了防止临时环路。
Listening:侦听状态。端口可以转发BPDU报文,但不能转发用户流量
Blocking:阻塞状态。端口仅仅能接收并处理BPDU报文,但不能转发用户流量。此状态是预备端口的最终状态
Disabled:禁用状态。端口既不处理和转发BPDU报文,也不转发用户流量
STP端口角色:
根桥:这是交换网络中的一台交换机,它将成为STP树的树根。
根端口:这是交换网络中的一些端口,负责转发数据。是非根交换机去往根桥路径最优的端口。在一个运行STP协议的交换机上最多只有一个根端口,但根桥上没有根端口。
指定端口:这是交换网络中的一些端口,负责转发数据。每个网段有且只能有一个指定端口。一般情况下,根桥的每个端口总是指定端口。
预备端口:这是交换网络中的一些端口,出于阻塞状态,不能转发数据。预备端口不是选举出来的,而是全部选举中落选的端口。也就是说一个端口既不是根端口也不是指定端口,那么这个端口就是预备端口,将要被阻塞。预备端口不会接收或发送任何数据,但它会监听BPDU。在网络因为一些端口出现故障时,STP会让预备端口转发数据,保证网络的正常。
选举规程:
- 选举根桥:每个STP网络中都有且只有一台根桥。在一个STP网络中,默认所有交换机都会参与根桥的选举,选举的原则是在选举根桥是,交换机之间相互对比的参数时“桥ID”,桥ID是由16位的桥优先级和48位的MAC地址构成。桥优先级数值最小的会被选举为根桥,如果桥优先级数值相同,则会比较MAC地址,MAC地址越小越优先。
- 选举根端口:非根交换机会在自己的所有端口之间,选择出距离根桥最近的端口,这个端口就是根端口。根据路径开销和桥ID以及端口ID来作为选举条件
- 选举指定端口:位于同于网段中的所有端口之间选择出一个距离根桥最近的端口,根据路径开销和桥ID以及端口ID来作为选举条件
- 阻塞剩余端口:在选出了根端口和指定端口后,STP会把既不是根端口也不是指定端口的其他所有端口置于阻塞状态