出现背景及问题
交换机之间多条链路互连时,虽然能提升网络可靠性,但造成链路环路,二层网络环路造成两个问题
问题一:广播风暴
从上图我们看到,要想访问其余几台设备,从网络可靠性来说,走哪条路都可以,但实际在 ping 测试网络联通性时,发现不通,我们在任意端口抓包发现。整个链路中充满了 ARP 广播报文,实际上正是由于 ARP 广播报文占据了网络链路带宽,导致了网络瘫痪。这就是所谓的广播风暴。
问题二:MAC 地址震荡(飘移)
MAC 地址飘移,这个很好理解,首先,我们知道,交换机是根据 MAC 地址表进行转发数据帧的。而MAC 地址表的生成是基于源MAC 进行学习产生的。其次,交换机在接收到一个广播报文时,会在所有的端口进行泛洪操作,也就是会将这个广播报文从从所有端口发送出去。上图中,PC2 ping PC1, PC1 的交换机发送 ARP 请求报文,其余两台都会接收到,如果PC2 接收到并返回 ARP 响应报文,那么二者之间就可以进行通信。但是,另一台 PC3的交换机发现不是自己的,在进行泛洪操作,PC2交换机收到后再次进行 MAC 地址表的学习,有时 MAC 地址会在这个端口,有时 MAC 地址在另一个端口,这会造成一个问题,你的网络时好时不好。这就是所谓的 MAC 地址飘移。
基于以上两个问题,1998年,IEEE 在新发布的 802.1D 中定义了 STP 技术。
STP 概念名称
- 桥 ID:BID(16 位优先级 + 48 位 MAC 地址)默认 32768(华为),步长 4096
- 接口ID:PID(4位优先级 + 12位接口编号)默认 128(华为),步长 16
- 指定端口:DP,每条链路选取 DP,根桥上端口都是 DP
- 根端口:RP,一个非根桥只能有一个 RP
- 阻塞端口:AP,没有被选举成根端口和指定端口的就是阻塞端口
STP 作用
交换机之间通过阻塞端口,消除环路,同时实现链路备份
STP 操作
选举规则
- 选举根桥交换机(Bridge ID),优先级 越小越优先;优先级相同,比较 MAC 地址,MAC 地址越小越优先
- 非根桥交换机选举根端口
- 每个网段(链路)选举一个指定端口
- 阻塞非根、非指定端口
根桥选举(Root Bridge RB)
在这里,我用模拟器搭建了一个环境,并将 MAC 地址写在了上边,华为设备默认 STP 模式为 MSTP
display bridge mac-address // 查看设备 MAC
stp mode stp // 将模式切换为 STP 模式
我们点开任意一台交换机,查看根桥,这里选择 LSW1 交换机查看,其中 Root/ERPC 为根桥交换机的 MAC 地址,也就是 LSW3 交换机。因为它的 MAC 地址最小
display stp // 查看 STP 信息
根端口选举
-
根端口的根路径开销(Root/ERPC)
采用 IEEE 802.1t 标准。计算从根桥交换机到目标交换机所有路径各自开销,为方便理解,我们将 LSW1 作为根桥
stp priority 0 // 设置 stp 优先级
如此, LSW1成为了根桥。
那么,如果 LSW1 到 LSW2 时,有两条路径可选,根据开销可得,每条链路到根桥开销为 20000,如果 LSW1 走 G0/0/2 端口,开销值为 20000,如果走 G0/0/1 端口,开销值为 40000,
开销值越小,对端为根接口,也就是 G0/0/2 端口
-
对端 BID 选举
如果开销相同的话,就需要根据 对端桥ID(BID) 进行根端口的选举,在这里,我新增了一个设备 LSW4 ,从根桥到 LSW4 的开销无论从左还是右,开销都是一样的,但因为 LSW3 的MAC 地址比 LSW2 小,桥ID 组成为 8 字节(64比特位),其中 16 位为优先级,48位为 MAC 地址,二者相加为 BID,跟据桥 ID 小优先,所以 LSW 4 的 G0/0/2 端口为根端口
-
对端PID 选举
如果再加一根线路,此时 桥ID 相同,那么比较对端的 PID(端口优先级 + 端口号),由于这里没有更改端口优先级,G0/0/3 端口的 PID 比 G0/0/4 端口的 PID 小,所以 LSW4 的根端口还是 G0/0/2
-
本端PID 选举
这种情况一般不多见,可以加一个集线器(Hub),这种情况下一就开始比较本端的 PID,小的当根接口
指定端口选举
上边根桥和根端口选举玩成后,在不是根桥的交换机之间又该怎么运行,就是选举指定端口作为优选链路。上述图中,假设有个设备在 LSW2 和 LSW3 之间,数据过来后因为开销相同,开始比较 桥ID(BID),LSW3 的桥 ID 比 LSW2 的桥 ID 小,所以 LSW3 的端口为指定端口,而没有被选为指定端口和根端口的 LSW2 的 G0/0/1 口就作为备被阻塞了。这样就打破了环路。
STP开销值
速率 | 接口模式 | STP开销(推荐值) | ||
IEEE 802.1d-1998标准 | IEEE 802.1t标准 | 华为计算方法 | ||
100Mbps | 半双工 | 19 | 200,000 | 200 |
全双工 | 18 | 199,999 | 199 | |
汇聚链路 | 15 | 100,000 | 180 | |
1000Mbps | 全双工 | 4 | 20,000 | 20 |
汇聚链路 | 3 | 10,000 | 18 | |
10Gbps | 全双工 | 2 | 2000 | 2 |
汇聚链路 | 1 | 1000 | 1 | |
40Gbps | 全双工 | 1 | 500 | 1 |
汇聚链路 | 1 | 250 | 1 | |
100Gbps | 全双工 | 1 | 200 | 1 |
汇聚链路 | 1 | 100 | 1 |