STP生成树协议
一、 为什么要使用STP?
网桥在连接各个设备时易形成环路,二层环路最大的危害就是广播风暴。每个网桥在接收到广播报文时,都会向除接收端口以外的其它端口发送广播包。网桥并不能识别广播包是否是自己发出的,一旦环境中存在环路会产生以下几种问题:
1. 形成广播风暴: 数据报在环路在不断的被广播转发形成广播风暴。
2. 多重复帧复制: 交换机在接受到不确定单播帧时,将执行泛洪操作,这意味着,在环路中一个单播帧在传输中被复制为多个复本。
3. MAC地址表不稳定: 如果交换机在不同的端口收到同一个帧,它的MAC数据库将会变得不稳定。
STP生成树协议是一个基于802.1D中定义的一个应用于网桥的协议,这个协议定义了一组规则来探知拓扑中是否存在环路,如果有,FTP就会在环路中选择一个合适的位置来阻断端口,从而消除回路中的广播风暴。
二、 STP原理
选举步骤:
1.选择根网桥
选择根网桥的依据是网桥ID,由优先级和MAC地址组成,先看优先级,优先级相同时再看MAC地址,值越小越优先选择。选择网络中桥ID最小的作为根桥ID,每个桥一开始都把自己当作根桥,然后通过BPDU(网桥协议数据单元)和邻居交换拓扑信息,如果自己的桥ID还是小,继续作为根桥,如果大,把邻居当作自己的根桥。直至所有网桥的根桥ID一致。
2.选择根端口
每一个非根网桥将从其接口选出一个到根网桥路径花销最低的接口作为根端口,选择的依据是
(1)自身到达根网桥的根路径成本最低的接口。
根路径成本的计算是,接口收到BPDU中所包含的成本与接口的成本的累加。
(2)最低发送者的桥ID
(3)发送者端口ID最小
3.选择指定端口
在每一个网段中选择一个指定端口用来接收和转发报文,指定端口的选择依据:
(1)发送最低根路径成本的BPDU的接口
(2)最低发送者的桥ID
(3)发送者端口ID最小
4、阻塞非指定端口
除了根端口和指定端口,其余的即为非指定端口,将这些端口阻塞
1、 BPDU报文格式
配置BPDU报文
Protocol Identifier 协议标识字段 |
默认值0x0000 |
TCN BPDU 只有这三个字段。 |
协议版本 |
0x00 | |
BPDU Type |
配置BPDU:0x00 TCN BPDU : 0x80 | |
Flags |
TCA置1:拓扑变化确认 TC置1:拓扑变化通知 | |
Root id 根桥ID |
8个字节:2个字节优先级+6个字节mac | |
Root Path cost |
到根桥的路径花销,会进行累加,每一个端口在收到BPDU报文后,累加上自己的端口花销后转发出去 |
用于在端口选举时进行优先级比较 |
桥ID |
2字节优先级(默认32768)+6字节mac | |
端口ID |
1字节优先级(默认0x80)+1端口号 | |
Message Age |
衡量当前网桥收到的BPDU报文在网络中的传播时间,根桥发送的BPDU报文这个字段值设为0 |
从根桥发送到当前桥接收到BPDU的总时间,端口在接收到BPDU报文时会将自己处理的处理时间加到这个字段上再转发给下游网桥,下游网桥会根据接收到的BPDU报文的这个字段的值更新自己的Message Age。 若没有接收到新的BPDU报文,每隔1s message age加1. |
Max age |
配合Message age,当message age超过max age时,网桥认为拓扑发生了变化,向根桥发送TCN报文。 | |
Hello time |
默认2s,根桥会每隔2s向下游网桥发送BPDU报文。 | |
Forward delay |
默认15s,端口状态 listening向learning Learning向forwarding状态变化所要经过的时间 |
2、 端口状态
Data |
学习mac |
参与生成树 |
接收BPDU |
发送BPDU | |
Disable |
× |
× |
× |
× |
× |
Blocking |
× |
× |
× |
× |
× |
Listening |
× |
× |
√ |
√ |
√ |
Learning |
√ |
√ |
√ |
√ |
√ |
Forwarding |
√ |
√ |
√ |
√ |
√ |
2.1 为什么listening状态不学习mac?
此时拓扑还没有收敛完成,各个端口的状态还不稳定,假如学习了mac后,一个端口由forwarding变为blocking状态,该端口无法发送数据包将会导致数据包的丢失。
2.2为什么要经过一个Learning的过程?
减少因未知的单播导致产生的广播在网络内消耗额外的带宽。
3、 端口状态迁移
(1)被选举为根端口或指定端口(在拓扑收敛过程或者根端口和指定端口发生故障时被选举)。
(2)端口选举失败成为阻塞端口。
(3)经过一个Forward Delay的时间。
(4)端口down
(5)端口Up
4、实验
4.1
SW1 : 4c1f.cc69.08b7
SW2:4c1f.cc73.50e3
SW3(根桥):4c1f.cc5a.6c80
SW4: 4c1f.ccbd.1e40
4.2
1、加一个LSW9的交换机与SW1和SW3连线
拓扑收敛完成后,mac表被清空。
2、将LSW9的根桥优先级改为0。
LSW9将被选举为根桥,在拓扑收敛完成之前,SW1和SW3的mac表无变化。收敛完成后,mac表被清空。
3、去掉LSW9
重新计算拓扑,收敛完成后,所有交换机清空mac表。
结论:
拓扑发生变化时,在收敛完成之前,交换机的mac表不会被清空。
收敛完成后,整个拓扑的交换机都会清空mac表。
下一篇 RSTP https://blog.youkuaiyun.com/weixin_40748006/article/details/80182011