【华三】STP的角色选举
- 一、引言
- 二、STP基础概念扫盲
- 三、根桥选举过程详解
- 四、根端口选举过程详解
- 五、指定端口选举过程详解
- 六、阻塞端口
- 七、总结与配置建议
- 七、附录
- **1. BPDU字段结构图(文字描述)**
- **2. 华三STP常用命令速查表**
- 文章总结
一、引言
在复杂的交换网络中,冗余链路是保障高可用性的基础,但同时也可能引发广播风暴和MAC地址表震荡等致命问题。STP(生成树协议,Spanning Tree Protocol)如同一位“网络交通指挥官”,通过逻辑阻塞冗余链路,构建无环拓扑,在确保冗余的同时规避环路风险。
STP的核心价值:
- 破除环路:通过阻塞冗余端口,将物理上的环形网络转化为逻辑上的树形结构。
- 动态恢复:当主链路故障时,自动激活备份链路,恢复网络连通性(需结合转发延迟机制)。
- 资源优化:选择最优路径转发数据,避免无效带宽消耗。
角色选举为何重要?
如果把网络比作一座城市,根桥就是城市的中心车站,所有流量最终都要汇聚或经过这里。若多个“中心车站”同时存在(即根桥未唯一),必然导致路径混乱。角色选举的本质是让全网设备达成共识:
- 唯一根桥:作为数据转发的参考基准点。
- 最优路径:通过根端口和指定端口的选举,确保每条链路选择最高效的传输路径。
华三设备中的STP特点(个人理解)
- 默认协议版本:华三交换机默认启用MSTP(多生成树协议),而非传统的STP/RSTP,这是为了支持VLAN级别的负载分担(需注意与Cisco设备的兼容性)。
- 配置差异:
- 优先级调整命令:
stp priority <value>
(必须为4096的倍数,例如0、4096、8192)。 - 路径开销计算:华三默认使用长整型开销值(如千兆链路为20000),与Cisco的短整型(如千兆链路为4)不同,混合组网时需特别注意。
- 优先级调整命令:
- 快速收敛优化:华三支持边缘端口(
stp edged-port enable
),可跳过Listening/Learning状态,加速终端接入。
二、STP基础概念扫盲
-
根桥(Root Bridge)
- 定义:生成树的逻辑中心,所有数据的转发基准点。
- 类比:类似“交通枢纽”,所有路径最终指向它。
- 关键字段:BID(桥ID)= 桥优先级(16位) + MAC地址(48位)。
-
根端口(Root Port)
- 定义:非根桥设备上离根桥最近的端口(路径开销最小)。
- 作用:用来接收最优配置BPDU。
- 每个非根桥有且仅有一个根端口。
-
指定端口(Designated Port)
- 定义:每条线路中唯一负责转发数据的端口。
- 作用:用来发送最优配置BPDU
- 避免同一网段内多个端口转发数据形成环路。
-
配置BPDU(Bridge Protocol Data Unit)
- 作用:STP协议报文,用于传递拓扑信息。
- 核心字段:
- 根ID(Root ID):当前最优根桥的BID。
- 路径开销(Cost):到根桥的累计开销。
- 发送者BID(Sender BID):发送该BPDU的桥的BID。
- 端口ID(Port ID):发送端口的标识。
-
BID(桥ID)= 桥优先级(16位) + MAC地址(48位)
- 桥优先级默认为32768,范围0~61440,可以修改,但要以4096为倍数
- 桥ID 中的优先级长度为 16个 bit,只有前4个 bit 是描述优先级的,后12个bt 实际用于描述 STP 的所属VLAN。也就是说当我们需要调整优先级,也只能调整优先级的前4个 bit,后12个 bit 无法变更。所以每递增一位数,在十进制中会以 4096 起跳。
-
端口ID(Port ID)= 端口优先级(8位)+ 端口号
- 端口优先级默认128,范围0~240,可以修改,但要以16为倍数
三、根桥选举过程详解
-
选举规则
- BID越小越优,优先级比较顺序:
- 桥优先级(0~65535,默认32768)。
- MAC地址(数值小者胜出)。
- BID越小越优,优先级比较顺序:
-
初始化阶段
- 所有交换机默认认为自己是根桥,发送BPDU时:
- 根ID = 自己的BID,路径开销 = 0。
- 交互过程:
- 收到其他BPDU后,对比根ID,保留更优的(BID更小)。
- 更新本地最优BPDU,并向外转发。
- 所有交换机默认认为自己是根桥,发送BPDU时:
-
示例场景
根桥选举是根据BID的,越小越优
细化下去就是
① 先看桥优先级,桥优先级越小越优;
② 再看桥MAC地址,也是越小越优
可以从图中看出:SWA的桥ID优先级为0,SWB的桥优先级为8192,SWC的桥优先级为32768,SWD的桥优先级为4096;
所以选择SWA为根桥
四、根端口选举过程详解
- 选举规则
- 非根桥设备选择到根桥路径开销最小的端口。(按顺序选举)
- 若路径开销相同,依次比较:
- 发送者的BID,越小越优
- 发送者端口ID,越小越优(优先级+编号)。
- 本端的端口ID,越小越优
- 需要注意,该根端口的发送者BID为对端设备BID
-
路径开销计算
- 累计链路开销 = 接收端口的路径开销 + 接收到的BPDU中的路径开销。
- 同一交换机上不同端口之间的路径开销值为0
- 链路速率与默认开销值对照表(示例):
链路速率 开销值 10 Mbps 100 100 Mbps 19 1 Gbps 4
-
示例场景
以SWB的选举根端口为例子:
每个端口离根桥的累计链路开销(根路径开销)
e0/1:200
e0/2:20+200 = 220
e0/3:200+200+200 = 600
所以SWB中e0/1的根路径开销最小,所以e0/1为SWB的根端口
同理可得,SWC的根端口为e0/1
此时,SWD各个端口距离根桥的开销是一致的,都是200+200 = 400
所以得要去比较发送方的BID:
SWD的E0/1发送方BID为SWB的BID :8192.MAC B
SWD的E0/2发送方BID为SWC的BID :32768.MAC C
所以,可以得出,SWD的根端口为E0/1
五、指定端口选举过程详解
- 选举规则
每个线路选举一个指定端口
- 非根桥设备选择到根桥路径开销最小的端口。(按顺序选举)
- 若路径开销相同,依次比较:
- 发送者的BID,越小越优
- 发送者端口ID更小(优先级+编号)。
- 本端的端口ID,越小越优
- 若路径开销相同,依次比较:
- 需要注意,该指定端口的发送者BID为本地设备BID,因为自身已经选举出的根端口,而根端口就是用来接收到的最优配置BPDU,指定端口用来转发最优配置BPDU;自身根端口收到最优配置BPDU,然后再发送给指定端口转发出去,所以发送方就为自身!!! 这个和根端口的搞明白就稳了
-
特殊说明
- 根桥的所有端口默认是指定端口,除了自环情况外。
- 在线路中,根桥的端口直接成为指定端口。
-
示例场景
根桥的所有端口默认是指定端口,除了自环情况外,所以SWA的E0/1和E0/2就是指定端口,
SWB — SWD中SWD的E0/1为根端口,所以SWB的E0/3为指定端口
剩下就要去比较SWB — SWC,SWC — SWD这两个线路
SWB — SWC :
SWB的E0/2距离根桥的根路径开销为200
SWC的E0/2距离根桥的根路径开销为200
所以,跟路径开销是相同的,继续向下比发送方的BID(Sender Bridge ID = SBID)
又因为指定端口的发送方是为本身,所以
SWB的E0/2的发送方BID为 :8192.MAC B
SWC的E0/2的发送方BID为 :32768.MAC B
可以得出SWB的E0/2的SBID更小,所以SWB的E0/2为指定端口
SWC — SWD:
这条线路就简单了,直接比较根路径开销,可以得出
SWD的E0/2根路径开销为:200 + 200 = 400
SWC的E0/3根路径开销为:200
所以,SWC的E0/3为指定端口
六、阻塞端口
选出根桥、根端口、指定端口后,剩下的端口就是阻塞端口
七、总结与配置建议
-
角色选举流程总结
- 根桥 → 根端口 → 指定端口,依次完成。
- 所有非根桥必须有一个根端口,每个网段必须有一个指定端口。
-
华三设备配置注意点
- 修改桥优先级:
stp priority <0-61440>
(必须为4096的倍数)。 - 查看选举结果:
display stp brief
。 - 路径开销调整:
stp cost <value>
(需根据链路速率设置)。
- 修改桥优先级:
-
常见问题
- 根桥选举失败:检查BID是否冲突或优先级配置错误。
- 端口阻塞异常:检查路径开销计算是否合理。
七、附录
1. BPDU字段结构图(文字描述)
配置BPDU是STP协议的核心报文,其结构可分解为以下关键字段:
字段名 | 长度 | 说明 |
---|---|---|
协议标识符 | 2字节 | 固定为0x0000(表示STP协议) |
协议版本 | 1字节 | STP为0x00,RSTP为0x02,MSTP为0x03 |
BPDU类型 | 1字节 | 配置BPDU为0x00,TCN BPDU(拓扑变更通知)为0x80 |
Flags | 1字节 | 包含TC(拓扑变更)和TCA(拓扑变更确认)标志位 |
根ID | 8字节 | 全网核心字段!当前最优根桥的BID(优先级+MAC) |
路径开销 | 4字节 | 发送端口到根桥的累计开销值(越小越优) |
发送者BID | 8字节 | 发送该BPDU的交换机的BID |
端口ID | 2字节 | 发送端口的ID(高8位为优先级,低8位为端口编号,如0x8003表示优先级128,编号3) |
消息生存时间 | 2字节 | BPDU的有效时间(默认为20秒) |
个人解读:
- 根ID字段是BPDU的“灵魂”:所有交换机通过对比根ID确定是否更新自己的认知,最终全网统一为最小BID。
- 路径开销的“陷阱”:不同厂商的默认开销值可能不同(如华三与Cisco),混合组网时需手动统一,否则可能导致次优路径选择。
2. 华三STP常用命令速查表
命令 | 作用 | 示例 | 备注 |
---|---|---|---|
stp global enable | 全局启用STP协议 | - | 默认已启用,部分型号需手动开启 |
stp mode stp/rstp/mstp | 切换STP模式 | stp mode rstp | 需所有设备模式一致 |
stp priority <value> | 修改桥优先级(需为4096的倍数) | stp priority 0 | 值越小优先级越高,0为最高 |
stp root primary/secondary | 快速指定本机为根桥/备份根桥 | stp root primary | 自动设置优先级为0/4096 |
stp cost <value> | 手动设置端口路径开销 | stp cost 20000 | 需根据链路速率调整(华三千兆口默认20000) |
stp port priority <value> | 修改端口优先级(0-240,步长16) | stp port priority 64 | 影响指定端口选举 |
display stp | 查看STP全局状态 | display stp | 关注根桥、根端口、指定端口信息 |
display stp brief | 简要查看端口角色和状态 | display stp brief | 快速确认端口是否阻塞(BLK) |
display stp interface GigabitEthernet1/0/1 | 查看指定端口的STP详细信息 | - | 分析BPDU收发情况 |
总结:
- 优先级设置的“偷懒技巧”:直接使用
stp root primary
命令,避免手动计算优先级值。 - 故障排查三板斧:
display stp brief
:确认端口角色是否异常。display stp interface
:检查BPDU收发是否正常。- 对比相邻设备的根桥信息:确认全网认知一致。
- 路径开销调整的“潜规则”:若希望流量走高速链路(如万兆),可手动降低该端口的开销值(如设置为2000)。
文章总结
STP的角色选举本质是一场“网络民主投票”——每个设备基于BPDU信息,通过既定的规则(BID、路径开销、端口优先级)达成共识。理解选举逻辑后,结合华三设备的特性,通过合理配置优先级和路径开销,可以主动引导流量走向,构建高效稳定的无环网络。