生成树在交换机的应用

xiaomage 发布于 2026-02-25 19 次阅读


交换机里使用的生成树协议(STP/RSTP)并不是用来“快速找到环路”的,而是用来“主动预防和破除环路”的。

它的原理不是等到环路发生、网络瘫痪后,再去定位和解决。而是从一开始就通过一套分布式算法,在冗余的网络拓扑中,主动计算出一个无环的逻辑拓扑,并通过阻塞特定端口来实现它。

下面详细解释这个原理和过程:

核心目标:化“图”为“树”

交换网络在物理连接上为了冗余,会形成包含环路的“图”。STP的目标就是在这个“图”中,通过逻辑上阻塞(Blocking)一些端口,将其变为一个无环的“树”。

工作原理(以经典STP为例,802.1D)

协议运行在交换机之间,通过交换一种特殊的控制报文——BPDU 来实现。整个过程就像一场选举,选举出树的“根”和“最佳路径”。

第一步:选举一个“根桥”

  • 比喻:选出一个国王。
  • 规则:所有交换机都参与选举,比较各自的 桥ID。桥ID由 优先级 和 MAC地址 组成,数值小者胜出。
  • 结果:整个网络中只有一个根桥。所有数据帧要前往的“方向”都以它为基准。

第二步:在每个非根桥上确定“根端口”

  • 比喻:每个非根交换机选出一条通往国王(根桥)的 最佳官道
  • 规则:每个非根交换机比较所有端口收到的BPDU,选择出到达根桥 成本最低 的端口作为根端口。
    • 如果成本相同,则比较发送该BPDU的上游交换机的桥ID。
    • 如果还相同,则比较上游交换机的端口ID。
  • 结果:每个非根桥有且只有一个根端口,这是它转发数据去往根桥的端口。

第三步:在每个网段上确定“指定端口”

  • 比喻:连接两个村庄(网段)的道路,只允许一个方向的官方信使(指定交换机)负责转发这个网段的流量。
  • 规则:每个物理网段(比如连接两台交换机的一条线)会进行选举,选举出一个 指定端口 来为该网段转发流量。
    • 比较连接到该网段的交换机,谁到根桥的路径成本更优,该交换机连接此网段的端口就是指定端口。
    • 如果成本相同,则比较交换机的桥ID。
  • 结果:每个网段有且只有一个指定端口,用于转发流量。

第四步:阻塞剩余端口——“预备端口”

  • 经过以上选举,所有既不是 根端口,也不是 指定端口 的端口,将被置为 阻塞状态
  • 这就是破除环路的关键!逻辑上相当于“剪断”了这些连接,物理线路虽然还在,但数据帧(除了BPDU)无法通过。

“快速”的演进:RSTP(快速生成树协议,802.1w)

经典STP收敛慢(需要30-50秒),不适合现代网络。RSTP对此做了重大改进,实现了真正的“快速”收敛(通常在1秒内)。

RSTP加速的关键原理:

  1. 端口角色细化:增加了 预备端口 和 备份端口 的角色,提前为拓扑变化做好了备用路径的准备。
  2. 端口状态简化:从5种状态简化为3种:丢弃学习转发丢弃状态合并了原来的禁用阻塞监听状态。
  3. BPDU作为保活机制:在RSTP中,BPDU像握手包一样周期性发送。如果一个端口在连续3个Hello时间内没收到对端的BPDU,就认为连接失效,立即触发重新计算。而STP中,交换机需要等待一个很长的“最大生存时间”才能发现故障。
  4. 提议-同意机制:当一个新的点对点链路激活时,两端交换机会通过快速的“提议”和“同意”握手,立刻将该端口转为转发状态,无需等待任何计时器超时。这是实现亚秒级收敛的核心机制。

总结:交换机“找”环路并破除的原理

  1. 分布式协议:所有交换机通过 BPDU报文 交互信息,掌握全网拓扑。
  2. 选举算法:通过一套基于 桥ID 和 路径成本 的确定性选举规则,无争议地选出 唯一根桥根端口 和 指定端口
  3. 逻辑阻塞:选举完成后,所有未被选中的端口自动被置为 阻塞状态这些被阻塞的端口,恰恰就是可能形成环路的“那条多余的边”。通过阻塞它们,物理上的环路被逻辑上切断。
  4. 快速收敛(RSTP):通过改进状态机、端口角色和快速的握手协议,在网络拓扑变化时能迅速启用备用路径(将之前阻塞的预备端口快速转为转发状态),同时避免临时环路的产生。

简单来说,生成树协议的原理不是“发现环路再处理”,而是“通过一套分布式选举规则,让所有交换机自动达成共识,共同决定关闭哪些冗余链路,从而从一开始就构建出一个无环的网络拓扑”。RSTP则让这个“构建”和“修复”的过程变得极快。

此作者没有提供个人介绍。
最后更新于 2026-02-25