STP – 生成树协议说明

⚡ 智能摘要

生成树协议 (STP) 是一种 IEEE 802.1D 标准的第 2 层链路管理标准,它通过选举根桥并将备份端口置于阻塞状态来防止具有冗余链路的网络中出现交换环路。

  • 🔁 目的: STP 从包含冗余、潜在环路的物理网络构建无环逻辑拓扑。ping 链接。
  • 🌉 根桥: 交换机之间交换 BPDU 来选举一个根桥,其他所有交换机都以此为参考点来衡量其最短路径。
  • 🧱 港口状态: 每个端口都会经历阻塞、监听、学习和转发状态,此外还有一个用于关闭端口的禁用状态。
  • RSTP: 快速生成树协议 (802.1w) 可在几秒钟内收敛,而经典 STP 可能需要长达 50 秒的时间。
  • 📊 变种: 标准包括 STP、RSTP、MSTP (802.1s) 和 Cisco PVST+ 和 PVRST+ 用于每个 VLAN 树。
  • 🤖 人工智能辅助: 机器学习工具能够比人工日志审查更快地标记出拓扑变化风暴和循环情况。

生成树协议(STP)详解

什么是STP?

生成树协议(STP)是一种链路管理协议,旨在支持冗余链路,同时防止网络中出现交换环路。 图层2 该协议运行于网桥和交换机上,必须在交换机接口上启用。IEEE 将其标准化为 IEEE 802.1D。

为什么需要STP?

冗余链路可以提高容错能力,但如果没有环路预防机制,它们也可能造成危险的交换环路。以下情况需要用到生成树协议:

  • 引入冗余后,网络的可靠性(容错性)显著提高。
  • 当流量必须到达尚未确定的目的地时,交换机会将所有端口的流量都释放出去。
  • 广播和组播流量会从除接收端口之外的所有端口转发出去。
  • STP 从包含环路的物理拓扑结构创建无环路的逻辑拓扑结构。

STP 如何工作?示例

生成树使用一种算法来搜索冗余链路。 局域网 并选择最佳路径。它会将每个链路置于转发或阻塞状态。

经过此过程后,没有冗余备选路径的链路将保持转发状态。未被选为最佳路径的冗余链路将被设置为阻塞状态。生成树协议永远不会使用多条链路到达同一目的地,因此它不提供负载均衡。

STP 的类型

以下是不同类型的生成树协议:

标准版 描述 缩写
IEEE 802.1D 防止循环;每次更改后自动重新配置树;缓慢收敛(最多 50 秒) STP
IEEE 802.1w — 快速生成树协议 改进的STP,收敛速度更快;向后兼容STP RSTP
IEEE 802.1Q — 虚拟局域网 为所有VLAN定义一个通用的生成树 CST
Cisco 专有 — 每个 VLAN 的生成树 每个 VLAN 一个 STP 实例;PVST+ 是 PVST 的改进版本。 PVST+
Cisco 专有 — 基于 VLAN 的快速生成树 快速的、基于VLAN的收敛 PVRST+ / R-PVST+
IEEE 802.1s——多生成树协议 多个 VLAN 映射到单个 STP 实例 MSTP

生成树的标准

决定哪些接口处于转发状态的标准有三个:

  • 根桥上的所有接口都处于转发状态。
  • 对于非根桥的桥接器,将距离根桥接器最近的端口(路径成本最低)置于转发状态。
  • 在一段上,到根桥路径成本最低的桥被称为指定桥。

STP协议的各个阶段

如下图所示,生成树端口在转发流量之前会经历几个状态转换:

STP端口状态从阻塞状态转换到监听学习状态再到转发状态。

阻塞状态

阻塞端口是指未指定且从不参与帧转发的端口。其计时器设置为 20 秒(最大老化值)。启用 STP 后,接口始终进入阻塞状态。

聆听状态

监听状态是端口阻塞后进入的第一个过渡状态。在此状态下,端口决定是否参与帧转发。监听状态执行以下功能:

  • 丢弃端口上收到的帧
  • 无法学习 MAC 地址
  • 接收 BPDU

学习状态

学习状态使端口做好参与帧转发的准备。端口从监听状态进入学习状态,并执行以下操作:

  • 丢弃端口上收到的帧
  • 接收 BPDU
  • 可以学习 MAC地址

转发状态

处于转发状态的端口会转发帧。它从学习状态进入转发状态,并执行以下操作:

  • 接收并转发端口上接收到的帧
  • 学习 MAC 地址
  • 接收 BPDU

禁用状态

已禁用的端口不参与生成树协议,因为它已被管理员关闭;其禁用时间不受限制。已禁用的接口执行以下操作:

  • 丢弃端口上收到的帧
  • 无法学习 MAC 地址
  • 未收到 BPDU

生成树协议中使用的重要术语

以下是STP中使用的一些重要术语:

网桥是 STP 的重要组成部分,用于连接两个或多个 LAN 网段。

根桥 (RB)

根桥为所有网段提供互连点,局域网中的每个网桥都与它有路径连接。STP 会自动选择根桥,但网络管理员也可以根据需要进行更改。

无根桥 (NRB)

非根桥是指除根桥以外的任何桥。

根端口(RP)

根端口是通向根桥的端口。

指定港口(DP)

每个局域网段都有一个指定的端口。每个网桥在其指定的端口接收帧,并通过其根端口将帧转发到根网桥。

端口 ID

端口 ID 用于确定根端口。它由一个可配置的 1 字节优先级值和一个每个网桥唯一的端口号组成。

路径成本(PC)

路径成本有助于根据转发速度确定最佳拓扑结构;带宽较低的链路成本较高。STP 使用路径成本来选择到达根桥的最短路径。

非指定港口

非指定端口是指被阻塞的交换机端口,也称为阻塞端口或备用端口。它无法将帧转发到下一个交换机,也不会填充 MAC 地址表。

RSTP

快速生成树协议 (RSTP) 是一种网络协议,它确保以太网网络无环拓扑结构,并且比原始的 STP 收敛速度快得多。

桥接协议数据单元 (BPDU)

生成树协议要求网络设备交换消息,以便形成无环逻辑拓扑结构。这些消息称为 BPDU(桥接协议数据单元)。每个网络设备发送 BPDU 来共享拓扑信息。

BPDU 帮助交换机执行以下操作:

  • 选择一个交换机作为生成树的根交换机。
  • 计算每个交换机到根交换机的最短路径,并为每个 LAN 网段指定一个距离根交换机最近的交换机。
  • 在每个交换机上选择一个端口作为其根端口(如果它不是根交换机)。
  • 将构成生成树的端口标识为指定端口。
  • 屏蔽非指定端口。

配置BPDU

配置BPDU携带根设备的桥ID、桥ID和 transmitting 桥,以及 的标识符 transmitting 端口。

拓扑更改通知 (TCN) BPDU

当交换机检测到网络拓扑发生变化(例如链路启动或关闭)时,会向根桥发送TCN BPDU。根桥随后指示所有交换机缩短其MAC地址表的老化时间,以便快速清除过期的条目。

STP 和 RSTP 之间的区别

下表列出了STP和RSTP的主要区别:

STP RSTP
在 STP 中,网桥只有在从根网桥的根端口收到 BPDU 时才会发送 BPDU。 RSTP 使每个交换机都能在每个 hello 间隔发送 BPDU。
STP定义了两种端口角色:根端口和指定端口。 RSTP 增加了两个新角色:备用端口和备份端口。

STP端口状态参考表

下表总结了每个 STP 端口的状态,包括是否处理 BPDU 以及是否学习 MAC 地址:

描述 处理 BPDU 了解 MAC
在里面 端口的初始化。 没有 没有
残疾人 不参与标准STP运营的行政国家。 没有 没有
闭塞 该端口不转发以太网帧。 是的(仅接收和处理BPDU) 没有
听力 在此状态下计算无环拓扑,并为端口分配其角色。 是的(发送和接收BPDU) 没有
超越课堂 另一种状态,用于延迟帧转发以避免网络拥塞。 是的(填充 MAC 地址表)
转发 正常运行,转发以太网帧。

常见问题

每个交换机都会通告一个桥接 ID,该 ID 由优先级值(默认值为 32768)加上其 MAC 地址组成。桥接 ID 最低的交换机成为根桥;如果优先级相同,则 MAC 地址最低的交换机成为根桥。

经典的 802.1D 使用三个计时器:2 秒的 Hello 时间、15 秒的监听和学习状态前向延迟,以及 20 秒的最大老化时间。完全收敛可能需要 30 到 50 秒。

BPDU Guard 可保护不应接收 BPDU 的接入(边缘)端口。如果此类端口确实接收到 BPDU,交换机会立即将其置于错误禁用状态并停止。ping 意外的交换机或回路会破坏拓扑结构的稳定性。

PortFast 允许接入端口跳过监听和学习状态,直接进入转发状态。它仅用于连接到终端设备(例如 PC 或服务器)的端口,切勿用于交换机之间的链路。

如果没有STP,冗余链路之间 开关 创建桥接环路。帧无限循环,引发广播风暴、重复帧和 MAC 地址表不稳定,这些都可能迅速导致整个局域网崩溃。

是的。现代交换机默认运行 RSTP 或 MSTP,因为它们可以在几秒钟内完成收敛。大型数据中心越来越多地采用三层路由或交换矩阵技术,例如 TRILL、SPB 和 EVPN-VXLAN,但 STP 仍然能够保护二层免受环路的影响。

机器学习工具首先对正常的BPDU和拓扑变化活动进行基线分析,然后标记异常情况,例如突发的TCN洪水或抖动。ping 根桥接。这可以加快根本原因分析速度,但最终仍需由工程师确认并应用修复方案。

GitHub 副驾驶 草案 Cisco iOS、Ansible 或 Python 代码片段可用于执行诸如设置桥接优先级或启用 PortFast 等任务,只需添加简短注释即可。在将生成的命令应用到生产交换机之前,务必先进行审核。

总结一下这篇文章: