STP介绍
STP(Spanning Tree Protocol)生成树协议:工作在局域网的数据链路层,用于防止交换机冗余链路产生的物理环路问题(广播风暴、MAC地址翻摆、多帧复制等),同时能通过链路备份,在链路故障时自动切换及时恢复网络;
STP角色
- 根桥:整个生成树的根节点,优先级最高;
- 指定桥:负责一个物理段上数据转发任务的网桥;
- 根端口(RP):一个网桥上距离根桥最近的端口(根桥无根端口,非根桥有且仅有一个根端口);
- 指定端口(DP):指定桥上的端口(根桥的端口皆为指定端口);
- 替换端口(AP):根端口和指定端口做备份的端口(平时阻塞);
STP工作过程
一、角色确定
- 确定根桥:每个交换机起动STP服务,都会向外发送自己为根桥的BPDU报文,通过收到的BPDU比较桥ID(16位的桥优先级+48位的MAC地址),其中桥优先级默认为32768(可修改范围:0-65535)。如果比较收到的BPDU发现自己不是根桥,则不发送BPDU,直到所有交换机达成一致,认定唯一一个交换机为根桥;
(优先级越小越优先 > MAC地址越小越优先) - 确定根端口:当确认自己不是根桥后便开始确定端口角色。当交换机多个端口同时接受到根桥的BPDU报文,会根据根路径开销即RPC(Root Path Cost)与接收端口的链路开销之和,最小的为根端口;
(根路径开销+链路开销越小越优先 > 发送BPDU的指定桥桥ID越小越优先 > 发送端口的端口ID越小越优先) - 确定指定端口:确定根端口时选择最优,则次优的为指定端口;
- 阻塞替换端口:确定指定端口后,剩余的为替换端口且进行阻塞;
二、拓扑变化
- 当拓扑发生变化(端口断开或新的网桥加入等),会通过TCN BPDU报文进行快速收敛;
- 变化处通过根端口向上传递TCN BPDU(TCA置1)报文,根桥从指定端口向下传递TCN BPDU(TCA置1)报文,一层层确定,各网桥收到TCA为1的BPDU报文后,将MAC地址老化时间缩短为15s;
STP状态
端口状态 | 说明 |
---|---|
Disabled(禁用状态) | 端口不转发数据帧,不学习MAC地址,不参与生成树计算 |
Blocking(阻塞状态) | 端口不转发数据帧,不学习MAC地址,接收并处理BPDU,不向外发送BPDU |
Listening(侦听状态) | 端口不转发数据帧,不学习MAC地址,只参与生成树计算,接收并发送BPDU |
Learning(学习状态) | 端口不转发数据帧,学习MAC地址,参与生成树计算,接收并发送BPDU |
Forwarding(转发状态) | 端口正常转发数据帧,学习MAC地址,参与生成树计算,接收并发送BPDU |
- Listening:路由器开启时,所有端口处于该状态,并认为自己是根桥,每2s向外发送一次BPDU报文,如果收到桥ID更小的BPDU,则停止发送,直到扩撒完毕;
- Bolcking:端口角色选举结束后,AP端口为此状态,持续15s(转发延迟),进入Learning状态;
- Learning:学习MAC地址,经过15s(转发延迟)后进入Forwarding状态;
- Forwarding:开始转发数据,接收并转发来自根桥的BPDU报文,维护拓扑(只有根桥发送BPDU,其他只进行转发);
(当加入新的网桥时:端口状态为Learning状态,竞选根桥,竞选成功网络断开,失败则经过30s进行端口角色的计算)
STP的缺陷
- 拓扑收敛慢,每个端口的计算需要经过至少30s才能进入Forwarding状态进行数据转发;
- 网络拓扑较大时,频繁的拓扑变化会导致TCN BPDU报文频繁发送,以至于MAC地址老化时间长期处于15s的时间;
- 不能提供负载均衡,AP端口处于Blocking状态,不能参与转发,浪费资源;