返回

快速理解网络协议(五)STP 协议

本文概览

本文概览
本文概览

为了更好地理解物理链路环路对网络的影响,需要大致了解以太网交换机自学习和转发帧的过程。后文中的“交换机”均表示以太网二层交换机。

交换机自学习和转发帧的过程

交换机 Switch 是一种网络设备,用于在局域网内连接多个网络设备,接收其发送的数据帧。基于目标 MAC 地址决定转发或丢弃数据帧,以及数据帧从哪个端口转发出去。交换机有多个端口,每个端口都被隔离成自己的碰撞域,即连接某个端口的网络设备独占整个带宽。

交换机在网络中肩负着至关重要的角色,它以一种即插即用的方式,实现了网络设备之间的高效数据传输。在交换机刚启动时,其内部的帧交换表是空的。随着网络中各设备之间的通信,交换机通过自学习算法逐渐建立起帧交换表。

  1. 交换机接收某个端口的数据帧,通过数据帧的源 MAC 地址,就可以知道哪些设备连接此端口,记录下来用于转发数据帧时,根据目标 MAC 地址选择对应的端口
  2. 交换机根据目标 MAC 地址决定丢弃数据帧、转发数据帧及转发端口
    • 如果不知道目标 MAC 地址对应的转发端口,则将数据帧转发给除接收端口外的全部端口
    • 如果明确知道目标 MAC 地址对应的转发端口,则仅转发数据帧至对应端口
    • 如果目标 MAC 地址和源端口一致,则丢弃此数据帧

下面我们来举例说明交换机的自学习和帧转发过程,网络拓扑如下图所示。假设各设备知道网络中其它设备的 MAC 地址(无需进行 ARP)。

网络拓扑
网络拓扑

交换机 1 的端口 1、2、3 分别连接了网络设备 A、B、C,交换机 2 的端口 4 连接网络设备 E。
交换机 1 的端口 4 和交换机 2 的端口 2 相连。

自学习过程

自学习
自学习

  1. 设备 A 发送数据帧至设备 C,交换机 1 的端口 1 接收到此数据帧
  2. 交换机 1 将数据帧的源 MAC 地址和接收端口 1 记录到自己的帧交换表中,这个记录的行为就是交换机的自学习

转发帧过程

交换机 1 自学习之后,根据目标 MAC 地址和交换机的帧交换表,决定转发或丢弃数据帧。其中包括三种情况,泛洪、明确转发和丢弃。

泛洪

泛洪
泛洪

  1. 交换机 1 记录源 MAC 地址和接收端口的映射关系到帧交换表后,开始转发数据帧
  2. 交换机 1 在帧交换表中查找数据帧的目标 MAC 地址,发现没有匹配项,交换机 1 向除端口 1 以外的全部端口广播这个帧,即泛洪
  3. 设备 B、E 收到此数据帧,发现目标 MAC 地址不是自己,丢弃此数据帧
  4. 设备 C 收到此数据帧,发现目标 MAC 地址是自己,接收此数据帧

转发数据帧

转发
转发

  1. 设备 C 发送数据帧至设备 A,交换机 1 的端口 3 接收到此数据帧
  2. 交换机 1 将数据帧的源 MAC 地址和接收端口记录到自己的帧交换表中
  3. 交换机 1 在帧交换表中查找数据帧的目标 MAC 地址,成功获取到目标 MAC 地址对应的端口 1,将数据帧仅转发至端口 1
  4. 设备 A 收到此数据帧,发现目标 MAC 地址是自己,接收此数据帧

丢弃数据帧

丢弃
丢弃

  1. 设备 A 发送数据帧,设备 D 和交换机 1 都可以收到此数据帧
  2. 交换机 1 将数据帧的源 MAC 地址和接收端口记录到自己的帧交换表中
  3. 交换机 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 通信。

冗余备份
冗余备份

根据交换机自学习和转发帧的过程的解析,当网络物理拓扑中存在环路时,会带来以下问题

  1. 交换机自学习过程中,帧交换表震荡,MAC 地址表项不断被破坏和变化

    MAC 地址震荡
    MAC 地址震荡

    • 设备 A 发送一个广播包
    • 交换机 1 的端口 2 收到广播包,根据数据帧的源 MAC 地址添加端口映射关系,并转发数据帧到端口 1、3
    • 交换机 2 和交换机 3 同理,将数据帧转发给其他端口
    • 交换机 1 的端口 3 收到此数据帧,源 MAC 地址仍旧为设备 A 的 MAC 地址,而对应端口变成了 3
  2. 数据帧在环路中不断转发,即广播风暴,消耗大量的网络资源,影响网络中的其他数据帧的转发性能,甚至无法转发

  3. 在环路中的设备收到重复的数据帧,同样也会消耗设备资源

STP 协议的作用

STP 协议通过阻塞交换机端口,令其不再转发数据帧,使得环路被裁剪成一颗树,达到**在逻辑上消除环路的目的。**在链路发生故障后,激活备份链路,及时恢复网络连通性。

  1. 消除环路:允许网络物理拓扑中存在备份链路,消除逻辑拓扑上的二层环路
  2. 备份链路:发生故障后使用备份链路,及时恢复网络,提高网络的可靠性

STP 协议过程解析

在解析 STP 协议的具体过程前,先来了解一下 STP 协议中的重要组成部分。

STP 协议的重要概念

  1. 根桥 Root Bridge,是整个 STP 网络的逻辑中心,一般会选择性能高的交换设备作为根桥。根桥没有根端口,根桥的全部端口都是指定端口。
  2. 根端口 Root Port,交换机上距离根桥路径最短的端口,每个交换机上最多有一个根端口,负责向根桥方向转发数据。
  3. 指定端口 Designated Port,交换机向所连网段转发配置消息的端口,每个网段只能有一个指定端口。
  4. 阻塞端口 Blocked Port,如果一个端口既不是根端口又不是指定端口,这个端口将被阻塞。被阻塞的端口仅接受 BPDU 消息,不会接受或发送其他非 BPDU 的数据帧。
  5. BPDU Bridge Protocol Data Units,STP 生成树过程中所传递的配置消息。

STP 协议过程解析

  1. 选举根桥,根据根桥 ID 选举
    • 根桥 ID(BID):桥优先级(默认 32769,且必须为 4096 的倍数) + 桥 MAC
  2. 非根桥交换机选举根端口(RP),按照以下顺序选举
    • 根路径成本最低
    • 对端 BID(Bridge ID)最小
    • 对端 PID(Port ID)最小
    • 本端 PID 最小
  3. 每个网段选举指定端口(DP),根桥的所有端口都是指定端口,非根桥按照以下顺序选举
    • 根路径成本最低
    • 对端 BID 最小
    • 对端 PID 最小
  4. 阻塞既不是根端口也不是指定端口的端口

STP 协议实践

  1. gns3 网络拓扑及配置

    GNS3
    GNS3

    • 按照图中所示 BridgeID 分别配置交换机的优先级

      priority 配置
      priority 配置

      • 进入配置模式 configure terminal
      • 配置优先级
        • spanning-tree vlan 1 priority 4096
        • exit
      • 查看是否配置成功
        • show spanning-tree
      • 重复上述命令,配置其他交换机
  2. 按照此拓扑推理并验证

    • Switch A,优先级 4096

      • 推理
        • Switch A 在整个网络中优先级最高,为根桥,所有端口都为指定端口
      • 验证
        Switch A
        Switch A
    • Switch B,优先级 20480

      • 推理
        • e0/0 与根桥的根路径成本最低,e0/0 为 RP
        • e1/0 与 Switch E 相连比较,e1/0 为 DP
      • 验证
        Switch B
        Switch B
    • Switch C,优先级 8192

      • 推理
        • 同 Switch B,e1/1 为 RP,e2/0、e3/0 为 DP
      • 验证
        Switch C
        Switch C
    • Switch D,优先级 40960

      • 推理
        • 同 Switch B,e2/2 为 RP
      • 验证
        Switch D
        Switch D
    • Switch E,优先级 8192

      • 推理
        • 同 Switch B,e0/0 为 RP,e1/1 为 DP
      • 验证
        Switch E
        Switch E
    • Switch F,优先级 12288

      • 推理
        • 同 Switch B,e0/0 为 RP
        • e1/1 与 Switch E 相连比较,e1/1 优先级更低,被阻塞
      • 验证
        Switch F
        Switch F
    • Switch G,优先级 16384

      • 推理
        • 同 Switch B,e0/0 为 RP
      • 验证
        Switch G
        Switch G
  3. 关闭 Switch B,查看 Switch F 的变化

    关闭 Switch B
    关闭 Switch B

    • 查看 Switch F
      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 协议的缺点有以下两条

  1. 收敛速度慢
  2. 不支持 VLAN

RSTP、MSTP 协议

针对 STP 协议缺点的改进,出现了 RSTP 和 MSTP 协议

RSTP 协议

RSTP 是 STP 的改进版本,它的主要目标是加速 STP 的收敛速度。

  1. RSTP 引入了两种端口状态:指定端口(Designated Port)和替代端口(Alternate Port)。
  2. RSTP 使用不同的 BPDU 格式和机制,以快速传播拓扑变化。
  3. RSTP 的收敛速度较快,通常可以在数秒内响应拓扑变化,而不是 STP 的30秒或更长时间。

MSTP 协议

MSTP 是 STP 的另一种改进版本,旨在提供更大的灵活性,特别是在多 VLAN 环境下。

  1. MSTP 引入了多个实例(Instance),每个实例可以关联到一个或多个 VLAN。
  2. MSTP 允许管理员为每个实例配置独立的树状拓扑,支持不同 VLAN,从而提高网络的灵活性。
  3. 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 的设备
© Licensed Under CC BY-NC-SA 4.0