当前位置: 首页 > news >正文

STP协议

一、STP概述

1. 什么是STP?

生成树协议(Spanning Tree Protocol,STP)是一种工作在OSI模型第二层的网络协议,基本功能是防止二层网络产生环路,同时提供链路冗余备份。

2. 为什么需要STP?——二层环路带来的问题

在未启用STP的二层网络中,环路会引发以下灾难性后果:

  • 广播风暴:交换机对BUM帧(广播、组播、未知单播)进行无限泛洪,耗尽设备CPU和带宽,最终导致网络瘫痪。

  • MAC地址表震荡:交换机在不同接口间反复学习同一个MAC地址(MAC地址漂移),导致MAC表不断刷新,影响正常转发。

3. 为什么二层不能自己防止环路?

  • 交换机转发机制缺陷:交换机对BUM帧仅执行泛洪,无内置防环机制。

  • 对比三层网络:IP报文通过TTL(生存时间)逐跳递减,TTL=0时丢弃,天然防止环路;而二层帧无类似字段。


二、STP基本概念

1. 桥ID(Bridge ID,BID)

  • 组成桥优先级(2字节) + MAC地址(6字节)

  • 作用:唯一标识一台交换机,用于根桥选举。

  • 优先级范围:0~61440,默认32768,步进4096(必须配置为4096的倍数)。

2. 根桥(Root Bridge,RB)

  • 定义:STP网络中桥ID最小的交换机。

  • 作用:作为全网逻辑中心,所有路径计算以根桥为参考点。

3. 根路径开销(Root Path Cost,RPC)

  • 定义:从某交换机到达根桥的所有链路开销之和(入方向累计)。

  • 根桥自身RPC=0

4. 端口ID(Port ID,PID)

  • 组成端口优先级(1字节,默认128) + 端口号(1字节)

  • 作用:在特定场景下(如选举指定端口)作为比较因子。

  • 优先级范围:0~240,默认128,步进16。

5. BPDU(桥协议数据单元)

STP通过交换BPDU来传递拓扑信息,分为两类:

  • 配置BPDU:用于STP拓扑计算,由根桥周期性(默认2秒)发送。

  • TCN BPDU:拓扑变更通知,仅在网络拓扑发生变化时触发。

配置BPDU报文格式
字段含义
RID根桥的桥ID
RPC发送该BPDU的交换机到达根桥的路径开销(根桥发送时为0)
BID发送该BPDU的交换机的桥ID
Port ID发送该BPDU的端口ID
Message AgeBPDU存活时间,从根桥发出为0,每经过一台交换机+1,超过Max Age(默认20s)则丢弃
Max AgeBPDU最大老化时间(默认20s)
Hello TimeBPDU发送周期(默认2s)
Forward Delay端口状态迁移延迟(默认15s)
BPDU Flag字段
  • TC=1:拓扑变更通知

  • TCA=1:拓扑变更确认
    TC=0且TCA=0时,表示STP网络稳定。


三、STP端口角色与状态

1. 端口角色

角色定义功能最终状态
根端口(Root Port)非根桥上到达根桥路径开销最小的端口接收来自根桥的BPDU,转发数据转发(Forwarding)
指定端口(Designated Port)每个网段(冲突域)上到达根桥路径开销最小的端口发送本网段最优BPDU,转发数据转发(Forwarding)
阻塞端口(Blocking Port)既不是根端口也不是指定端口的端口仅接收BPDU,不转发数据阻塞(Blocking)

2. 端口状态(802.1D)

在稳定STP网络中,端口只存在BlockingForwarding状态,其他为过渡状态:

状态收发BPDU学习MAC转发数据说明
Disabled接口被shutdown或物理失效
Blocking仅接收阻塞端口,防止环路
Listening收发过渡状态,等待15s
Learning收发过渡状态,等待15s
Forwarding收发正常转发状态
STP状态机

text

禁用(Disabled) → 阻塞(Blocking) → 监听(Listening) → 学习(Learning) → 转发(Forwarding)

四、STP工作机制与选举过程

1. 根桥选举

  1. 比较桥优先级,数值越小越优。

  2. 若优先级相同,比较MAC地址,越小越优。

  3. 根桥具有抢占性:当网络中接入一台桥ID更小的交换机时,它会成为新根桥。

2. 根端口选举(非根桥上)

选举依据:比较接收到的最优配置BPDU(按以下顺序逐条比较,直到选出最优):

  1. RID(根桥ID)越小越优

  2. RPC(根路径开销)越小越优

  3. 发送者BID(桥ID)越小越优

  4. 发送者PID(端口ID)越小越优

  5. 接收端口自身的PID越小越优

3. 指定端口选举(每个网段)

注意事项:先完成全网根端口选举,再进行指定端口选举。
选举步骤与根端口选举完全一致(比较BPDU优先级),但比较的是端口发出的BPDU与邻居发来的BPDU。

指定端口的特点
  • 根桥上的所有端口都是指定端口。

  • 指定端口的对端要么是根端口,要么是阻塞端口。

  • 连接终端设备(PC、路由器、防火墙)的端口均为指定端口。

  • 指定端口主动发送最优BPDU

4. 最优BPDU的判断标准

一条BPDU的“优劣”按以下顺序比较:

  1. RID最小

  2. RPC最小

  3. 发送者BID最小

  4. 发送者PID最小

5. STP拓扑计算过程(初始状态)

  1. 初始状态:所有交换机均认为自己是根桥,发送以自己为根的BPDU。

  2. 选举根桥:交换BPDU后,全网选出RID最小的交换机为根桥。

  3. 选举根端口:非根桥根据收到的BPDU选出根端口。

  4. 选举指定端口

    • 设备根据根端口的BPDU和接口开销,为每个端口计算出“指定端口BPDU”。

    • 将该BPDU与端口当前保存的BPDU比较,若计算出的更优,则端口成为指定端口并周期性发送该BPDU;若更差,则端口成为阻塞端口,只接收不发送。

6. 路径开销(Cost)

路径开销与链路带宽成反比,常见标准(802.1D-1998)参考值:

链路带宽开销值
10Mbps100
100Mbps19
1000Mbps4
10Gbps2

注:不同标准(如802.1t)开销值可能不同,配置时需保持全网一致。


五、STP故障案例分析

1. 根桥故障

  • 场景:根桥SW1失效,停止发送BPDU。

  • 过程

    1. SW2根端口失效(无替代端口),认为失去与根桥的连接,随即以自己为根发送BPDU。

    2. SW3的阻塞端口(Alternate Port)仍保留SW1为根的BPDU,需等待20s Max Age老化。

    3. 老化后SW3处理SW2的BPDU,重新选举:SW2成为新根桥,SW3原阻塞端口成为根端口,经历30s(Listening+Learning)后转发。

  • 中断时间50s(20+15+15)

2. 直连链路故障

  • 场景:SW3根端口直连链路故障,且存在替代端口。

  • 过程

    1. SW3感知到根端口失效,立即将替代端口升为根端口。

    2. 新根端口经历30s(Listening+Learning)后进入转发状态。

  • 中断时间30s(15+15)

3. 非直连链路故障

  • 场景:SW2根端口失效(无替代端口),且故障点不在直连链路上。

  • 过程

    1. SW2以自己为根发送BPDU。

    2. SW3阻塞端口收到SW2的BPDU,但因原BPDU(以SW1为根)仍有效,需等待20s Max Age

    3. 老化后SW3处理新BPDU,将原阻塞端口升为指定端口,经历30s后转发。

  • 中断时间50s(20+15+15)

4. 指定端口故障

  • 若指定端口所在链路已断开(对端为阻塞端口),故障不影响现有拓扑,无中断

5. 拓扑改变导致MAC地址表错误

  • 问题:拓扑变化后,MAC地址表未及时更新,导致帧被错误转发。

  • 解决流程

    1. 检测到拓扑变化的交换机(如SW3)向上游发送TCN BPDU

    2. 上游收到后回复TCA BPDU,并继续向根桥转发TCN。

    3. 根桥收到TCN后,向全网发送TC置位的BPDU(持续35s,每2s一次)。

    4. 下游交换机收到TC BPDU后,将MAC地址表老化时间由默认300s临时缩短为15s,快速刷新表项。

6. 为什么转发时延需要15s?

  • Listening(15s):确保根桥的BPDU有足够时间传播到全网,防止临时环路。

  • Learning(15s):让交换机在新拓扑中学习MAC地址,减少未知单播泛洪。


六、华为STP特性与优化

1. 华为STP与标准802.1D的区别

  • 华为STP吸收了RSTP的部分特性,进行了优化:

    • 收到次优BPDU时立即处理,无需等待Max Age。

    • 只有三种端口状态:Discarding、Learning、Forwarding(相当于将Blocking、Listening合并为Discarding)。

    • 交换机有自己的超时机制:超时时间 =Hello Time × 3 × Timer Factor(Timer Factor默认3),默认为18s,最小6s,因此Max Age在华为设备中意义不大。

    • 收到TC BPDU后立即清空MAC表,但TC BPDU会持续发送35s(约17次),可能导致短时间内泛洪增多。

2. 华为STP故障恢复时间优化

故障类型标准802.1D华为STP
根桥故障50s30s
非直连故障50s30s
直连故障(有AP)30s30s(不变)

优化原因:华为STP借用了RSTP的替代端口(Alternate Port)概念,且支持次级BPDU立即处理,无需等待Max Age。


七、STP配置命令(华为设备)

1. 切换STP模式

bash

[Huawei] stp mode { stp | rstp | mstp } # 默认为mstp

2. 修改转发延迟时间

bash

[Huawei] stp timer forward-delay centiseconds # 步进100,如1500表示15s

3. 修改桥优先级

bash

[Huawei] stp priority priority # 0-61440,需为4096倍数

4. 修改路径开销标准(全网一致)

bash

[Huawei] stp pathcost-standard { dot1d-1998 | dot1t | legacy } # dot1d-1998:802.1D-1998标准 # dot1t:802.1T标准 # legacy:华为私有标准

5. 修改接口开销

bash

[Huawei] interface gigabitEthernet 0/0/1 [Huawei-GigabitEthernet0/0/1] stp cost cost-value # 1-200000000
http://www.jsqmd.com/news/489504/

相关文章:

  • 万能钥匙 1.1.66 | 高效连网工具,WiFi万能钥匙,一键连接wifi
  • 两款功能强大的密码学工具箱
  • 通过跳板服务器进行内网穿透
  • 关于comfyui自己编译xformers轮子文件并且安装
  • MySQL【内置函数】
  • python全栈(基础篇)——day02:后端内容(简介与历史+简单数据类型与变量+python运行模式+输入输出+实战演示+每日一题)
  • 杭州柏来科技有限公司:7kW-2400kW 全功率充电桩源头厂家,打造全场景智慧充电解决方
  • 告别阻塞!用 PHP TrueAsync 实现 PHP 脚本提速 10 倍
  • Pinia 状态管理实战 | 从 0 到 1 搭建 Vue3 项目状态层(附模块化 / 持久化)
  • 遗传蚁群混合改进算法在VRPTW类问题上的探索
  • Comfort Lang 规范正式发布!基于 Python 生态的极简命令式交互语言标准
  • 在线图片压缩工具核心JS实现
  • Vue三元表达式
  • 论文问卷设计“救星”:一个工具解决毕业季调研全流程难题
  • k8s证书有效期修改为10年
  • 如何让Agent智能选工具?
  • OpenClaw v2026.3.7 史诗级更新!Context Engine 上线,AI 记忆可插拔,普通用户也能玩出极客级效果
  • Nginx 安全防护与 HTTPS 部署实战全解析
  • “你还在为树形结构处理犯难?一文掌握Java组合模式的应用场景!”
  • 软件测试实验室申请CNAS/CMA资质费用预算清单
  • UL+FDA双认证:福尔蒂医用导管色母量产前7轮迭代实录
  • Linux命令行最基础操作指南(新手入门必看)
  • Python 工程化实战:从目录结构到 VSCode 完美配置
  • HTB - VariaType
  • GD60920你一定很少听说,但它可能就在你身边:智能照明应用解决方案分享(全文干货)
  • 2026跑腿创业,市面上系统那么多,为什么我独推荐诚心呈意共享骑手系统?
  • 高可用:mysql主备keepAlived+vip
  • dhcp技术
  • 字符串!!!!
  • PMP认证备考全攻略:从报名到3A通过的实战经验分享