本文概览
为了更好地理解物理链路环路对网络的影响,需要大致了解以太网交换机自学习和转发帧的过程。后文中的 "交换机" 均表示以太网二层交换机。
交换机自学习和转发帧的过程
交换机 Switch 是一种网络设备,用于在局域网内连接多个网络设备,接收其发送的数据帧。基于目标 MAC 地址决定转发或丢弃数据帧,以及数据帧从哪个端口转发出去。交换机有多个端口,每个端口都被隔离成自己的碰撞域,即连接某个端口的网络设备独占整个带宽。
交换机在网络中肩负着至关重要的角色,它以一种即插即用的方式,实现了网络设备之间的高效数据传输。在交换机刚启动时,其内部的帧交换表是空的。随着网络中各设备之间的通信,交换机通过自学习算法逐渐建立起帧交换表。
- 交换机接收某个端口的数据帧,通过数据帧的源 MAC 地址,就可以知道哪些设备连接此端口,记录下来用于转发数据帧时,根据目标 MAC 地址选择对应的端口
- 交换机根据目标 MAC 地址决定丢弃数据帧、转发数据帧及转发端口
- 如果不知道目标 MAC 地址对应的转发端口,则将数据帧转发给除接收端口外的全部端口
- 如果明确知道目标 MAC 地址对应的转发端口,则仅转发数据帧至对应端口
- 如果目标 MAC 地址和源端口一致,则丢弃此数据帧
下面我们来举例说明交换机的自学习和帧转发过程,网络拓扑如下图所示。假设各设备知道网络中其它设备的 MAC 地址(无需进行 ARP)。
- 交换机 1 的端口 1、2、3 分别连接了网络设备 A、B、C,交换机 2 的端口 4 连接网络设备 E。
- 交换机 1 的端口 4 和交换机 2 的端口 2 相连。
自学习过程
- 设备 A 发送数据帧至设备 C,交换机 1 的端口 1 接收到此数据帧
- 交换机 1 将数据帧的源 MAC 地址和接收端口 1 记录到自己的帧交换表中,这个记录的行为就是交换机的自学习
转发帧过程
交换机 1 自学习之后,根据目标 MAC 地址和交换机的帧交换表,决定转发或丢弃数据帧。其中包括三种情况,泛洪、明确转发和丢弃。
泛洪
- 交换机 1 记录源 MAC 地址和接收端口的映射关系到帧交换表后,开始转发数据帧
- 交换机 1 在帧交换表中查找数据帧的目标 MAC 地址,发现没有匹配项,交换机 1 向除端口 1 以外的全部端口广播这个帧,即泛洪
- 设备 B、E 收到此数据帧,发现目标 MAC 地址不是自己,丢弃此数据帧
- 设备 C 收到此数据帧,发现目标 MAC 地址是自己,接收此数据帧
明确转发数据帧
- 设备 C 发送数据帧至设备 A,交换机 1 的端口 3 接收到此数据帧
- 交换机 1 将数据帧的源 MAC 地址和接收端口记录到自己的帧交换表中
- 交换机 1 在帧交换表中查找数据帧的目标 MAC 地址,成功获取到目标 MAC 地址对应的端口 1,将数据帧仅转发至端口 1
- 设备 A 收到此数据帧,发现目标 MAC 地址是自己,接收此数据帧
丢弃数据帧
- 设备 A 发送数据帧,设备 D 和交换机 1 都可以收到此数据帧
- 交换机 1 将数据帧的源 MAC 地址和接收端口记录到自己的帧交换表中
- 交换机 1 在帧交换表中查找数据帧的目标 MAC 地址,成功获取到目标 MAC 地址对应的端口 1,发现端口 1 和源端口一致,丢弃此数据帧
STP 协议
Spanning Tree Protocol,即 STP 协议,用于为以太网构建无环路的逻辑拓扑。
STP 出现的背景
如图所示,设备 A、B、C 互相通信需要通过交换机 1、2、3。当交换机 1 出现故障时,设备 A 无法与 B、C 通信,此种现象称之为单点故障。为了解决单点故障的问题,提高网络的可靠性,需要在物理上冗余备份链路,如下图所示。交换机 1 和交换机 3 之间添加了一条冗余链路,当交换机 1 与交换机 2 间的链路出现故障时,设备 A 仍旧可以通过交换机 3 与 B、C 通信。
根据交换机自学习和转发帧的过程的解析,当网络物理拓扑中存在环路时,会带来以下问题
- 交换机自学习过程中,帧交换表震荡,MAC 地址表项不断被破坏和变化
-
设备 A 发送一个广播包
-
交换机 1 的端口 2 收到广播包,根据数据帧的源 MAC 地址添加端口映射关系,并转发数据帧到端口 1、3
-
交换机 2 和交换机 3 同理,将数据帧转发给其他端口
-
交换机 1 的端口 3 收到此数据帧,源 MAC 地址仍旧为设备 A 的 MAC 地址,而对应端口变成了 3
-
数据帧在环路中不断转发,即广播风暴,消耗大量的网络资源,影响网络中的其他数据帧的转发性能,甚至无法转发
-
在环路中的设备收到重复的数据帧,同样也会消耗设备资源
STP 协议的作用
STP 协议通过阻塞交换机端口,令其不再转发数据帧,使得环路被裁剪成一棵树,达到 在逻辑上消除环路的目的 在链路发生故障后,激活备份链路,及时恢复网络连通性。
- 消除环路:允许网络物理拓扑中存在备份链路,消除逻辑拓扑上的二层环路
- 备份链路:发生故障后使用备份链路,及时恢复网络,提高网络的可靠性
STP 协议过程解析
在解析 STP 协议的具体过程前,先来了解一下 STP 协议中的重要组成部分。
STP 协议的重要概念
- 根桥 Root Bridge,是整个 STP 网络的逻辑中心,一般会选择性能高的交换设备作为根桥。根桥没有根端口,根桥的全部端口都是指定端口。
- 根端口 Root Port,交换机上距离根桥路径最短的端口,每个交换机上最多有一个根端口,负责向根桥方向转发数据。
- 指定端口 Designated Port,交换机向所连网段转发配置消息的端口,每个网段只能有一个指定端口。
- 阻塞端口 Blocked Port,如果一个端口既不是根端口又不是指定端口,这个端口将被阻塞。被阻塞的端口仅接受 BPDU 消息,不会接受或发送其他非 BPDU 的数据帧。
- BPDU Bridge Protocol Data Units,STP 生成树过程中所传递的配置消息。
STP 协议过程解析
- 选举根桥,根据根桥 ID 选举
- 根桥 ID(BID):桥优先级(默认 32769,且必须为 4096 的倍数) + 桥 MAC
- 非根桥交换机选举根端口(RP),按照以下顺序选举
- 根路径成本最低
- 对端 BID(Bridge ID)最小
- 对端 PID(Port ID)最小
- 本端 PID 最小
- 每个网段选举指定端口(DP),根桥的所有端口都是指定端口,非根桥按照以下顺序选举
- 根路径成本最低
- 对端 BID 最小
- 对端 PID 最小
- 阻塞既不是根端口也不是指定端口的端口
STP 协议实践
-
gns3 网络拓扑及配置
-
按照图中所示 BridgeID 分别配置交换机的优先级
- 进入配置模式
configure terminal
- 配置优先级
spanning-tree vlan 1 priority 4096
exit
- 查看是否配置成功
show spanning-tree
- 重复上述命令,配置其他交换机
- 进入配置模式
- 按照此拓扑推理并验证
-
Switch A,优先级 4096
-
推理:Switch A 在整个网络中优先级最高,为根桥,所有端口都为指定端口
-
验证
-
-
Switch B,优先级 20480
-
推理
e0/0 与根桥的根路径成本最低,e0/0 为 RP
e1/0 与 Switch E 相连比较,e1/0 为 DP
-
验证
-
-
Switch C,优先级 8192
-
推理
同 Switch B,e1/1 为 RP,e2/0、e3/0 为 DP
-
验证
-
-
Switch D,优先级 40960
-
推理
同 Switch B,e2/2 为 RP
-
验证
-
-
Switch E,优先级 8192
-
Switch F,优先级 12288
-
Switch G,优先级 16384
-
推理
同 Switch B,e0/0 为 RP
-
验证
-
-
关闭 Switch B,查看 Switch F 的变化
-
查看 Switch F
- 可以看到 Switch F 原先被阻塞的 e1/1 端口,由于网络拓扑的改变更新为 DP
- Switch A 感知到网络拓扑发生变化后,向 Switch C、D 发送 BPDU 报文,通知 Switch C、D 把 MAC 地址表项的老化时间由默认的 300 秒修改为 Forward Delay 的时间(默认为 15 秒)
- Switch C 继续向 Switch F 发送 BPDU 报文,Swith F 重新计算自己的 DP、RP
- 最多等待 15 秒之后,Switch F 开始 MAC 表项的学习及转发操作
STP 协议的缺点
由上可知,当网络中的某个设备发生故障不可用时,需要等待所有的网络设备接收和传播 BPDU,重新选举根桥、根端口、指定端口和阻塞端口,收敛速度慢 。而且在网络设备端口状态的转换过程中,数据流量会被阻塞,可能会加剧延时。除此之外,STP 协议对局域网仅生成一棵树,对于所有 VLAN 都使用相同的拓扑。这意味着在多个 VLAN 环境中,可能存在不必要的阻塞端口。如果需要不同的拓扑或特定的 VLAN 配置,可能需要手动配置。
总结一下,STP 协议的缺点有以下两条:
- 收敛速度慢
- 不支持 VLAN
RSTP、MSTP 协议
针对 STP 协议缺点的改进,出现了 RSTP 和 MSTP 协议
RSTP 协议
RSTP 是 STP 的改进版本,它的主要目标是加速 STP 的收敛速度。
- RSTP 引入了两种端口状态:指定端口(Designated Port)和替代端口(Alternate Port)。
- RSTP 使用不同的 BPDU 格式和机制,以快速传播拓扑变化。
- RSTP 的收敛速度较快,通常可以在数秒内响应拓扑变化,而不是 STP 的 30 秒或更长时间。
MSTP 协议
MSTP 是 STP 的另一种改进版本,旨在提供更大的灵活性,特别是在多 VLAN 环境下。
- MSTP 引入了多个实例(Instance),每个实例可以关联到一个或多个 VLAN。
- MSTP 允许管理员为每个实例配置独立的树状拓扑,支持不同 VLAN,从而提高网络的灵活性。
- MSTP 使用单一 BPDU 格式,但在每个实例中维护独立的树状拓扑,因此可以减少网络开销。
STP vs RSTP vs MSTP
特征 | STP(Spanning Tree Protocol) | RSTP(Rapid Spanning Tree Protocol) | MSTP(Multiple Spanning Tree Protocol) |
---|---|---|---|
防止环路 | 是 | 是 | 是 |
选举根桥和根端口 | 是 | 是 | 是 |
收敛速度 | 慢 | 较快 | 较快 |
支持多树状拓扑实例 | 否 | 否 | 是 |
带宽利用 | 较低 | 较高 | 较高 |
配置复杂性 | 低 | 低 | 较高 |
适用性 | 单一 VLAN 环境 | 单一 VLAN 环境 | 多 VLAN 环境 |
设备支持 | 大多数网络设备支持 | 大多数网络设备支持 | 需要支持 MSTP 的设备 |
原创不易,期待点赞收藏,任何建议欢迎评论区交流~
more about me