2024-08-27 20:02:53 +08:00
|
|
|
|
# STP 生成树协议
|
|
|
|
|
|
|
|
|
|
### 一、为什么需要STP协议
|
|
|
|
|
|
|
|
|
|
1. 局域网中容易出现的问题
|
|
|
|
|
|
|
|
|
|
- 单点故障和单链路故障,即:当某一条链路故障或某一台设备故障导致大面积主机网络中断
|
|
|
|
|
|
|
|
|
|
2. 如何预防单点故障和单链路故障
|
|
|
|
|
|
|
|
|
|
- 增加冗余/备份设备:预防单点故障
|
|
|
|
|
- 增加冗余/备份链路:预防单链路故障
|
|
|
|
|
|
|
|
|
|
3. 增加冗余/备份链路后,引发的新的问题
|
|
|
|
|
|
|
|
|
|
- 交换机与交换机之间增加备份链路后:极有可能形成环状网络,形成二层环路
|
|
|
|
|
|
|
|
|
|
二层环路:极有可能会引发广播风暴
|
|
|
|
|
|
|
|
|
|
广播风暴一旦形成:会造成网络拥塞,设备宕机,网络不可用
|
|
|
|
|
|
|
|
|
|
4. 如何解决因二层环路所导致的广播风暴?
|
|
|
|
|
|
|
|
|
|
- STP协议可以解决二层环路:STP会形成一个物理有环,逻辑无环的网络
|
|
|
|
|
|
|
|
|
|
### 二、STP协议
|
|
|
|
|
|
|
|
|
|
1. **STP是什么**
|
|
|
|
|
|
|
|
|
|
> STP:Spanning Tree Protocol 生成树协议
|
|
|
|
|
|
|
|
|
|
2. **STP的作用(如何实现逻辑无环,如何防止广播风暴)**
|
|
|
|
|
|
|
|
|
|
> 所有交换机物理互相连接
|
|
|
|
|
>
|
|
|
|
|
> 所有交换机启动后,都运行生成树协议
|
|
|
|
|
>
|
|
|
|
|
> 通过生成树协议,逻辑上阻塞端口,从而形成一个逻辑无环拓扑,避免广播风暴。
|
|
|
|
|
>
|
|
|
|
|
> 当现在链路出现问题,被阻塞的链路可以重新启用,从而形成新逻辑无环拓扑,起到了链路备份的作用
|
|
|
|
|
|
|
|
|
|
3. **STP的工作原理**
|
|
|
|
|
|
|
|
|
|
- 步骤1:选举根网桥(Root Bridge),作为整个网络的根
|
|
|
|
|
- 步骤2:确定根端口(Root Port RP),在每个非根交换机上选举1个根端口-(RP-根端口)
|
|
|
|
|
- 步骤3:确定指端口(Designated Port DP),在每条链路(每个网段)上选举1个指定端口-(DP-指定端口)
|
|
|
|
|
- 步骤4:阻塞备用端口(Alternate Port AP),阻塞非根、非指定端
|
|
|
|
|
|
|
|
|
|
4. **步骤1:选举根网桥**
|
|
|
|
|
|
|
|
|
|
- 比较网桥ID(BID),选择网桥ID值最小的交换机为根网桥
|
|
|
|
|
- BID:优先级+MAC(总长度8字节)
|
|
|
|
|
- 优先级:默认32768
|
|
|
|
|
- 理论范围 0-65535
|
|
|
|
|
- 实际范围 0-61440 -步长值 4096
|
|
|
|
|
|
|
|
|
|
5. **步骤2:确定根端口(Root Port RP)**
|
|
|
|
|
|
|
|
|
|
1. 每个非根交换机上选举1个根端口-(RP-根端口)
|
|
|
|
|
|
|
|
|
|
- 非根交换机到根交换机的根路径开销值最小的端口(根路径成本最小)
|
|
|
|
|
- 链路带宽 带宽越高 成本值越小
|
|
|
|
|
- 开销 cost (到达根交换机的路径成本)
|
|
|
|
|
- 默认值
|
|
|
|
|
100Mbit端口【200000】
|
|
|
|
|
1000Mbit(1G)端口【20000】
|
|
|
|
|
10000Mbit(10G)端口【2000】
|
|
|
|
|
|
|
|
|
|
2. BID:优先级+MAC(对端设备的)
|
|
|
|
|
|
|
|
|
|
3. PID(端口ID):优先级+端口号 (对端设备的)
|
|
|
|
|
|
|
|
|
|
> 端口优先级:默认值128 范围:0-240 步长值:16
|
|
|
|
|
|
|
|
|
|
6. **步骤3:确定指端口(Designated Port DP)**
|
|
|
|
|
|
|
|
|
|
1. 在每条链路(每个网段)上选举1个指定端口-(DP-指定端口)
|
|
|
|
|
|
|
|
|
|
- 一条链路上到根交换机的根路径开销值最小的端口(根路径成本最小)
|
|
|
|
|
|
|
|
|
|
> 根桥上的接口都是指定端口
|
|
|
|
|
|
|
|
|
|
2. 如果根路径成本相同则对比端口所在交换机的网桥ID,网桥ID小的端口为指定端(端口自己所在的网桥ID)
|
|
|
|
|
|
|
|
|
|
3. PID(端口ID):优先级+端口号(自己的)
|
|
|
|
|
|
|
|
|
|
> 端口优先级:默认值128 范围:0-240 步长值:16
|
|
|
|
|
|
|
|
|
|
7. **STP基础配置**
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
[SW1]display stp //查看生成树状态信息
|
|
|
|
|
[SW1]display bridge mac-address //查看交换机自己的MAC
|
|
|
|
|
[SW1]display stp brief //查看接口STP简要信息
|
|
|
|
|
[SW1]stp priority 4096 //修改BID中的优先级
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
8. **BPDU报文**
|
|
|
|
|
|
|
|
|
|
1. BPDU:桥协议数据单元
|
|
|
|
|
- 作用:交换机之间通过周期性发送BPDU报文,来实现STP功能
|
|
|
|
|
2. BPDU的四个重要字段
|
|
|
|
|
- 根网桥ID:根交换机的BID
|
|
|
|
|
- 根路径开销:本端口累计到根桥的开销值(cost值)
|
|
|
|
|
- 发送网桥ID:本交换机的BID
|
|
|
|
|
- 端口ID:发送该BPDU报文的端口的ID
|
|
|
|
|
3. BPDU 类型
|
|
|
|
|
- 配置 BPDU 和拓扑变更 BPDU。
|
|
|
|
|
|
|
|
|
|
9. **STP端口的5种状态**
|
|
|
|
|
|
|
|
|
|
- 禁用(disabled) :强制关闭,没有启动STP协议
|
|
|
|
|
- 阻塞(blocking):只接收BPDU报文,不发送BPDU报文
|
|
|
|
|
- 侦听(Listening):比较BPDU报文,确定交换机角色和端口角色
|
|
|
|
|
- 学习(Learning):基于端口上收到的数据帧,学习MAC地址表
|
|
|
|
|
- 转发(forwardding):端口最终的状态,能够发送和接收用户数据
|
|
|
|
|
|
|
|
|
|
10. **STP 3种的计时器**
|
|
|
|
|
|
|
|
|
|
1. hello 时间:端口发送的BPDU报文的时间间隔:默认是2秒
|
|
|
|
|
2. 转发延迟(forward delay):侦听—学习:15秒 、学习—转发:15秒
|
|
|
|
|
3. 最大老化时间(Max Age):一个端口最大的“没有接收BPDU”的时间间隔:20秒
|
|
|
|
|
|
|
|
|
|
> 50秒的转发延迟
|
|
|
|
|
|
|
|
|
|
### 三、RSTP快速生成树协议
|
|
|
|
|
|
|
|
|
|
1. **RSTP:快速生成树,在STP的基础上优化而来**
|
|
|
|
|
- 作用:实现网络的快速收敛,降低网络故障时间,提高数据转发的效率
|
|
|
|
|
2. **RSTP对STP的改进**
|
|
|
|
|
- 引入了P/A 机制(让指定端口尽快进入转发状态)
|
|
|
|
|
- 增加了2种端口角色(BP和AP)
|
|
|
|
|
- Backup Port(备份端口)是指定端口的备份端口。
|
|
|
|
|
- Alternate Port(备用端口)是根端口的替换端口。
|
|
|
|
|
- 减少了3种端口状态(禁用、阻塞、侦听三种状态合为一种)
|
|
|
|
|
|
|
|
|
|
### 四、MSTP多生成树协议
|
|
|
|
|
|
|
|
|
|
1. **MSTP概述**
|
|
|
|
|
|
|
|
|
|
1. MSTP作用
|
|
|
|
|
|
|
|
|
|
- 默认生成树协议只形成一个网络拓扑,不能有效利用所有网络带宽
|
|
|
|
|
- 为了实现网络的负载均衡,需要让网络形成多个无环拓扑,让不同vlan的主机,选择不同的拓扑来传数据
|
|
|
|
|
|
|
|
|
|
2. 端口状态
|
|
|
|
|
|
|
|
|
|
- Discarding (丢弃):相当于STP中的禁用、侦听、阻塞,不转发用户数据
|
|
|
|
|
- Learning(学习):和STP 中的学习状态相同
|
|
|
|
|
- Forwarding(转发):和STP中的转发状态相同
|
|
|
|
|
|
|
|
|
|
3. MSTP配置
|
|
|
|
|
|
|
|
|
|
- 每个交机创建vlan,交换相连的接口配置为trunk
|
|
|
|
|
|
|
|
|
|
- 配置STP模式为MSTP
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
[SW1]stp mode mstp //修改mstp模式(华为设备默认模式MSTP)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
> 交换机创建MSTP域、定义域名,实例和vlan的对应关系
|
|
|
|
|
>
|
|
|
|
|
> 交换机上激活MSTP区域配置
|
|
|
|
|
|
|
|
|
|
2. **配置MSTP,由SW1为vlan10的根,SW2为vlan20的根**
|
|
|
|
|
|
|
|
|
|
- 配置步骤
|
|
|
|
|
|
|
|
|
|
1. 在所有的交换机中都创建vlan10和vlan20
|
|
|
|
|
2. 交换机连接PC的接口设置为access模式,并加入指定的vlan
|
|
|
|
|
3. 交换机和交换机互联的接口设置trunk模式,并允许vlan10和vlan20 通过
|
|
|
|
|
4. 在所有的交换机中配置MSTP,所有交换机中的MSTP配置都要完全相同
|
|
|
|
|
5. 指定SW1为vlan10的主根
|
|
|
|
|
6. 指定SW2为vlan20的主根
|
|
|
|
|
|
|
|
|
|
- 配置命令
|
|
|
|
|
|
|
|
|
|
- S1、S2、S3创建vlan并配置连接交换机的端口为trunk
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
[S1]vlan batch 10 20
|
|
|
|
|
[S1]port-group 1
|
|
|
|
|
[S1-port-group-1]group-member g0/0/5 g0/0/6
|
|
|
|
|
[S1-port-group-1]port link-type trunk
|
|
|
|
|
[S1-port-group-1]port trunk allow-pass vlan 10 20
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
[S2]vlan batch 10 20
|
|
|
|
|
[S2]port-group 1
|
|
|
|
|
[S2-port-group-1]group-member g0/0/5 g0/0/6
|
|
|
|
|
[S2-port-group-1]port link-type trunk
|
|
|
|
|
[S2-port-group-1]port trunk allow-pass vlan 10 20
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
[S3]vlan batch 10 20
|
|
|
|
|
[S3]port-group 1
|
|
|
|
|
[S3-port-group-1]group-member g0/0/5 g0/0/6
|
|
|
|
|
[S3-port-group-1]port link-type trunk
|
|
|
|
|
[S3-port-group-1]port trunk allow-pass vlan 10 20
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
- 配置PC1加入vlan10、PC2加入vlan20
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
[S3]interface GigabitEthernet 0/0/1
|
|
|
|
|
[S3-GigabitEthernet0/0/1]port link-type access
|
|
|
|
|
[S3-GigabitEthernet0/0/1]port default vlan 10
|
|
|
|
|
[S3]interface GigabitEthernet 0/0/2
|
|
|
|
|
[S3-GigabitEthernet0/0/2]port link-type access
|
|
|
|
|
[S3-GigabitEthernet0/0/2]port default vlan 20
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
- S1、S2、S3配置MSTP区域并激活
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
[S1]stp mode mstp 启用MSTP协议
|
|
|
|
|
[S1]stp region-configuration 创建MSTP区域
|
|
|
|
|
[S1-mst-region]region-name ntd定义区域名为ntd
|
|
|
|
|
[S1-mst-region]instance 1 vlan 10指定实例与vlan的对应关系
|
|
|
|
|
[S1-mst-region]instance 2 vlan 20
|
|
|
|
|
[S1-mst-region]active region-configuration激活区域配置
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
[S2]stp mode mstp 启用MSTP协议
|
|
|
|
|
[S2]stp region-configuration 创建MSTP区域
|
|
|
|
|
[S2-mst-region]region-name ntd定义区域名为ntd
|
|
|
|
|
[S2-mst-region]instance 1 vlan 10指定实例与vlan的对应关系
|
|
|
|
|
[S2-mst-region]instance 2 vlan 20
|
|
|
|
|
[S2-mst-region]active region-configuration激活区域配置
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
[S3]stp mode mstp 启用MSTP协议
|
|
|
|
|
[S3]stp region-configuration 创建MSTP区域
|
|
|
|
|
[S3-mst-region]region-name ntd定义区域名为ntd
|
|
|
|
|
[S3-mst-region]instance 1 vlan 10指定实例与vlan的对应关系
|
|
|
|
|
[S3-mst-region]instance 2 vlan 20
|
|
|
|
|
[S3-mst-region]active region-configuration激活区域配置
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
- 配置SW1为vlan10的根、SW2为vlan20的根
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
[S1]stp instance 1 priority 4096
|
|
|
|
|
[S2]stp instance 2 priority 4096
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
- 查看验证
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
<S1>display stp instance 1 brief
|
|
|
|
|
查看S1的instance 1 g0/0/5 g0/0/6都是指定接口
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
<S2>display stp instance 2 brief
|
|
|
|
|
查看S2的instance 2 g0/0/5 g0/0/6都是指定接口
|
|
|
|
|
```
|
|
|
|
|
|
2024-08-29 08:54:45 +08:00
|
|
|
|
3. 实验MSTP负载均衡
|
|
|
|
|
|
|
|
|
|
![image-20240828193446020](https://picgo-noriu.oss-cn-beijing.aliyuncs.com/Images/image-20240828193446020.png)
|
|
|
|
|
|
|
|
|
|
- 需求
|
|
|
|
|
|
|
|
|
|
- PC1属于 vlan 10 ,IP地址为 192.168.10.1/24,网关为 192.168.10.254
|
|
|
|
|
- PC2属于 vlan 20 ,IP地址为 192.168.20.1/24,网关为 192.168.20.254
|
|
|
|
|
- 确保PC1与PC2互通
|
|
|
|
|
- 配置 MSTP ,SW1为 vlan10的主根、vlan20的次根,SW2为vlan10的主根、vlan10的次根
|
|
|
|
|
|
|
|
|
|
- 配置步骤
|
|
|
|
|
|
|
|
|
|
1. 配置PC的IP地址
|
|
|
|
|
2. 在所有的交换机中都创建vlan10和vlan20
|
|
|
|
|
3. 交换机连接PC的接口设置为access模式,并加入指定的vlan
|
|
|
|
|
4. 交换机和交换机互联的接口设置trunk模式,并允许vlan10和vlan20 通过
|
|
|
|
|
5. 在所有的交换机中配置MSTP,所有交换机中的MSTP配置都要完全相同
|
|
|
|
|
6. 指定SW1为vlan10的主根, vlan20的备根
|
|
|
|
|
7. 指定SW2为vlan20的主根, vlan10的备根
|
|
|
|
|
8. 配置路由器接口的IP地址
|
|
|
|
|
|
|
|
|
|
- 配置命令
|
|
|
|
|
|
|
|
|
|
- S1、S2、S3创建vlan并配置连接交换机的端口为trunk
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
[S1]VLAN batch 10 20
|
|
|
|
|
[S1]port-group 1
|
|
|
|
|
[S1-port-group-1]group-member G0/0/5 G0/0/6
|
|
|
|
|
[S1-port-group-1]port link-type trunk
|
|
|
|
|
[S1-GigabitEthernet0/0/5]port trunk allow-pass vlan ALL
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
[S2]VLAN batch 10 20
|
|
|
|
|
[S2]port-group 1
|
|
|
|
|
[S2-port-group-1]group-member G0/0/5 G0/0/6
|
|
|
|
|
[S2-port-group-1]port link-type trunk
|
|
|
|
|
[S2-GigabitEthernet0/0/5]port trunk allow-pass vlan ALL
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
[S3]VLAN batch 10 20
|
|
|
|
|
[S3]port-group 1
|
|
|
|
|
[S3-port-group-1]group-member G0/0/5 G0/0/6
|
|
|
|
|
[S3-port-group-1]port link-type trunk
|
|
|
|
|
[S3-GigabitEthernet0/0/5]port trunk allow-pass vlan ALL
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
- S1、S2、S3配置MSTP区域并激活
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
[S1]stp mode mstp 启用MSTP协议
|
|
|
|
|
[S1]stp region-configuration 创建区域
|
|
|
|
|
[S1-mst-region]region-name ntd 定义区域名为ntd
|
|
|
|
|
[S1-mst-region]instance 1 vlan 10 指定vlan与实例的对应关系
|
|
|
|
|
[S1-mst-region]instance 2 vlan 20
|
|
|
|
|
[S1-mst-region]active region-configuration 激活区域配置
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
[S2]stp mode mstp 启用MSTP协议
|
|
|
|
|
[S2]stp region-configuration 创建区域
|
|
|
|
|
[S2-mst-region]region-name ntd 定义区域名为ntd
|
|
|
|
|
[S2-mst-region]instance 1 vlan 10 指定vlan与实例的对应关系
|
|
|
|
|
[S2-mst-region]instance 2 vlan 20
|
|
|
|
|
[S2-mst-region]active region-configuration 激活区域配置
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
[S3]stp mode mstp 启用MSTP协议
|
|
|
|
|
[S3]stp region-configuration 创建区域
|
|
|
|
|
[S3-mst-region]region-name ntd 定义区域名为ntd
|
|
|
|
|
[S3-mst-region]instance 1 vlan 10 指定vlan与实例的对应关系
|
|
|
|
|
[S3-mst-region]instance 2 vlan 20
|
|
|
|
|
[S3-mst-region]active region-configuration 激活区域配置
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
- 配置S1为vlan10的主根、vlan20的次根网桥并查看配置
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
[S1]stp instance 1 priority 0
|
|
|
|
|
[S1]stp instance 2 priority 4096
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
- 配置S2为vlan20的主根、vlan10的次根根网桥并查看配置
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
[S2]stp instance 2 priority 0
|
|
|
|
|
[S2]stp instance 1 priority 4096
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
- 配置PC1加入vlan10、PC2加入vlan20
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
[S3]interface GigabitEthernet 0/0/1
|
|
|
|
|
[S3-GigabitEthernet0/0/1]port link-type access
|
|
|
|
|
[S3-GigabitEthernet0/0/1]port default vlan 10
|
|
|
|
|
[S3]interface GigabitEthernet 0/0/2
|
|
|
|
|
[S3-GigabitEthernet0/0/2]port link-type access
|
|
|
|
|
[S3-GigabitEthernet0/0/2]port default vlan 20
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
- 配置S1与路由相连的接口加入vlan10
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
[S1]interface GigabitEthernet 0/0/1
|
|
|
|
|
[S1-GigabitEthernet0/0/1]port link-type access
|
|
|
|
|
[S1-GigabitEthernet0/0/1]port default vlan 10
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
- 配置S2与路由相连的接口加入 vlan20
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
[S2]interface GigabitEthernet 0/0/2
|
|
|
|
|
[S2-GigabitEthernet0/0/2]port link-type access
|
|
|
|
|
[S2-GigabitEthernet0/0/2]port default vlan 20
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
- 配置路由器接口IP
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
[R1]interface GigabitEthernet 0/0/1
|
|
|
|
|
[R1-GigabitEthernet0/0/1]ip address 192.168.10.254 24
|
|
|
|
|
[R1]interface GigabitEthernet 0/0/2
|
|
|
|
|
[R1-GigabitEthernet0/0/2]ip address 192.168.20.254 24
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
- 测试与验证
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
pc1 ping pc2 通
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
- 查看验证
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
<S1>display stp instance 1 brief
|
|
|
|
|
查看S1的instance 1 g0/0/5 g0/0/6都是指定接口
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
<S2>display stp instance 2 brief
|
|
|
|
|
查看S2的instance 2 g0/0/5 g0/0/6都是指定接口
|
|
|
|
|
```
|