Files

199 lines
4.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# STP、RSTP、MSTP
## 作用
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”,它的重要特点是支持多实例
- 是否默认开启生成树,要看具体厂商和设备型号,不要写得太绝对