一、STP解决的问题

  1. 二层环路问题
    • 广播风暴:泛洪的数据帧在设备间无限循环,导致设备性能下降甚至死机。
    • MAC地址表震荡:MAC地址频繁更新,数据无法正常转发。
  2. STP的作用
    • 通过阻塞部分端口,构建一棵无环的逻辑树,消除环路。
    • 阻塞的端口仍能接收BPDU,并在网络拓扑变化时自动切换为转发状态。

二、基本概念

  1. BPDU(桥协议数据单元)

    • STP用于选举和传递拓扑信息的协议报文。

    • 关键字段

      字段 说明
      根桥ID(Root ID) 全网唯一的根桥标识,始终为根桥的BID。
      根路径开销(RPC) 本设备到根桥的累计路径开销,越小越优。
      发送设备BID 发送BPDU的设备的桥ID。
      发送端口PID 发送BPDU的端口ID(由4位优先级+12位端口号组成,默认优先级128)。
  2. 端口角色

    • 根端口(RP):非根设备上离根桥最近的端口,每台非根设备有且只有一个。
    • 指定端口(DP):每条链路上最优的转发端口,根桥的所有端口都是DP。
    • 阻塞端口:既非RP也非DP的端口,不转发数据但监听BPDU。

三、BPDU(Bridge Protocol Data Unit)报文字段详解

BPDU报文

字段名 长度 说明
Protocol ID 2字节 协议标识符,固定为0x0000(表示STP协议)。
Version ID 1字节 协议版本: • 0x00:STP • 0x02:RSTP • 0x03:MSTP
BPDU Type 1字节 BPDU类型: • 0x00:配置BPDU(用于拓扑计算) • 0x80:TCN BPDU(拓扑变更通知)
Flags 1字节 标志位,包含: • TC(Topology Change,拓扑变更) • TCA(Topology Change Acknowledgment,拓扑变更确认)
Root ID 8字节 根桥ID,由两部分组成: • 前2字节:根桥优先级(默认32768) • 后6字节:根桥MAC地址
Root Path Cost (RPC) 4字节 根路径开销,表示本端口到根桥的累计路径开销(越小越优)。
Bridge ID 8字节 发送设备的BID,结构同Root ID: • 2字节优先级 + 6字节MAC地址
Port ID 2字节 发送端口的PID,由两部分组成: • 高4位:端口优先级(默认128) • 低12位:端口号
Message Age 2字节 BPDU已存活时间(秒),每经过一台设备+1,超过Max Age则丢弃。
Max Age 2字节 BPDU最大存活时间(默认20秒),超时后重新计算拓扑。
Hello Time 2字节 BPDU发送间隔(默认2秒)。
Forward Delay 2字节 端口状态切换延迟时间(默认15秒),防止临时环路。

四、STP选举流程

  1. 选举根桥

    • 规则:比较BID,值小者优。

      • BID = 16位优先级(默认32768) + 48位MAC地址
      • 优先级需为4096的倍数(如0、4096、8192等)。
    • 配置命令

      1
      2
      3
      [Huawei] stp root primary    # 设置本设备为根桥(优先级自动置0)

      [Huawei] stp priority 4096 # 手动指定优先级
    • 建议:现网中手动指定根桥,避免因设备接入引发重新收敛。

  2. 选举根端口(RP)

    • 比较顺序
      1. 根路径开销(RPC):累计到根桥的路径开销,越小越优。
      2. 上行设备BID:若RPC相同,比较上行设备的BID(越小越优)。
      3. 上行设备PID:若BID相同,比较上行端口的PID(越小越优)。
      4. 本设备PID:极端情况下比较自身端口PID。
  3. 选举指定端口(DP)

    • 规则(每条链路选一个DP):
      1. 比较本端设备的根路径开销(RPC)。
      2. 比较本端设备的BID(越小越优)。
      3. 比较本端端口的PID(越小越优)。

五、STP端口状态

状态 行为
阻塞(Blocking) 不转发数据,仅接收BPDU。
侦听(Listening) 参与STP计算,但不转发数据。
学习(Learning) 开始学习MAC地址,但仍不转发数据。
转发(Forwarding) 正常转发数据,参与通信。

六、配置示例

  1. 查看STP信息

    1
    2
    [Huawei] display stp brief    # 查看端口角色和状态
    [Huawei] display stp # 查看全局STP信息
  2. 修改优先级

    1
    [Huawei] stp priority 8192    # 设置优先级为8192
  3. 边缘端口配置(连接PC的端口跳过STP计算)

    1
    2
    [Huawei] interface GigabitEthernet 0/0/1
    [Huawei-GigabitEthernet0/0/1] stp edged-port enable

七、关键总结

  1. 根桥选举:全网BID最小的设备。
  2. 根端口选举:非根设备上离根桥最近的端口。
  3. 指定端口选举:每条链路上最优的转发端口。
  4. 阻塞端口:消除环路的“备用”端口。
  5. 现网建议
    • 手动指定根桥和备份根桥。
    • 连接终端的端口配置为边缘端口(stp edged-port enable)。