2026-06-27 22:29:38 +08:00
|
|
|
|
# STP、RSTP、MSTP
|
2026-06-23 22:30:02 +08:00
|
|
|
|
|
2026-06-27 22:29:38 +08:00
|
|
|
|
## 作用
|
2026-06-23 22:30:02 +08:00
|
|
|
|
|
2026-06-27 22:29:38 +08:00
|
|
|
|
STP、RSTP、MSTP 都属于生成树协议,核心作用是:
|
|
|
|
|
|
- 防止二层网络中因为冗余链路产生环路
|
|
|
|
|
|
- 避免广播风暴
|
|
|
|
|
|
- 避免 MAC 地址表震荡
|
|
|
|
|
|
- 在保证无环的前提下保留链路冗余
|
|
|
|
|
|
|
|
|
|
|
|
可以简单理解为:
|
|
|
|
|
|
|
|
|
|
|
|
二层交换网络为了防止单点故障,常常会接入冗余链路,但冗余链路一多,就可能形成环路。生成树协议会从逻辑上阻塞部分端口,让网络形成一棵无环的树;当主链路故障时,再让备用链路接管转发。
|
|
|
|
|
|
|
|
|
|
|
|
## 基本概念
|
|
|
|
|
|
|
|
|
|
|
|
### 1. 根桥 Root Bridge
|
|
|
|
|
|
|
|
|
|
|
|
生成树会先选出一台交换机作为根桥,整张网络的拓扑计算都围绕根桥进行。
|
|
|
|
|
|
|
|
|
|
|
|
### 2. 根端口 Root Port
|
|
|
|
|
|
|
|
|
|
|
|
每台非根桥交换机都会选出一个到根桥路径最优的端口,称为根端口。
|
|
|
|
|
|
|
|
|
|
|
|
### 3. 指定端口 Designated Port
|
|
|
|
|
|
|
|
|
|
|
|
每个网段都会选出一个负责向该网段转发数据的端口,称为指定端口。
|
|
|
|
|
|
|
|
|
|
|
|
### 4. 阻塞端口
|
|
|
|
|
|
|
|
|
|
|
|
如果某个端口既不是根端口,也不是指定端口,通常就会被阻塞,从而避免环路。
|
|
|
|
|
|
|
|
|
|
|
|
## STP 的工作思路
|
|
|
|
|
|
|
|
|
|
|
|
STP 的大致流程可以概括为:
|
|
|
|
|
|
1. 先选举根桥
|
|
|
|
|
|
2. 每台非根桥交换机选举根端口
|
|
|
|
|
|
3. 每个网段选举指定端口
|
|
|
|
|
|
4. 其余不参与转发的端口进入阻塞状态
|
|
|
|
|
|
|
|
|
|
|
|
这样就能在物理上有环、逻辑上无环。
|
|
|
|
|
|
|
|
|
|
|
|
## STP、RSTP、MSTP 的区别
|
|
|
|
|
|
|
|
|
|
|
|
### STP
|
|
|
|
|
|
|
|
|
|
|
|
STP 是最基础的生成树协议,优点是原理清晰,缺点是收敛速度较慢。
|
|
|
|
|
|
|
|
|
|
|
|
### RSTP
|
|
|
|
|
|
|
|
|
|
|
|
RSTP 是快速生成树协议,相比 STP,收敛速度更快,链路切换也更快,更适合实际网络使用。
|
|
|
|
|
|
|
|
|
|
|
|
### MSTP
|
|
|
|
|
|
|
|
|
|
|
|
MSTP 是多生成树协议,可以把不同 VLAN 映射到不同生成树实例,让不同业务走不同链路,从而更好地利用冗余带宽。
|
|
|
|
|
|
|
|
|
|
|
|
可以简单记成:
|
|
|
|
|
|
- STP:基础版
|
|
|
|
|
|
- RSTP:快速版
|
|
|
|
|
|
- MSTP:可按实例划分、适合多 VLAN 场景
|
|
|
|
|
|
|
|
|
|
|
|
## 常见理解误区
|
|
|
|
|
|
|
|
|
|
|
|
### 1. 生成树不是“丢弃重复包”
|
|
|
|
|
|
|
|
|
|
|
|
生成树的重点不是发现某个包重复后再丢弃,而是提前通过阻塞端口避免二层环路形成。
|
|
|
|
|
|
|
|
|
|
|
|
### 2. 不是“手工指定根端口”
|
|
|
|
|
|
|
|
|
|
|
|
实际配置里,一般是通过调整桥优先级来影响根桥选举,通过调整路径开销等方式影响端口角色,而不是直接简单写成“手工指定根端口”。
|
|
|
|
|
|
|
|
|
|
|
|
### 3. 不是算力够就默认都开
|
|
|
|
|
|
|
|
|
|
|
|
不同厂商、不同型号、不同系统版本的默认行为可能不完全一样。复习时更稳妥的说法是:
|
|
|
|
|
|
|
|
|
|
|
|
- 生成树功能在交换网络中非常常见
|
|
|
|
|
|
- 是否默认开启,要以具体厂商设备为准
|
|
|
|
|
|
|
|
|
|
|
|
## 常见保护特性
|
|
|
|
|
|
|
|
|
|
|
|
### 边缘端口 Edge Port
|
|
|
|
|
|
|
|
|
|
|
|
连接终端主机的端口一般可以配置为边缘端口,这样端口能够更快进入转发状态。
|
|
|
|
|
|
|
|
|
|
|
|
### 根保护 Root Protection
|
|
|
|
|
|
|
|
|
|
|
|
用于防止接入层或下游设备错误地抢占根桥位置,保证预期的根桥不被替换。
|
|
|
|
|
|
|
|
|
|
|
|
### BPDU 保护
|
|
|
|
|
|
|
|
|
|
|
|
一般用于边缘端口。当边缘端口意外收到 BPDU 时,设备可以采取保护动作,防止网络拓扑异常。
|
|
|
|
|
|
|
|
|
|
|
|
### 环路保护 Loop Protection
|
|
|
|
|
|
|
|
|
|
|
|
用于降低某些异常场景下端口错误切换带来的风险。
|
|
|
|
|
|
|
|
|
|
|
|
## 一句话理解
|
|
|
|
|
|
|
|
|
|
|
|
- **生成树的本质是“阻塞冗余链路中的一部分端口,避免二层环路”**
|
|
|
|
|
|
- **RSTP 比 STP 收敛更快**
|
|
|
|
|
|
- **MSTP 适合多 VLAN 场景**
|
|
|
|
|
|
|
|
|
|
|
|
## 常见厂商命令
|
|
|
|
|
|
|
|
|
|
|
|
### 华为
|
|
|
|
|
|
|
|
|
|
|
|
查看生成树状态:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
display stp
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
查看某接口生成树状态:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
display stp interface GigabitEthernet 0/0/1
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
查看 MSTP 配置:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
display stp region-configuration
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
开启 STP:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
stp enable
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
把交换机优先级调低,提升其成为根桥的概率:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
stp priority 4096
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
把接口配置为边缘端口:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
stp edged-port enable
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
配置根保护:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
stp root-protection
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 思科 Cisco
|
|
|
|
|
|
|
|
|
|
|
|
查看生成树状态:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
show spanning-tree
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
查看某 VLAN 的生成树信息:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
show spanning-tree vlan 10
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
查看某接口生成树状态:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
show spanning-tree interface gigabitEthernet 0/1
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
启用快速生成树:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
spanning-tree mode rapid-pvst
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
把交换机设为根桥优先:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
spanning-tree vlan 10 root primary
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
把接入口设为边缘端口:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
spanning-tree portfast
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
启用 BPDU Guard:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
spanning-tree bpduguard enable
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 复习时容易写错的点
|
|
|
|
|
|
|
|
|
|
|
|
- 生成树的核心是“防环”,不是“包重复了再丢弃”
|
|
|
|
|
|
- 根桥是选举出来的,根端口和指定端口也是计算出来的
|
|
|
|
|
|
- MSTP 不是单纯“更高级的 STP”,它的重要特点是支持多实例
|
|
|
|
|
|
- 是否默认开启生成树,要看具体厂商和设备型号,不要写得太绝对
|