交换机是如何通过STP选举出根桥、根端口、指定端口,进而确定阻塞的端口?
配置BPDU格式
PID | PVI | BPDU Type | Flag | Root ID | RPC | Bridge ID | Port ID | Message Age | Max Age | Hello Time | Forward Delay |
初始状态
每个桥(交换机)都认为自己是根桥,周期性地(Hello Time,缺省为2s)主动产生并向外发送配置BPDU:
Root ID=自己的BID | RPC=累计到根桥的开销 | Bridge ID=自身BID | Port ID=发送该BPDU端口的端口ID |
根桥的选举
配置BPDU中RID最小的为根桥,其余为非根桥。
最优配置BPDU的对比规则
-
RID最小的最优
-
RPC最小的最优
-
BID最小的最优
-
PID最小的最优
最优配置BPDU的选择过程
-
每个端口将收到的配置BPDU与自己的配置BPDU进行比较:
-
如果收到的配置BPDU优先级较低,则将其直接丢弃,对自己的配置BPDU不进行任何处理
-
如果收到的配置BPDU优先级高,则用该配置BPDU的内容将自己配置BPDU的内容替换掉
-
如果收到的配置BPDU和自己的一样,则将其直接丢弃
-
设备将所有端口的配置BPDU进行比较,选出最优的配置BPDU
-
根端口的选择过程
非根桥设备将接收的最优配置BPDU且路径开销最小的那个端口定为根端口:RID小的为根端口;若RID相同比较RPC,RPC小的为根端口。比较RPC时非根桥要做累计开销和的计算
指定端口的选择过程
-
设备根据根端口的配置BPDU和根端口的路径开销,为每个端口计算一个指定端口配置BPDU
-
根桥ID替换为根端口的配置BPDU的根桥ID
-
根路径开销替换为根端口配置BPDU的根路径开销加上根端口对应的路径开销
-
发送者BID替换为自身设备的ID
-
发送者端口PID替换为自身端口ID
-
-
设备将计算出的配置BPDU与角色待定端口自己的配置BPDU进行比较
-
如果计算出的配置BPDU更优,则该端口被确定为指定端口,其配置BPDU也被计算出的配置BPDU替换,并周期性地向外发送
-
如果该端口自己原本的配置BPDU更优,则不更新该端口的配置BPDU并将该端口阻塞。该端口将不再转发数据且只接收不发送配置BPDU
-
SW3收到SW2发过来的BPDU后,自身拥有的两份BPDU的RID值一样,根端口出现争议,为进一步确认根端口,SW3会计算接口到根的路径开销:
1.SW3通过1口经SW2到达根桥的路径开销为2000+2000=4000
2.SW3通过2口到达根桥的路径开销为2000
因此,确定SW3的2口为RP,然后用2口接收到的配置BPDU为1口计算出新的配置BPDU
SW3根据2口为1口计算出的配置BPDU没有1口本身的配置BPDU的优先级高,将该端口阻塞。
注意事项
- 根端口接收配置BPDU,不修改只保存使用,对端指定端口发送什么就是什么
- 非根桥上指定端口的配置BPDU都是依据根端口接收的配置BPDU通过计算产生的
- 根端口选举时,若RPC相同需交换机计算自身端口到达根桥的路径开销,而不是直接根据收到配置BPDU的RPC进行比较