1. 产生背景
- 冗余和备份的组网会产生环路。
- 非冗余和备份的组网会导致单点故障。
- STP:
既能破除环路,又能解决单点故障。
STP协议的诞生:生成树协议。
2. 作用
- 消除环路:通过阻断冗余链路来消除网络中可能存在的环路。
- 链路备份:当活动路径发生故障时,激活备份链路,及时恢复网络联通。
- STP开启命令:stp enable
- STP关闭命令:stp disable
- STP技术当中涉及到的BPDU报文
- STP的正常工作依赖于BPDU报文的泛洪(Bridge Protocol Data Unit,网桥协议数据单元),是一个组播报文。
- BID中报文的优先级默认是32768,即2的15次方。BID中包含优先级和MAC。
- STP使用命令
- 配置stp优先级:stp priority 0-61440] #默认是32768,步长是4096,即只能配置4096的倍数。
- 查看stp简要信息:display stp brief。
- 指定生成树协议类型(STP/RSTP/MSTP):stp mode stp/rstp/mstp #默认是MSTP。
- STP:收敛比较慢。
- RSTP:收敛比STP快。
- MSTP:在RSTP的基础上,增加了一些功能。
- 指定交换机为根桥:stp root primary #这台交换机的优先级为0
- 指定交换机为次根桥:stp root secondary #这台交换机的优先级为4096
- 启用生成树:stp enable
3. BPDU报文格式
- 报文说明
域 | 字节 | 说明 |
Protocol Identifier | 2 | 总是0 |
Protocol Version Identifier | 1 | 总是0 |
BPDU Type | 1 | 当前BPDU类型:
|
Flags | 1 | 网络拓扑变化标志:
|
Root Identifier | 8 | 当前根桥的BID。 |
Root Path Cost | 4 | 本端口累计到根桥的开销。 |
Bridge Identifier | 8 | 本交换设备的BID。 |
Port Identifier | 2 | 发送该BPDU的端口ID。 |
Message Age | 2 | 该BPDU的消息年龄。 如果配置BPDU是根桥发出的,则Message Age为0。否则,Message Age是从根桥发送到当前桥接收到BPDU的总时间,包括传输延时等。实际实现中,配置BPDU报文经过一个桥,Message Age增加1。 |
Max Age | 2 | 消息老化年龄。 |
Hello Time | 2 | 发送两个相邻BPDU的时间间隔。 |
Forword Delay | 2 | 控制Listening和Learning状态的持续时间。 |
2. BPDU的重要参数
字段 | 描述 |
根的BID | 根交换机的BID |
到根的路径开销 | 设备到底root交换机的开销(入口开销之和) |
发送设备的BID | 发生设备的BID |
发送设备的PID | 发送设备的PID |
Bridge ID
桥ID(Bridge ID)是交换机的STP标示符,一共8个字节。由2个字节的优先级和6个字节的MAC地址构成。
2字节 6字节 |
- 桥优先级缺省为32768,可以手工修改。
- MAC地址为交换机的背板MAC。
- 网络中Bridge ID最小的交换机将成为根桥。
- 配置优先级的时候,优先级只能配置为4096的倍数(只能配置为0、4096、8192、12288等)
- 现网中优先级都是一样,会比较设备的MAC地址,越小越优先。
- stp root primary #这条命令等同于stp priority 0,作用是把该设备设置为根桥(ROOT)。
- stp root secondary #这条命令等同于 stp priority 4096,作用是把该设备设置为备根桥(ROOT)。
- 路径开销
- 路径开销与端口的带宽成反比。
- 华为设备支持的路由开销计算标准:802.1d-1998、802.1t及legacy,其中legacy是华为私有标准,华为交换机默认选择802.1t标准。
带宽 | 802.1t | 802.1d |
10Mbps | 2000000 | 100 |
100Mbps | 200000 | 19 |
1000Mbps | 20000 | 4 |
10000Mbps | 2000 | 2 |
根桥发送出来的BPDU中,cost = 0,STP认为从根发送数据是没有开销的。
端口ID
端口ID(2字节)= 端口优先级(1字节)+端口编号(1字节)
PORT ID
优先级 | 端口编号 |
缺省优先级是128,范围是0~255,越小越优先。
在接口下执行该命令:stp port priority 128 #接口优先级是16的倍数。
4. STP选举过程
- 每个交换网络选举一个根桥(Root Bridge)
根据每台设备的优先级和MAC地址进行比较,越小越优先。
2. 每个非根桥上选举一个根端口(Root Port)
RP端口是到达ROOT设备最优路径的一个端口。RP端口是非根设备上有且仅有一个,是根设备到达非根设备的最优路径。在每条链路上选择指定端口DP。
3. 每个链路选举一个指定端口(Designated Port)
DP端口是用来发送BPDU报文的。
4. 阻塞非指定端口(Non Designated Port)
在STP里面对应的是AP端口(阻塞端口)。
RPC :Root Path Cost
STP中的开销是入向开销之和,而OSPF是出接口开销之和。开销是由根到非根设备等开销之和。
网络稳定后,只有根设备有权限发送BPDU。
5. 根桥的选举
每个交换网络选举一个根交换机(Root Bridge),网络中Bridge ID最小的交换机被选举为根桥,也就是设备的优先级,越小越优先。在一个交换网络里面,只有一个ROOT设备,另外设备是非ROOT设备。
6. 只有ROOT交换机才能发送BPDU,非根交换机会进行转发BPDU。
1. 每一台交换机启动STP后,都认为自己是根桥。
2. 所有的端口都是DP(指定端口)。
3. 相互发送BPDU后,会比较优先级和MAC地址。
4. 优先级越小越优先,MAC地址越小越优先。
7. 根端口的选举
1. RP端口在非根交换机上选举。
2. 非根交换机上有且只有一个RP端口。
3. RP端口是到达ROOT交换机的最优路径。
选举规则:
1. 该端口到达ROOT交换机的开销(入口开销之和)推荐这种方式选举RP端口。
2. 发送设备的BID。
3. 对端设备的PID。
4. 比较自身的PID。
8. 指定端口的选举
1. 每个网段选举一个指定端口(Designated Port)。
2. ROOT交换机的端口几乎都为DP端口。
3. DP端口的作用是用来发送BPDU。
选举规则:
1. 该端口到达ROOT交换机的开销(入口开销之和)(一般不建议修改这一条)。
2. 发送设备的BID(一般不建议修改这一条)。
3. 对端设备的PID。
4. 自身的PID。
9. 阻塞AP端口的选举
1.
网络收敛后
1. 只有指定端口和根端口可以转发数据。
2. 其他端口为预备端口,被阻塞,不能转发数据,不能发送BPDU,但可以接收BPDU,只能从所连网段的指定交换机接收到BPDU报文,并以此来监视链路的状态。
注意:AP端口是一个逻辑的阻塞端口。这个端口可以接收BPDU报文,但是不能发送BPDU报文,也不能转发用户流量。
10. 总结
端口角色 | 描述 |
Root Port端口 | 所在交换机上离根最近的端口,处于转发状态。 |
Designated Port指定端口 | 向非根交换机转发配置BPDU的端口,处于转发状态。 |
Alternate Port 预备端口 | 预不向所连网段转发任何数据,处于阻塞状态。 STP中对应Block,RSTP中对应Discarding。 |
11. STP的状态迁移过程
1. 端口初始化或者使能。
2. 端口被选为根端口或指定端口。
3. 端口不再是根端口或指定端口。
4. Forward Delay计时器超时。
5. 端口禁用或链路失效。
Disable状态 —— Blocking状态 -—— Listening侦听状态 —— Learning 状态 —— Forwarding状态
Forwarding:转发状态。端口既可转发用户流量,又可转发BPDU报文。
Learning:学习状态。端口可根据接收到的用户流量构建MAC地址表,但不转发用户流量。增加Learning状态是为了防止临时环路。
Listening:侦听状态。端口可以转发BPDU报文,但不能转发用户流量。
12. DP接口从开始阻塞状态到转发BPDU,需要30s。
Listening到Learning状态,需要15s。
Learning到Forwarding状态,需要15s。
AP接口一直不会转发BPDU,会一直处于Blocking状态。
DP和RP接口最终都是转发状态。
13. STP当中的计时器
hello计算器:默认值2s,用来发送BPDU的时间间隔。
max age 时间:默认20s,设备在20s内没有收到BPDU,会重新进行选举。
FW DLY(转发延迟):默认值15s,用来解决临时环路。
14. 根桥故障
- 非根桥会在BPDU老化之后开始根桥的重新选举。主root宕机后会由备root设备取代,待主root设备恢复后,主root会抢占原备root设备。
15. ROOT设备故障
非ROOT设备的重新收敛,需要50s。
16. 直连链路故障
SWB检测到直连链路物理故障后,会将预备端口转换为根端口。
SWB的预备端口会在30s后恢复到转发状态。
端口角色变化是秒变。但状态变化,需要30s。
17. 非直连链路故障
非直连链路故障后,SWC的预备端口恢复到转发状态大约需要50s。
原因是原AP端口收到的BPDU比较优,当非直连链路故障的时候,AP端口收到的BPDU就不优了,因此需要等待20s。
18. 拓扑改变导致MAC地址表错误
MAC地址表项的默认老化时间是300s。在这段时间内,SWB无法将数据从G/0/0/2端口转发给主机B。
TCN:拓扑改变报文。
19. STP的缺点:
网络的收敛比较慢,需要30~50秒的收敛时间。