冗余功能可防止网络因单个故障点(例如网络电缆或交换机故障)而无法运行,以此提升网络拓扑的可用性。 当物理冗余功能引入设计时,便会出现环路和重复帧。 环路和重复帧对交换网络有着极为严重的影响。 生成树协议 (STP) 便旨在解决这些问题。

STP 会特意阻塞可能导致环路的冗余路径,以确保网络中所有目的地之间只有一条逻辑路径。 端口处于阻塞状态时,用户数据将无法进入或流出该端口。 不过,STP 用来防止环路的 BPDU(网桥协议数据单元)帧仍可继续通行。 阻塞冗余路径对于防止网络环路非常关键。 为了提供冗余功能,这些物理路径实际依然存在,只是被禁用以免产生环路。 一旦需要启用此类路径来抵消网络电缆或交换机故障的影响时,STP 就会重新计算路径,将必要的端口解除阻塞,使冗余路径进入活动状态。

单击图 1 中的“播放”按钮,查看 STP 的实际操作。

本例中所有交换机都启用了 STP:

1. PC1 向网络发送广播。

2. S2 配置了 STP,并将用于 Trunk2 的端口设置为阻塞状态。 阻塞状态可防止端口转发用户数据,从而防止形成环路。 S2 将广播帧从所有交换机端口转发出去,但 PC1 的发起端口和用于 Trunk2 的端口除外。

3. S1 收到广播帧后,将它从所有交换机端口转发出去,广播帧随后到达 PC4 和 S3。 S3 将该帧从用于 Trunk2 的端口转发出去,而 S2 会丢弃该帧。 因此没有形成第 2 层环路。

单击图 2 中的“播放”按钮,查看发生故障时的 STP 重新计算过程。

在本例中:

1. PC1 向网络发送广播。

2. 广播随后在网络中扩散,与前一个动画类似。

3. S2 与 S1 之间的 TRUNK 链路发生故障,造成原来的路径中断。

4. S2 解除对 Trunk2 上端口的阻塞,允许广播流量通过该替代路径在网络中传输,通信得以继续进行。 如果故障链路恢复,STP 重新融合,S2 上的该端口将再次被阻塞。

STP 通过策略性设置“阻塞状态”的端口来配置无环网络路径,从而防止形成环路。 运行 STP 的交换机能够动态对先前阻塞的端口解除阻塞,以允许流量通过替代路径传输,从而抵消故障对网络的影响。

目前为止,我们使用了术语“生成树协议”和缩写词“STP”。 术语“生成树协议”和缩写“STP”容易造成误导。 许多专业人员通常使用它们指代生成树的各种实施方式,例如快速生成树协议 (RSTP) 和多生成树协议 (MSTP)。 为了正确交流生成树概念,必须参考上下文中的特定实施方式或标准。 有关生成树的最新 IEEE 文档 IEEE-802-1D-2004 指出,“STP 现已被快速生成树协议 (RSTP) 取代”;因此可以看出,IEEE 使用“STP”指代生成树的原始实施方式,使用“RSTP”描述 IEEE-802.1D-2004 指定的生成树版本。 在本课程中,当讨论原始生成树协议时,为了避免混淆,我们使用短语“原始 802.1D 生成树”。

注意:STP 采用 Radia Perlman 效力于 Digital Equipment Corporation 时发明的一种算法,该算法于 1985 年在“An Algorithm for Distributed Computation of a Spanning Tree in an Extended LAN”(扩展 LAN 中生成树的分布式计算算法)一文中发布。