一、产生背景
为了提高网络可靠性,交换网络中通常会使用冗余链路,然而,冗余链路会给交换网络带来环路风险,并且导致形成环路风暴、导致MAC地址表震荡、多帧复制等不稳定等问题,进而影响到用户的通信质量。
STP可以在提高可靠性的同时又避免环路带来的各种问题。
二、STP的作用
防止交换环路(消除环路)和链路备份。
三、STP的工作原理
通过STP的算法,来阻塞特定的接口,来实现冗余无环路网段。
四、STP的计算方法
1.选出整个网络中的根桥(桥指交换机)。
选择根桥的方式:通过优先级+MAC地址比较进行选择,越小越优先。也有称通过BID选择。
BID=优先级+MAC。优先级的范围:0-65535 默认值:32768
我们通过命令:dis stp
可以查到以下内容:
图中红框中的BID相同,则说明该交换机为根桥。
2.在每个非根桥上选取一个根端口(有且只有一个)。
简单的选择标准:默认情况下,到达根桥最近的端口,就是根端口。
详细的选择标准:
1).依据该端口的根路径开销。
2).依据对端的BID(桥ID)(越小越优先)
3).依据对端的PID (端口+接口号)
4).依据本段的PID
下表中,是链路速度与开销的对应表:
链路速度 |
开销 |
10Gbit/s |
2 |
1Gbit/s |
4 |
100Mbit/s |
19 |
10Mbit/s |
100 |
3.在每个段的链路中,选择一个指定端口。(每个段指两台设备之间的链路,直连的这条线)
默认情况下:根桥上的端口,都是指定端口。
1).依据该端口的根路径开销。
2).依据对端的BID(桥ID)(越小越优先)
3).依据对端的PID (端口+接口号)
4).依据本段的PID
4.剩下的就是阻塞端口,也叫非指定端口或预备端口。
五、STP根桥修改
我们知道了交换机STP选取各个角色的方式,我们就可以修改根桥。
stp priority 0 (步长为4096,或者说更改优先级都是4096的倍数) 修改优先级
stp root primary :直接指定根桥
stp root secondary :设置备份根桥。
六、端口的状态
STP的角色不同,对应端口的状态也不相同,端口的状态如下:
1.未启用的状态
默认的情况下,所有的端口都参与生成树规则。不论是对端接的是交换机还是主机。
2.阻塞状态:预备端口,非指定端口状态
端口处于该状态下,是不会转发数据帧的,也不会学习MAC地址表,会接受和处理BPDU报文,但是不会向外发送BPDU。 关注BPDU的目的是为了随时启用备用端口。
3.侦听状态:
不会转发数据帧,也不会学习MAC地址表,会接受并发送BPDU报文。会维持15s,在维持15s的过程中,会通过BPDU确定出根桥,确定端口角色。确定端口角色后,非指定端口角色的状态,就会回到阻塞状态。
其他端口,就会直接进入到下一个状态,学习状态。
4.学习状态
不会转发数据帧,会学习MAC地址表,接收并发送BPDU。这个过程会维持15s。15s之后,根端口和指定端口就会进入到转发状态。
5.转发状态
正常转发数据帧,学习MAC地址表,接受并发送BPDU。最终,根端口和指定端口就会停留在转发状态。
BPDU:即桥协议数据单元,是交换机专门针对生成树协议的数据包。
七、三种配置实验
1.边缘端口的配置
目的:为了减少接口收敛时间,建议将接PC的接口都配置为边缘端口。
配置命令:
interface e0/0/3 :进入对应端口
stp edged-port enable :开启边缘端口
2.STP根保护功能
开启后,如果检测到有设备抢占自身的根桥,则会断开对应接口。
interface e0/0/3 :进入对应端口
stp root-protection :开启根保护功能
3.STP BPDU防护
STP根保护不能限制用户接交换机,所以我们通常采用STP BPDU防护。
该防护可以检测到用户接入的是交换机还是PC,如果检测到接入的是交换机,则会断开相应端口。
(注:需要先配置边缘端口。)
error-down auto-recovery cause bpdu-protection interval 30:自动恢复机制,每30秒检测一次,若检测到接入的是PC,则会恢复通讯。