二层环路避免-STP技术
二层环路避免-STP技术
回顾交换机的工作流程
交换机学习数据里面的MAC地址,并通过查找MAC地址表进行转发,如果没有,则广播并学习MAC地址。
LAN以太网的应用场景
环路引起的问题之一——广播风暴
在一个环路里面,如果交换机要广播发送数据包,那么交换机A和交换机B就会发生无限循环的现象,A广播给B,B又会广播回去。
环路引起的问题之二——交换机MAC地址表不稳定
PCA发送数据包给交换机A,交换机A会记录MAC地址和相对应的端口,当交换机A广播发送给B,B又会广播回来,而从E0/4收到B的广播包,源MAC还是PCA的MAc地址,但是端口却变成了E0/4,此时交换机就会刷新MAC的地址表,循环往复,MAC地址表会一直刷新,造成混乱。
环路的危害总结
- 环路的现象
- 交换机端口指示灯以相同的频率快速闪烁
- 交换机MAC地址表震荡
- 环路的危害——广播风暴
- 链路堵塞
- 广播报文在二层网络中不断泛洪,所有链路都被大量的广播报文充斥
- 主机操作系统响应迟缓
- 主机网卡收到大量的广播报文,操作系统调用大量的CPU进程资源来识别这些广播报文
- 二层交换机管理缓慢
- 大量二层协议广播报文需要二层交换机CPU处理,浪费大量资源,对正常的请求无法响应
- 冲击网关设备的CPU
- 对网关IP地址的ARP请求报文,经过环路的复制转发,不断的发送到网关设备,网关设备的CPU压力不断增大,甚至崩溃
- 链路堵塞
生成树协议的概念及应用场景
- STP(Spanning Tree Protocol,生成树协议)是用于在局域网中消除数据链路层逻辑环路的协议
- 通过在桥之间交换BPDU(Bridge Protocol Data Unit,桥协议数据单元),来保证设备完成生成树的计算过程
STP的作用
阻塞某端口后
链路备份
802.1D生成树的原理
生成树工作原理
配置了生成树的交换机之间通过传递配置BPDU,比较报文中携带的参数,完成以下工作:
- 在一组运行STP的交换机中选出一个网桥(Root Bridge)
- 每个非根交换机选择一个根端口(Root Port RP)
- 每个交换链路选择一个除根端口之外的转发端口——指定端口(Designated Port DP)
- 堵塞其他(非根非指定端口即阻塞端口)端口
生成树基本计算过程-选举根交换机
比较网桥ID,ID越小,优先级越高,优先级最高的就是根交换机。
生成树基本计算过程-选举非根交换机的根端口
这个可以理解为:哪个端口离交换机越近,哪个端口就是根端口。
生成树基本计算过程-选举网段的指定端口
在A和B中,左下方的端口已经是根端口了,所以左上方的端口没有端口和他抢指定端口,A和C同理。
B和C的下方连接的是主机。主机是没有STP协议的,不会发送BPDU,所以也不会抢指定端口。
重点在B和C之间,也是直接比较网桥ID,B小,优先级高,那么B这边就是指定端口。C那边就是堵塞端口。
配置BPDU参数
网桥ID由交换机的优先级与MAC地址组成。
网桥优先级取值范围0-65535(默认32768),必须是4096的倍数
端口ID由发送端口的优先级与端口号组成。
端口优先级取值范围0-255(默认128),必须是16的倍数
端口ID一般用于这种情况:
交换机1的F0/1和F0/2抢指定端口,明显F0/1要小,所以是指定端口。
STP协议报文
BPDU的优劣
配置BPDU的比较
交换机遵循下面的比较原则,比较各个端口接收或缓存的BPDU,选择“最优”BPDU
- 先比较根网桥ID
- 如果根网桥ID相等,根路径开销越小越好
- 如果根网桥和根路径开销相等,发送网桥ID越小越好
- 如果根网桥ID、根路径开销和发送网桥ID相等,发送端口ID越小越好。
BPDU报文处理
- BPDU在网络中的中继过程
- 网络起始,STP启动,交换机都认为自己是根网桥,发送BPDU。
- BPDU在网络的中继过程
- 网络稳定,根网桥发送BPDU,其他交换机中继根网桥的BPDU。
- STP端口判定
- 选举根网桥,比较网桥ID,根网桥上的所有端口都是指定端口。
- 选择根端口,依次比较根路径开销、发送方网桥ID、发送方端口ID。
- 选择指定端口,依次比较根路径开销、发送方网桥ID、发送方端口ID。
STP端口状态描述
STP端口状态迁移
-
STP计时器
-
Hello Timer(Hello时间)
- 根网桥发送配置BPDU的周期,默认为2秒。
-
Forward Delay(转发时延)
- 配置BPDU传播到全网的最大时延,默认为15秒。
-
Message Age(消息老化时间)
- 配置BPDU从根网桥生成开始,到当前为止所经过的时间。相当于存活时间。
-
Max Message Age(最大老化时间)
- 批评者BPDU存活时间
- STP默认为20秒。(10个Hello周期)
-
STP端口状态迁移
网络拓扑变化——STP网络收敛
- 直接收敛与间接收敛
可以理解为影响一个交换机,就是直接收敛,影响两个或以上,那就是间接收敛。
STP基本配置
- Cisco
- Cisco交换机默认开启STP,只需要配置根网桥优先级和边缘端口
- 华为/华三
- 华三交换机默认关闭STP,只需要手工为每台交换机开启STP。
- 开启STP后,默认协议为MSTP。
🧠 一、为什么需要STP?
⚠️ 以太网环路的危害
在以太网中,广播帧(如ARP请求)会被所有交换机转发,如果网络中有环路,广播帧就会被不停地转发——产生“广播风暴”。
此外,环路还会导致:
- MAC地址表不停变化 → 交换机学错地址
- 多次转发同一个帧 → 带宽被浪费
- 整个网络瘫痪
为了防止这种情况,STP协议可以自动关闭部分冗余链路,形成一个无环路的“生成树”拓扑结构。
🌳 二、STP基本原理
STP的目标是:
在一个有环的交换网络中选择一条主干路径,把其他冗余路径阻塞,形成一棵无环的树形结构。
STP核心机制:
- 选出一个根桥(Root Bridge)
- 计算每台交换机到根桥的最短路径
- 决定每条链路的状态:转发(Forwarding)或阻塞(Blocking)
🏗️ 三、STP工作过程详解
🧩 1. 选举根桥(Root Bridge)
每个交换机都有一个 桥 ID(Bridge ID):
- 由两部分组成:桥优先级(默认32768) + MAC地址
- 比较桥 ID 大小,数值最小的成为根桥
例子:优先级相同,则比MAC地址;MAC地址最小的交换机被选为Root Bridge
🧭 2. 计算到根桥的路径成本(Path Cost)
每台非根桥的交换机,需要通过路径成本来决定最优路径。
路径成本 = 所经过链路的带宽成本(越高带宽越低成本)
带宽 | 成本值 |
---|---|
10 Mbps | 100 |
100 Mbps | 19 |
1 Gbps | 4 |
10 Gbps | 2 |
🪜 3. 确定端口角色(Port Roles)
每台交换机会通过STP算法确定端口的角色:
角色 | 含义 |
---|---|
根端口(RP) | 连接到根桥的最短路径端口,每台交换机只有一个 |
指定端口(DP) | 每段网段上负责转发的端口 |
非指定端口(Blocked) | 冗余端口,避免环路,处于阻塞状态 |
🔄 4. 端口状态(Port State)
端口可能处于以下五种状态(STP经典五状态):
状态 | 含义 |
---|---|
Disabled | 被手动禁用 |
Blocking | 阻塞状态,监听BPDU,禁止数据转发 |
Listening | 启动监听BPDU,不学习MAC |
Learning | 学习MAC地址,不转发数据 |
Forwarding | 正常转发和学习MAC |
STP工作过程中端口会从Blocking → Listening → Learning → Forwarding(约需50秒)
📩 四、BPDU(桥协议数据单元)
BPDU 是STP用于交换信息的控制帧,类型有:
- 配置BPDU(Configuration BPDU):主要传输生成树信息
- TCN BPDU(Topology Change Notification):拓扑变化通知
交换机之间通过定期发送BPDU来决定:
- 谁是根桥
- 哪些端口该转发,哪些要阻塞
🧠 五、STP优缺点
✅ 优点:
- 自动避免环路,提升网络稳定性
- 支持冗余链路,提高容错性
❌ 缺点:
- 收敛慢(50秒):链路变化后需要时间恢复
- 不能充分利用所有链路,部分链路被阻塞
⚙️ 六、STP的改进版本
协议 | 特点 |
---|---|
RSTP (802.1w) | 快速生成树,3~5秒收敛,取代传统STP |
MSTP (802.1s) | 多生成树协议,支持VLAN映射多个生成树 |
PVST+ | Cisco私有协议,基于每个VLAN生成一棵树 |
🧪 七、实际配置示例(Cisco)
bash复制编辑# 设置优先级(数值越小越优先)
Switch(config)#spanning-tree vlan 1 priority 24576# 查看生成树信息
Switch#show spanning-tree# 设置端口为边缘端口(防止延迟)
Switch(config-if)#spanning-tree portfast
🧭 八、一图理解STP过程:
lua复制编辑 +---------+ +---------+| SwitchA |--------| SwitchB |+---------+ +---------+\ /\ /\ /+---------+| SwitchC |+---------+- 先选出 Root Bridge(比如A)
- 其他交换机计算到A的路径成本
- 决定各端口角色
- 冗余的端口进入Blocking状态,形成无环拓扑
✅ 九、总结
关键概念 | 说明 |
---|---|
根桥(Root Bridge) | STP结构的核心,由优先级+MAC最小选出 |
BPDU | 用于交换生成树信息的协议帧 |
端口角色 | 根端口、指定端口、非指定端口(阻塞) |
状态流程 | Blocking → Listening → Learning → Forwarding |
STP问题 | 收敛慢,可通过RSTP、MSTP等优化 |