STP生成树协议
Spaning tree protocol
二层环路的背景
①交换网络需要部署冗余链路
②交换机的工作行为
环路带来的问题
①环路会引起广播风暴。
②网络中的主机会收到重复数据帧
③MAC地址漂移
STP的三个版本
版本 | 标准 |
---|---|
STP | 基于802.1D标准 |
RSTP快速生成树 | 基于802.1w标准 |
MSTP多实例生成树 | 基于802.1s标准 |
一、STP计算过程
基本概念
根桥(root):一个交换网络中只有也根桥设备,整个交换网络的数据转发中心
- 根据根桥ID选举根桥()
- 根桥ID:优先级+MAC地址
根端口(RP):每个非根交换机有且仅有一个,用以接收最优BPDU、转发数据
指定端口(DP):每条链路有且仅有一个,用以发送最优BPDU、转发数据
阻塞端口(AP):出去RP、DP端口剩下的即为AP
过程
1.选举一个根桥
- 启动STP后,每台设备都以为自己是根桥设备,向外发送BPDU,携带选举参数:根桥ID
- 每台设备收到其他设备的BPDU后,对比根桥ID。
- 若其他设备根桥ID优于自身根桥ID,则转发其他设备的BPDU
- 若其他设备根桥ID差于自身根桥ID,则丢弃 其他设备的BPDU
比较规则:
- 比较根桥ID先比较优先级,优先级默认为32768(范围 0-65536 必为4096的倍数),数值越小优先
- 若优先级相同,则比较MAC地址大小,同样数值越小越好
2.每个非根交换机选举一个根端口(RP)
RP接口是非根交换机去往根桥最近的接口,每台非根交换机有且仅有一个
比较规则:
- 比较端口的根路径开销,根路径开销小的选为RP
- 根路径开销(RPC):去往root的所有路径的开销之和。由链路带宽决定
- 根路径开销一致时。比较发送者桥ID,越小越优
- 发送者桥ID:桥优先级+MAC
- 发送者桥ID一致时,比较发送者端口ID,端口优先级数据越小越优
- 发送者端口ID:端口优先级(0~240,默认为128)+接口编号
3.每条链路选举一个指定端口(DP)
每段链路上最优的接口,每段链路上有且只有一个
比较规则:
- 与选举RP规则一致
4.阻塞非根、非指定端口(阻塞端口AP)
剩下就是AP端口了
快速判断端口角色
- 根桥交换机上的所有接口都是DP
- 非根桥交换机与根桥交换机相连的接口为RP
二、端口状态
disabled:接口未使用stp
blocking:阻塞状态,AP端口的最终状态
listening:监听状态,进行端口角色选举,确定自己的端口角色
------------不转发用户流量,不学习MAC地址---------在华为模拟器eNSP中将上述三种状态都归为discarding
learning:学习状态,
-----------不转发用户流量,学习MAC地址表
forwarding:转发状态,DP/RP端口的最终状态
----------转发用户流量,学习MAC地址表
转变过程:
disable–blocking–listening-(15s)----learing-(15s)-----forwarding
启用STP到正常转发数据至少需要30s
问题:为什么需要30s?
答:STP基于定时器收敛,两次的15s转发延时是为了防止其他设备的端口还未有相应的端口角色,因为STP端口角色选举完成后并不会发送报文,设备间无法得知对方的端口角色是否选举完成,所以设置一个15s的转发延时,保证所有设备都可以收敛完成
三、BPDU
桥协议数据单元
1.类型:配置BPDU/TCN BPDU
2.作用:用于STP选举,维护STP拓扑
内容:
a.BPDU的类型字段
b.flag:TC位+TCA位
c.选举四要素:根桥ID+RFC+发送者桥ID+发送者端口ID
d.计时器:
消息类型 | 解释 |
---|---|
Message age | 信息延时,规定网络的直径。消息时间每经过一台交换机加1 |
Max age | 老化时间,默认20 |
Hello time | BPDU发送间隔,默认2s |
forward delay | 转发延时 |
DP接口负责向外发送本设备最优的BPDU,AP/RP接口负责缓存,维持端口角色
当AP/DP端口在Max age内未收到对应的BPDU时,会丢弃端口缓存的BPDU
四、STP拓扑变化
判断网络拓扑变化
-
根桥故障
- 直接感受根桥失效,则重新进行生成树选举,等待转发延时30s
- 无法直接感受根桥失效(在根桥交换机和非根交换机上加上hub集线器),需要等待BPDU老化后(20s),再进行STP选举,并等待转发延时30s,共50s延时
-
直连故障
- 物理端口down,新的端口角色选举成功后,等待30s转发延时
-
非直连故障
- SWB与根桥SWA的接口down
- SWB会误以为自身为根桥向外发送BPDU(次优BPDU),SWC的AP接口不予以回应,需要等待20s的老化时间,AP端口转化为DP端口,向外发送最优BPDU,等待30转发延时 ,共50s延时
拓扑变化过程
TCN BPDU:由拓扑发生变化的交换机产生,通知上游、根桥交换机网络拓扑发生变化。
- 只有DP端口会处理
TCA BPDU:响应TCN BPDU报文,通知下游交换机停止发送TCN BPDU
TC BPDU:只能由根桥交换机发出,所有交换机收到TC BPDU 后,会刷新MAC地址表
过程
1.由发生拓扑变化的交换机向上游交换机发生TCN BPDU,上游交换机收到TCN BPDU后会回复TCA BPDU,然后朝着根桥交换机最近的方向转发该TCN BPDU。逐跳重复,直到到达根桥
2.根桥交换机收到TCN BPDU后,回复TCA BPDU,并泛洪TC+ROOT BPDU,泛洪时间为35s
- 发送17或者18个TC+ROOT BPDU
3.非根交换机收到TC+ROOT BPDU后,将本地MAC地址表的老化时间缩短至15s
- 若超过2s未收到TC+ROOT BPDU,老化时间恢复为300s