STP技术

发布于:2025-08-03 ⋅ 阅读:(13) ⋅ 点赞:(0)

 一、环路的危害

1.现象

  • 链路指示灯快速闪烁

  • MAC表震荡:交换机频繁修改MAC地址表 → 转发失效。

2.环路危害造成的影响

  • 链路堵塞
  • 主机操作系统响应迟缓
  • 二层交换机管理缓慢
  • 冲击网关设备的CPU


三、STP的作用

1.STP基本原理

STP即生成树协议,它通过阻断冗余链路来消除桥接网络中可能存在的路径环路。在一个网络中,当存在多条路径连接不同的网络设备(如交换机,图中的 SWA、SWB、SWC )时,可能会形成物理环路,这会导致广播风暴、多帧复制等问题,影响网络的正常运行。STP 通过在交换机之间交换 BPDU(Bridge Protocol Data Unit,桥协议数据单元),来计算出一个无环的网络拓扑结构将某些端口设置为阻塞状态,从而避免网络环路的产生。

--怎么实现冗余链路的?

交换机通过交互 BPDU(网桥协议数据单元),比较报文中的 参数,依次选举出:

  1. 根网桥(全网唯一)

  2. 根端口(每台非根桥上唯一)

  3. 指定端口(每个网段唯一)
    未被选中的冗余端口将进入 阻塞状态从而消除二层环路。

2. STP的作用

  • 冗余链路:在网络中,冗余链路是为了提高网络的可靠性而设置的备份链路。比如图中被阻塞的链路,在正常情况下虽然不传输数据,但当网络中的其他链路出现故障时,它就可以发挥作用。
  • 故障恢复:当 当前正在使用的路径发生故障时,STP 会检测到链路状态的变化,然后激活之前被阻塞的冗余备份链路,恢复网络的连通性。例如,如果 SWA 和 SWC 之间的链路出现故障,原本被阻塞的 SWB 的 E0/20 端口可能会被重新激活,使得网络流量可以通过其他路径传输,保证网络的正常通信 。

3.STP报文


四、STP的工作原理

1. 基础逻辑:BPDU 交互

核心是交换机间通过交互 BPDU(桥协议数据单元 ),完成拓扑收敛,消除环路

BPDU 里包含网桥优先级、MAC 地址、路径开销等参数,交换机,依靠这些参数,确定网络角色(根网桥、端口角色 ),构建无环拓扑。

 2.BPDU参数

2.1网桥ID

由交换机的优先级和MAC地址组成网桥优先级取值范围必须在0-65535之中,同时也必须是4.96的倍数。

2.2端口ID

由发送端口的优先级与端口号组成。端口优先级取值范围0-255(默认128),必须是16的倍数。

2.3路径开销 

3. 角色选举

基于 BPDU 交互,STP 会依次完成以下关键动作,最终让网络无环且保留冗余:

3.1 选根网桥

  • 规则网桥优先级(默认 32768 )+ MAC 地址,数值越小越优先。
  • 作用:选 1 台 “主交换机” 当根,所有交换机以它为中心计算拓扑,避免多中心导致环路。

3.2 非根交换机选根端口

  • 规则:非根交换机上,选 “到根网桥路径开销最小” 的端口(路径开销由链路带宽等决定,带宽越小开销越大 )。
  • 作用:每台非根交换机只留 1 条最优 “上联根网桥” 的通道,避免同一设备多条路径回根引发环路。

3.3 每个网段选指定端口

  • 规则每个物理网段(如两台交换机之间的链路 )里,选 “到根网桥路径开销最小” 的端口(网段内所有设备对比,最终 1 个端口当选 )。

当每个交换机的根端口选举出来之后,切换视角,以链路为视角。链路两边的BPDU进行评比,选举角色。

1.如果两个端口中,一个是根端口,另一个就是指定端口

2.如果这个端口是根网桥上的端口,那么就一定是指定端口

3.如果另一端连接的是主机,那么这个端口一定时指定端口

4.看链路连接的两个端口中的BPDU,比较BPDU的优劣,优的一方作为指定端口,劣的一方作为堵塞端口。

  • 作用:保证每个网段只有 1 个 “转发端口” 向根网桥传递流量,防止网段内环路。

3.4 阻塞冗余端口(非根非指定端口)

  • 规则:既不是根端口、也不是指定端口的端口,进入阻塞(Blocking )状态,不转发用户数据(仅收 BPDU 维持拓扑 )。
  • 作用:直接 “切断” 冗余链路的转发功能,从物理拓扑上消除环路;但链路仍保留,故障时可自动激活。

3.4 逐个网段分析(以图为例)

(1)LANA 网段(连 SWA 和 SWB )

  • SWA 的端口:到根网桥(自己)的路径开销是 0(根网桥自己的开销为 0 ),所以 SWA 在 LANA 网段的端口总开销 = 0 + LANA 链路开销(4 )= 4 。
  • SWB 的端口:到根网桥的总路径开销是 4(SWB → LANA → SWA ,开销 4 ),所以 SWB 在 LANA 网段的端口总开销 = 4 + LANA 链路开销(4 )= 8 。

比较两个端口的总开销:4(SWA 端口) < 8(SWB 端口) → SWA 在 LANA 网段的端口被选为指定端口

(2)LANB 网段(连 SWA 和 SWC )

  • SWA 的端口:到根网桥开销 0 ,总开销 = 0 + LANB 链路开销(4 )= 4 。
  • SWC 的端口:到根网桥的总路径开销是 4(SWC → LANB → SWA ,开销 4 ),总开销 = 4 + LANB 链路开销(4 )= 8 。

比较后:4(SWA 端口) < 8(SWC 端口) → SWA 在 LANB 网段的端口被选为指定端口

(3)LANC 网段(连 SWB 和 SWC )

  • SWB 的端口:到根网桥的总路径开销是 4(SWB → LANA → SWA ),所以 SWB 在 LANC 网段的端口总开销 = 4 + LANC 链路开销(4 )= 8 。
  • SWC 的端口:到根网桥的总路径开销是 4(SWC → LANB → SWA ),所以 SWC 在 LANC 网段的端口总开销 = 4 + LANC 链路开销(4 )= 8 。

此时,路径开销相同,需要比 桥 ID:

  • SWB 的桥 ID:32768 + 00e0-fc41-4259
  • SWC 的桥 ID:32768 + 00e0-fc41-43b9

比较 MAC 地址(十六进制):00e0-fc41-4259 < 00e0-fc41-43b9 → SWB 的桥 ID 更小 → SWB 在 LANC 网段的端口被选为指定端口,SWC 对应的端口成为 Alternate Port(备用端口,阻塞状态 )。

(4)LAND 网段(连 SWB )

这个网段只有 SWB 一个交换机的端口(因为 LAND 是末端网段,没有其他交换机 )。根据规则,单个交换机的端口自动成为指定端口 → SWB 在 LAND 网段的端口是指定端口。

(5)LANE 网段(连 SWC )

同理,LANE 是末端网段,只有 SWC 的端口 → SWC 在 LANE 网段的端口自动成为指定端口

 综合分析:

4.STP协议报文

五、STP解决临时环路问题

1 .STP端口状态

STP 为了避免网络环路,给交换机端口定义了 5 种状态,不同状态下端口的行为(收发 BPDU、学习 MAC、转发数据)不同,目的是有序控制端口角色,逐步放开数据转发,防止环路

端口状态 中文描述 转发数据帧 学习 MAC 地址表 参与生成树计算 处理 BPDU
Disabled 端口没有启用
Blocking 阻塞状态 接收并处理
Listening 侦听状态 接收并发送
Learning 学习状态 接收并发送
Forwarding 转发状态 接收并发送

2. 时间计时器

STP 中的计时器用于控制 BPDU 的传播和端口状态的转换,进一步防止临时环路。

Hello Timer(Hello 时间)

作用:根网桥周期性发送 “配置 BPDU” 的时间间隔,默认 2 秒

 触发:非根网桥靠收根桥的 BPDU 维持状态,若收不到,会触发拓扑重新计算。

Forward Delay(转发时延)

作用:端口状态迁移的 “过渡时间”,默认 15 秒,控制 “监听→学习→转发” 的等待时长。

  •  端口从监听状态到学习状态,需要等待一个 Forward Delay 时长,即 15 秒;
  •  从学习状态到转发状态 ,又需要等待一个 Forward Delay 时长,同样是 15 秒。
  •  所以,端口从监听状态最终进入转发状态,经历了两次 Forward Delay 的等待, 总计 30 秒。
Message Age(消息老化时间)

作用:记录 “配置 BPDU 从根网桥生成后,到当前交换机的时间”,每经过一个交换机,Message Age 会累加(默认每跳 + 1 )。

网桥在转发 BPDU 时,会根据 Message Age 判断 BPDU 的时效性。如果 Message Age 超过 Max Message Age,网桥会认为该 BPDU 已经过期,不再使用这个 BPDU 中的信息,可能会导致端口状态的重新计算和迁移。例如,当网络中的链路出现故障,BPDU 的传递路径发生改变,Message Age 可能会增加,若超过限制,端口可能会重新进入阻塞状态,重新参与生成树计算 。

Max Message Age(最大老化时间)

作用规定了配置 BPDU 存活的最大时间,默认 20 秒(10 个 Hello 周期) ,用于保证 BPDU 信息的有效性。

与端口状态迁移联系:非根网桥若超过 20 秒没收到新 BPDU,会认为根桥可能故障,触发重新选举根桥和拓扑计算。

3.STP 的传统缺陷—— 拓扑变化时收敛慢 

4.拓扑发生改变处理机制

4.1触发条件

前提:拓扑变化触发

情况 1:网络里新接了一台交换机,或者原本阻塞的端口(Blocking)被激活,变成 Forwarding 状态(能转发流量了 )。

  • 条件细化
    不仅要 “有端口进入 Forwarding”,还得满足 “该交换机至少有一个指定端口(Designated Port)” 。
    • 解释:“指定端口” 是 STP 里每个网段(链路)中负责转发 BPDU 的端口,有指定端口说明交换机在网络里 “有正式角色”,不是孤立的。如果新激活的端口所在交换机是 “孤网”(没指定端口),就算端口状态变,也不用发 TCN(发了也没人处理 )。

情况 2:有端口 “丢失活跃链路”(从 Forwarding/Learning 转 Blocking)

  • 场景:常见的如链路中断(网线被拔、设备断电 )、端口被手动关闭,或者 STP 重新计算后,端口从 Forwarding(转发流量 )或 Learning(学习 MAC 地址 )状态,被迫变成 Blocking(阻塞,不转发流量,防止环路 )。
  • 本质:原本能转发 / 学习的路径失效了,网络拓扑实际 “断了一块”,需要通知全网更新。

 4.2 TCN BPDU

在STP中,只有根网桥才能发送配置BPDU,下面的拓扑发生改变,根网桥是不知道的。所以需要定义一个新的BPDU用于通知根网桥——TCN BPDU。又为了保证可靠性,就有了TCA BPDU。上游交换机根网桥一旦收到TCN BPDU,那么就会发送TC置为的BPDU,通知各个网桥更改MAC表的老化时间由300s改为15s。

4.3 TCA 及TC置为的BPDU

    4.5.总结

      1.流程分步解析

    1. (绿虚线,TCN 消息)SWD → SWC:上报拓扑变化

    SWD 发现链路中断,符合 TCN拓扑变化通知,于是向自己的指定上游交换机(SWC ) 发 TCN BPDU ,说 “拓扑变啦,快处理” 。

    2. (红虚线,TCA 消息)SWC → SWD:确认收到 TCN

    SWC 收到 SWD 的 TCN 后,需要回复 TCA拓扑变化确认,告诉 SWD“我收到消息了,你别一直发” 。这一步是 “确认机制”,避免 TCN 消息一直刷屏 。

    3. (绿虚线,TCN 消息)SWC → SWA:继续上报给根桥

    SWC 除了回 TCA 给 SWD ,还要把 TCN 消息继续往根桥(SWA ) 转发(因为拓扑变化必须让根桥知道,根桥才能发全网更新指令 ),同样走 “逐级上报” 逻辑 。

    4. (紫实线,TCA 消息)SWA → SWB、SWA → SWC:根桥回 TCA

    根桥 SWA 收到 SWC 转发的 TCN 后,会向所有非根桥交换机(这里是 SWB、SWC ) 发 带 TCA 置位的配置 BPDU ,确认 “我收到拓扑变化消息了” 。这一步是根桥对全网的 “确认反馈” 。

    5. (紫实线,TC 置位 BPDU )SWA → SWB、SWA → SWC:根桥发全网更新指令

    根桥 SWA 确认拓扑变化后,开始发 带 TC(Topology Change,拓扑变化执行)置位的 BPDU ,告诉所有交换机:“拓扑变了,赶紧把 MAC 地址表老化时间从默认 300 秒改成 15 秒” 。这样交换机能快速老化旧表项,重新学习新拓扑下的 MAC 映射,保证流量转发正确 。

    6. (隐含逻辑)全网更新 MAC 表

    所有收到 TC 置位 BPDU 的交换机(SWB、SWC、SWD 等 ),会加速老化自己的 MAC 地址表。比如原本主机 A 走 SWB→SWD 的路径,链路断了后,新路径可能变 SWB→SWC→SWD ,加速老化能让交换机更快 “忘掉” 旧路径,学习新路径的 MAC 映射,网络重新收敛 。

    当拓扑变化(如链路故障)时:

    检测变化的交换机向根网桥发送 TCN  BPDU。

    上游交换机收到TCN BPDU会给下游交换机回复一个TCA BPDU,同时将TCN BPDU传给根网桥。

    根桥收到后广播 TC  BPDU,通知全网:

    全网桥收到后,缩短MAC表老化时间(默认300秒 → 15秒) 快速清除旧路径的MAC地址。 

    5.网络拓扑变化--STP网络收敛

    在生成树协议中,直接收敛和间接收敛是网络拓扑发生变化后,生成树重新计算并达到稳定状态的两种不同方式。

    5.1直接收敛

    SW3 的阻塞端口能直接收到根网桥(SW1)的 BPDU,直接切换为根端口,经 “监听→学习→转发”(2 个 Forward Delay,默认 15 秒 / 个,共 30 秒 )完成收敛。 

    5.2 间接收敛

    SW2 收不到根网桥 BPDU,“自封” 根网桥,收敛时间50秒。

    将检测拓扑变化的最长时间(Max Message Age)和端口状态迁移的总时间相加,就得到了间接收敛的大致时长:20 秒(Max Message Age) + 30 秒(两次 Forward Delay) = 50 秒。

    5.3 直接收敛vs间接收敛

    若故障导致交换机失去到达根桥的唯一路径需要重新选举根端口,则一定是间接收敛

    图中,SW2的根端口发生故障,指定端口对面又是堵塞端口,所以没有路能通往根桥了,就是间接收敛。

    六、STP 的缺点

    1.收敛时间长(主动收敛,被动收敛,拓扑改变TCN,MAC表老化)

    2.处理拓扑改变机制不灵活(主机频繁上下线时,网络会缠上大量TCN)

    1. 收敛速度极慢(30-50秒)

    根源

    • Blocking→Listening→Learning→Forwarding 强制等待 50秒(20秒 Max Age + 15秒×2 Forward Delay)。

     2.处理机制不灵活

    • TCN机制低效
      拓扑变更需逐级上报至根桥 → 延迟高,且根桥单点瓶颈。


    网站公告

    今日签到

    点亮在社区的每一天
    去签到