ENSP Pro Lab笔记:配置STP/RSTP/MSTP(1)
1、STP概述
1.1 定义
生成树协议(Spanning Tree Protocol,STP) 是一种以太网环路防护机制。
在存在冗余链路的网络中,设备通过运行生成树协议相互交换BPDU报文(Bridge Protocol Data Unit),自动发现网络中的环路,并有选择地阻塞部分端口,从而将原本存在环路的网络逻辑上修剪为无环的树形拓扑。
当网络中的链路或设备发生故障时,生成树协议还可以激活被阻塞的冗余链路,恢复网络连通性,实现链路备份与快速恢复。
1.2 目的
在以太网中,为了提升可靠性,常常设计冗余链路作为备份路径,但这同时带来了环路问题。
网络环路会导致:
广播风暴(Broadcast Storm);
MAC地址表振荡;
链路及设备资源被大量占用;
严重时造成网络瘫痪。
为了解决上述问题,IEEE提出了三代生成树协议标准:
协议 | 标准号 | 特点 |
---|---|---|
STP | IEEE 802.1D | 生成树协议的最初版本,实现基本的环路检测与阻断 |
RSTP | IEEE 802.1W | 在STP基础上改进,实现快速收敛 |
MSTP | IEEE 802.1S | 支持多生成树,可实现VLAN级的负载分担与快速收敛 |
1.3 协议演进与特点
STP(Spanning Tree Protocol)
基于 IEEE 802.1D 标准;
所有 VLAN 共用一棵生成树;
收敛速度慢(通常需要 30~50 秒);
配置简单,但存在带宽浪费。
RSTP(Rapid Spanning Tree Protocol)
基于 IEEE 802.1W 标准;
在 STP 基础上增加端口角色和状态优化机制;
实现秒级收敛;
仍然只支持单生成树,不支持VLAN级负载分担。
MSTP(Multiple Spanning Tree Protocol)
基于 IEEE 802.1S 标准;
将多个 VLAN 映射到不同的生成树实例,实现多路径负载均衡;
支持与 STP、RSTP 兼容;
配置复杂度较高,但具备最佳的可扩展性与灵活性。
1.4 三种生成树协议的对比
协议 | 收敛速度 | 流量转发 | 配置复杂度 |
---|---|---|---|
STP (IEEE 802.1D) | 最慢 | 所有 VLAN 共享一棵生成树 | 低 |
RSTP (IEEE 802.1W) | 快 | 所有 VLAN 共享一棵生成树 | 低 |
MSTP (IEEE 802.1S) | 快 | 支持 VLAN 与实例映射,多棵生成树独立转发 | 高 |
1.5 设备角色
生成树协议的核心目标是消除环路,构建一个无环的树形逻辑拓扑结构。树形结构必须有一个根节点,即根桥(Root Bridge,RB)。
根桥(Root Bridge)
根桥是整个生成树的逻辑中心,负责控制生成树的计算与路径选择。根桥的选举依据桥ID(Bridge ID),其中优先级最低、MAC地址最小的设备会被选为根桥。根桥的角色可能随着网络拓扑变化而动态变化。根桥是逻辑中心,不一定位于物理拓扑的中心位置。
非根桥(Non-root Bridge)
除根桥外,网络中的其他交换机均为非根桥设备。非根桥通过端口角色(根端口、指定端口、阻塞端口)参与生成树的形成与维护。根桥数量
在 STP/RSTP 网络中:全网仅有 一个根桥。
在 MSTP 网络中:每个实例(Instance)都能独立形成一棵生成树,因此可以存在多个根桥,实现不同VLAN流量的负载分担。
1.6 端口角色
1.6.1 端口角色
生成树协议通过为交换机端口分配不同的角色,实现环路的检测与阻断。各协议支持的端口角色如下表所示:
协议 | 端口角色 | 说明 |
---|---|---|
STP | 根端口(RP) | 非根桥上通往根桥的最优路径端口。 |
指定端口(DP) | 每个网段中负责转发流量的端口。 | |
RSTP | 继承STP的RP、DP | —— |
备用端口(Alternate Port) | 通向根桥的备用路径端口,用于快速切换。 | |
备份端口(Backup Port) | 位于同一网段上,作为指定端口的备份。 | |
边缘端口(Edge Port) | 直接连接终端设备的端口,不参与生成树计算。 | |
MSTP | 继承RSTP的所有端口角色 | —— |
主端口(Master Port) | 用于跨MST区域(Region)与外部区域通信。 | |
域边缘端口(Boundary Port) | 连接MST区域边界的端口,用于与CST或其他MST区域交互。 |
总结:
STP → RSTP → MSTP 的演进过程中,端口角色逐步丰富,以实现更快的收敛与更灵活的多实例管理。
RP与DP是所有生成树协议的核心端口角色;RSTP增加了快速切换机制相关的端口;MSTP则面向多区域场景扩展了跨域通信能力。
1.6.2 根端口(Root Port, RP)
根端口是通向根桥路径开销(Path Cost)最小的端口,用于接收来自根桥方向的生成树BPDU消息,并向根桥方向转发数据。
在运行 STP/RSTP 协议的设备上:
每台非根桥设备上仅有一个根端口;
根桥本身没有根端口,因为它就是路径的终点。
1.6.3 指定端口(Designated Port, DP)
指定端口与“指定桥(Designated Bridge)”的概念相对应,二者共同决定在一个网段(segment)中谁负责转发BPDU与用户数据。
分类 | 指定桥(Designated Bridge) | 指定端口(Designated Port) |
---|---|---|
从单台设备视角 | 与本机直连、负责向本机发送配置BPDU的设备 | 指定桥用于向本机转发BPDU的端口 |
从局域网(LAN)视角 | 负责向本网段(Segment)转发BPDU的设备 | 指定桥用于向本网段转发BPDU的端口 |
🌉 一、Segment(网段)的概念
在生成树(STP/RSTP/MSTP)中,Segment 并不是 IP 层的子网,而是指:
二层网络中,一组通过物理链路互联的设备端口所构成的广播域中的一个“链路段(Link Segment)”。
举例:
如果两台交换机 SW1、SW2 之间用一根网线相连,这根链路就是一个 Segment;
如果是一台交换机通过 HUB 连接了多个节点,那么 HUB 那一侧所有端口属于同一个 Segment;
对生成树算法来说,每个 Segment 只允许一个“上游”出口来转发 BPDU 和用户数据。
🧭 二、指定桥(Designated Bridge)
每一个 Segment 上,生成树协议都会选出一个设备作为:
该 Segment 的 “管理者” 或 “发言人”,称为 指定桥(Designated Bridge)。
指定桥的职责:
负责为该 Segment 发送 BPDU;
代表该 Segment 与其他网段保持生成树拓扑的一致性;
从生成树角度看,Segment 的数据转发方向就是从指定桥指向其他设备。
🔌 三、指定端口(Designated Port)
在指定桥上,连接该 Segment 的那个端口被称为:
指定端口(Designated Port)。
所以:
每个 Segment 都对应唯一一个指定桥;
指定桥上连接该 Segment 的端口就是指定端口;
指定端口负责:
向该 Segment 发送 BPDU;
在拓扑收敛后负责转发用户数据。
🧩 四、HUB 与交换机的区别
HUB 互联部分:所有端口共享一个碰撞域,HUB 自身不理解 BPDU,不参与生成树算法。
所以在这种场景下,STP 认为整个 HUB 段是一个 单独的 Segment,BPDU 只在接入 HUB 的交换机端口之间比较。交换机互联部分:每个链路都是点到点的(point-to-point link),每一段物理链路就是一个独立的 Segment。
交换机会主动参与 BPDU 的发送和比较,决定哪个是指定桥和指定端口。
🔄 五、总结关系图
概念 作用 唯一性 说明 Segment 二层链路段 多个 交换机或HUB互联形成的广播段 Designated Bridge 负责该Segment的桥 每个Segment仅1个 代表该Segment对外发BPDU Designated Port Designated Bridge上连接该Segment的端口 每个Segment仅1个 负责转发BPDU和用户流量
💡一句话总结:
每个二层链路段(Segment),生成树协议都会选出一个指定桥(Designated Bridge),
它的**指定端口(Designated Port)**负责在该链路上发送 BPDU 和转发数据,
从而保证整个拓扑有且只有一个活跃转发路径。
1.6.4 备用端口(Alternate Port)
定义:
Alternate端口是根端口(Root Port)的备份端口,当根端口失效时,可迅速切换为新的根端口,实现快速收敛。功能:
提供一条从指定桥(Designated Bridge)到根桥(Root Bridge)的备用路径。状态特征:
由于端口接收到来自其他交换机的BPDU报文,判断自身不是最优路径而被阻塞(Discarding)。典型场景:
在两个交换机之间存在多条冗余链路时,非最优路径端口将成为Alternate端口。
1.6.5 备份端口(Backup Port)
定义:
Backup端口是指定端口(Designated Port)的备份端口,为同一交换机上通往同一网段的链路提供冗余通路。功能:
在指定端口失效时,可快速切换为转发状态,维持本网段的连通性。状态特征:
由于端口接收到自己发送的BPDU报文(说明本网段存在环路或冗余连接),而被阻塞(Discarding)。典型场景:
一台交换机的两个端口同时接入同一个集线器或共享网段时,主用端口为DP,另一个端口成为Backup端口。
1.6.6 边缘端口(Edge Port)
定义:
边缘端口是指直接连接终端设备(如主机、打印机、服务器等)的端口。
该类端口处于网络的最外层边界(Edge),不参与生成树计算,因此可直接进入转发(Forwarding)状态,无需等待STP收敛过程。特性:
边缘端口不会转发或接收生成树BPDU报文。
若误接入交换机或环路设备(收到BPDU),端口会自动退出边缘状态,以防止环路。
自动探测机制:
启用生成树协议后,设备默认开启**边缘端口自动探测(Auto Edge Detection)**功能:若端口在 (2 × Hello Time + 1) 秒内未收到BPDU报文,则自动判定为边缘端口;
若在此期间接收到BPDU报文,则将端口设置为非边缘端口。
手动配置优先级:
若管理员手动将端口配置为边缘端口,则自动探测功能将被禁用,该端口始终视为边缘端口。
1.6.7 MSTP 基本概念回顾
在 MSTP 网络中,生成树的结构层次如下:
MST 域(MST Region):由配置相同的交换机组成,每个域内部独立计算生成树。
IST(Internal Spanning Tree):每个 MST 域内部计算出的一棵生成树。
CST(Common Spanning Tree):所有 MST 域之间计算出的生成树,用于连接各域。
CIST(Common and Internal Spanning Tree):由 CST 与各 IST 共同组成的整体生成树。
总根(CIST Root):CIST 的根桥,是整个 MSTP 网络的逻辑中心。
1.6.8 主端口(Master Port)
定义:
主端口是 MST 域中到达 CIST 总根路径开销最小的端口,是域内数据流向总根的唯一出口。功能:
主端口承担域内与域外之间的转发职责,确保本域流量能正确汇聚至 CIST 根桥。特征:
每个 MST 域中最多只有 一个 Master 端口;
在 CIST 拓扑上,Master 端口的角色为 根端口(Root Port);
在 其他 MST 实例中,Master 端口被标识为 Master Port。
典型场景:
一个 MST 区域通过多条链路连接到上级骨干域时,只有一条最优链路的端口成为 Master 端口,其余链路端口为阻塞状态。
1.6.9 域边缘端口(Boundary Port)
定义:
域边缘端口是位于 MST 域边界,用于连接其他 MST 域或单实例生成树(如 STP/RSTP)网络的端口。功能:
承担不同域之间 BPDU 报文的交换;
作为 MST 域与外部生成树(CST)之间的边界桥接点。
关系说明:
Master 端口是一种特殊的域边缘端口;
Master 端口负责跨域通信并通向总根;
其他域边缘端口可能仅用于跨区域互连而非主干方向转发。
1.7 端口状态
1.7.1 STP端口状态
运行 STP(Spanning Tree Protocol) 的设备端口在不同阶段会处于不同状态,以确保网络逐步收敛并避免环路。
端口状态 | 说明 |
---|---|
Disabled | 端口处于关闭(Down)状态,不参与生成树计算,不处理BPDU报文,也不转发用户流量。 |
Blocking | 端口仅接收并处理BPDU报文,用于环路检测,不转发任何用户流量。 |
Listening | 过渡状态。端口开始参与生成树计算,可接收和发送BPDU报文,但仍不转发用户流量。 |
Learning | 过渡状态。端口根据收到的用户流量开始学习并建立MAC地址表,可接收和发送BPDU报文,但仍不转发用户流量。 |
Forwarding | 正常转发状态。端口可接收、发送BPDU报文并转发用户流量。只有**根端口(RP)和指定端口(DP)**才能进入此状态。 |
STP端口状态迁移机制:
- 端口Up或使能了STP,会从Disabled状态进入到Blocking状态。
- 端口被选举为根端口或指定端口,会进入Listening状态。
- 端口的Forward Delay定时器超时,会进入Learning/Forwarding状态。
- 端口不再是根端口或指定端口时,会进入Blocking状态。
- 端口Down或者去使能STP时,就进入Disabled状态。
1.7.2 RSTP/MSTP端口状态
相比于 STP 的 5 种端口状态,RSTP 和 MSTP 将端口状态精简为 3 种,以加快收敛速度并简化状态转换。
端口状态 | 说明 |
---|---|
Forwarding | 端口处于转发状态,可转发用户流量、学习MAC地址,并可发送和接收BPDU报文。 |
Learning | 过渡状态。端口仅学习MAC地址表,可接收和发送BPDU报文,但不转发用户流量。 |
Discardqing | 阻塞状态。端口仅接收BPDU报文,不学习MAC地址,也不转发用户流量。 |
1.7.3 对比说明
STP 5 状态 → RSTP/MSTP 3 状态
Discarding = STP 的 Blocking + Listening + Disabled
Learning 与 STP 的 Learning 对应
Forwarding 与 STP 的 Forwarding 对应
优势:
简化状态管理
消除了STP中 Forward Delay 定时器的依赖
结合握手机制(handshake)实现快速收敛
1.7.4 端口状态与端口角色对应关系
说明:
端口**状态(Forwarding / Learning / Discarding)与端口角色(RP/DP/Edge/Alternate/Backup)**是两个独立概念。
不同角色的端口支持的状态有所不同,具体如下表所示:
端口状态 | 根端口 / Master端口 | 指定端口 | 边缘端口 / 域边缘端口 | Alternate端口 | Backup端口 |
---|---|---|---|---|---|
Forwarding | Yes | Yes | Yes | No | No |
Learning | Yes | Yes | Yes | No | No |
Discarding | Yes | Yes | Yes | Yes | Yes |
关键点总结:
Forwarding 状态仅限可参与流量转发的端口(根端口、指定端口、边缘/域边缘端口)。
Learning 状态用于学习 MAC 地址,受端口角色限制(非备份/备用链路端口)。
Discarding 状态是环路保护状态,所有端口角色均可处于该状态。
端口角色决定端口功能和生成树拓扑作用,端口状态决定端口是否转发流量或学习 MAC。
1.8 BPDU 报文分类
BPDU(Bridge Protocol Data Unit) 是生成树协议交换信息的载体,不同协议使用不同类型的 BPDU 报文。
BPDU 类型 | 用途 | 适用协议 |
---|---|---|
配置 BPDU(Configuration BPDU) | 用于生成树计算和维护网络拓扑 | STP |
RST BPDU | 用于生成树计算和维护网络拓扑 | RSTP |
MST BPDU | 用于生成树计算和维护网络拓扑 | MSTP |
TCN BPDU(Topology Change Notification) | 当网络拓扑发生变化时,通知其他设备进行 MAC 表刷新 | STP / RSTP / MSTP |
补充说明:
配置类 BPDU:用于选举根桥、计算路径开销、更新端口角色。
TCN BPDU:用于快速传播拓扑变化信息,保证 MAC 地址表及时更新,避免流量丢失。
RSTP 与 MSTP 在报文格式和携带字段上相对于 STP 有优化,以支持快速收敛和多实例管理。
1.9 生成树协议定时器(STP / RSTP / MSTP)
1.9.1 生成树协议定时器
BPDU 报文中包含与时间相关的字段,用于生成树计算、端口状态控制及网络收敛。主要定时器如下:
定时器 / 字段 | 作用 | 默认值 | 说明 |
---|---|---|---|
Hello Time | 根桥发送配置 BPDU 的间隔 | 2 秒 | 控制 BPDU 的发送频率,用于生成树拓扑维护。 |
Forward Delay | 端口从 Listening → Learning → Forwarding 的过渡时间 | 15 秒 | 控制端口状态过渡,防止环路。 |
Max Age | BPDU 最大寿命 | 20 秒 | 表示 BPDU 在网络中存活的最大时间,超过则丢弃,防止过时信息影响生成树计算。 |
Message Age | BPDU 已经过的时间 | — | BPDU 报文携带字段,随着报文在网络中转发而累加,判断是否超过 Max Age。 |
补充说明:
定时器可手动配置,以满足不同网络规模和收敛需求。
RSTP / MSTP 对 Forward Delay 和 Max Age 的依赖减少,通过握手机制和快速状态切换实现更快收敛。
生成树定时器直接影响端口状态迁移与整个网络收敛时间,是理解生成树行为的关键参数。
1.9.2 STP 定时器详解
STP 使用多种定时器控制生成树计算、端口状态迁移和网络收敛,主要包括 Hello Time、Forward Delay、Max Age,以及 BPDU 报文携带的 Message Age。
1. Hello Time 定时器与超时时间
作用:根桥周期性向邻居发送 BPDU 报文,确认链路状态。
默认值:2 秒(可手动修改)
超时时间计算:
超时时间=Hello Time×3×Timer Factor
说明:
Timer Factor 缺省为 3,可手动调整。
当网络稳定后,Hello Time 只有在 根桥修改后 才会生效,新值通过 BPDU 广播到非根桥。
拓扑变化触发的 TCN BPDU 发送不受 Hello Time 管理。
2. Forward Delay 定时器
作用:控制端口状态过渡,防止临时环路。
默认值:15 秒
端口状态过渡:
Listening 状态持续 15 秒 → Learning 状态持续 15 秒 → Forwarding
关键机制:
新选出的根端口和指定端口不会立即转发流量。
通过 2 × Forward Delay 的延迟,让新的配置消息传播到全网,避免临时环路。
3. Max Age 定时器和 Message Age
Max Age:
作用:BPDU 报文老化时间,防止过时信息影响生成树。
默认值:20 秒(可手动配置)
根桥通过 BPDU 广播 Max Age 值,保证全网一致。
Message Age:
作用:记录 BPDU 从根桥到当前交换机的总时间。
规则:
Message Age ≤ Max Age:BPDU 继续转发。
Message Age > Max Age:BPDU 被丢弃,可能意味着网络直径过大或根桥连接失败。
实现细节:
根桥发出的配置 BPDU,Message Age = 0
每经过一台交换机,Message Age +1
4. 小结
Hello Time 控制 BPDU 发送间隔与链路故障检测
Forward Delay 控制端口从 Listening → Learning → Forwarding 的延迟,防止临时环路
Max Age + Message Age 保证 BPDU 老化机制有效,防止过时 BPDU 干扰生成树计算
1.10 根桥、根端口、指定端口的选举原则
1.10.1 BPDU 优先级向量
每台设备通过 BPDU 交互信息时,会携带四个关键字段,构成优先级向量:
{ Root ID, Root Path Cost, Bridge ID, Port ID }
字段名 | 含义 | 比较优先级 |
---|---|---|
Root ID | 当前认为的根桥标识 | 最高 |
Root Path Cost (RPC) | 到根桥的累积路径开销 | 次高 |
Bridge ID (BID) | 报文发送设备的标识(Priority + MAC) | 第三 |
Port ID (PID) | 报文发送端口标识(Priority + Port No.) | 最低 |
💡 比较规则:从左到右依次比较,数值越小,优先级越高。
1.10.2 各角色的选举原则
1️⃣ 根桥(Root Bridge)
原则:BID 最小者为根桥。
BID 组成:
BID = Bridge Priority (16bit) + MAC Address (48bit)
当桥优先级相同时,MAC 地址较小的设备胜出。
特点:
根桥上所有端口都是 指定端口(Designated Port);
根桥没有根端口(Root Port)。
2️⃣ 根端口(Root Port)
定义:
每台 非根桥 上距离根桥路径开销最小的端口。选举逻辑:
比较 Root Path Cost(RPC) → 最小者为根端口;
若 RPC 相同 → 比较收到的 BPDU 中的 发送设备 BID;
若 BID 相同 → 比较 发送端口 PID;
若 PID 也相同(极少发生) → 按端口号最小者为根端口。
特点:
每台非根桥设备仅有 一个根端口;
根桥没有根端口。
3️⃣ 指定端口(Designated Port)
定义:
每个网络段(或链路)上负责转发该段数据的端口。选举逻辑:
比较该段(Segment)上各端口的 到根桥路径开销(RPC);
若相同 → 比较 发送设备 BID;
若相同 → 比较 发送端口 PID;
PID 较小者为指定端口,PID 较大者阻塞。
特点:
每个网段(Segment)只有一个指定端口;
其他端口处于阻塞或备用状态。
路径开销(Path Cost)计算
定义:
端口到根桥的路径优劣衡量值。带宽越高,路径开销越小。根路径开销(RPC) = 所经过各段 Path Cost 之和。
1.11 STP/RSTP拓扑计算方法
1.11.1 基本原理
在一个启用了生成树协议的以太网中,所有设备(桥)会通过互相交换 BPDU(Bridge Protocol Data Unit) 报文来协同计算出一个无环的树形拓扑结构。
生成树算法(STA, Spanning Tree Algorithm)的核心目标是:
选举出根桥(Root Bridge);
确定各非根桥上的根端口(Root Port);
确定每个网络段(Segment)上的指定桥(Designated Bridge)/指定端口(Designated Port);
对冗余链路上的其他端口进行阻塞(Blocking),防止环路。
1.11.2 算法基本过程
(1)初始状态
网络刚启动时,每台启用 STP/RSTP 的设备都认为自己是根桥,因此:
发送的 BPDU 报文中:
根桥 ID(Root Bridge ID) = 本设备 BID(Bridge ID);
根路径开销(RPC, Root Path Cost) = 0;
发送者 BID = 自身 BID;
发送端口 ID(PID) = 本端口 ID。
所有端口均处于“阻塞”或“侦听(Listening)”状态,仅参与 BPDU 交换,不转发用户流量。
(2)根桥选举
在 BPDU 交互过程中,设备之间会比较收到的“根桥 ID”:
BID(Bridge ID)最小的设备被选举为根桥;
根桥持续周期性发送 BPDU,以维持网络拓扑稳定;
非根桥在其 BPDU 中更新根桥信息,并计算到根桥的路径开销。
比较规则(优先级从高到低)
根桥 ID(Root Bridge ID)
根路径开销(Root Path Cost)
发送者 BID
发送端口 ID
(3)根端口与指定端口选举
步骤 | 过程说明 |
---|---|
1 | 每台非根桥设备,从所有端口收到的配置 BPDU 中,选择“最优配置消息”的端口作为 根端口(Root Port)。 |
2 | 每个设备根据自己的根端口信息,为其余端口生成“指定端口配置消息”: • 根桥 ID = 根端口 BPDU 的根桥 ID; • 根路径开销 = 根端口路径开销 + 根端口到根桥路径开销; • 发送者 BID = 本设备 BID; • 发送端口 ID = 本端口 ID。 |
3 | 设备将计算出的配置消息与端口自身的配置消息进行比较: • 若计算出的配置消息更优,则该端口成为 指定端口(Designated Port),并周期性发送 BPDU; • 若端口自身的配置消息更优,则该端口被阻塞(Discarding / Blocking),仅接收不发送 BPDU。 |
(4)最优配置消息选择过程
步骤 | 过程说明 |
---|---|
1 | 每个端口比较收到的配置 BPDU 与自身生成的 BPDU: • 若收到的 BPDU 优先级较低 → 丢弃; • 若收到的 BPDU 优先级较高 → 用其内容替换本端口配置; • 若相同 → 丢弃。 |
2 | 设备对所有端口的 BPDU 信息进行全局比较,选出最优配置消息,用于确定根端口。 |
(5)拓扑收敛
当所有设备完成根桥、根端口、指定端口的选举后:
根端口和指定端口进入 Forwarding 状态;
其他端口进入 Discarding(Blocking) 状态;
网络形成一个逻辑无环拓扑。
STP 收敛过程较慢(通常 30~50 秒),RSTP 通过引入 快速迁移机制(Proposal / Agreement) 可实现秒级收敛。