STP BPDU报文

STP BPDU报文字段 字节数 说明 ProtocolIden 协议 ID 2 总是为 0 ProtocolVers 协议版本 1 STP 802 1D 传统生成树 值为 0 RSTP 802 1W 快速生成

字段

字节数

说明

Protocol Identifier(协议ID)

2

总是为0

Protocol Version(协议版本)

1

STP(802.1D)传统生成树,值为0;

RSTP(802.1W)快速生成树,值为2;

MSTP(802.1S)多生成树,值为3;

Message Type(消息类型)

1

指示当前BPDU消息类型:

0x00为配置BPDU,负责建立,维护STP拓扑;

0x80为TCN BPDU,传达拓扑变更;

Flags(标志)

1

最低位=TC(Topology Change,拓扑变化)标志,最高位=TCA(Topology Change Acknowledgement,拓扑变化确认)标志

 Root Identifier(根ID)

8

指示当前根桥的RID(即“根ID”),由2字节的桥优先级和6字节MAC地址构成

Root Path Cost(根路径开销)

4

指示发送该BPDU报文的端口累计到根桥的开销

Bridge Identifier(桥ID)

8

指示发送该BPDU报文的交换设备的BID(即“发送者BID”),也是由2字节的桥优先级和6字节MAC地址构成

Port Identifier(端口ID)

2

指示发送该BPDU报文的端口ID,即“发送端口ID”

Message Age(消息生存时间)

2

指示该BPDU报文的生存时间,即端口保存BPDU的最长时间,过期后将删除,要在这个时间内转发才有效,如果配置BPDU是直接来自根桥的,则Message Age为0,如果是其他桥转发的,则Message Age是从根桥发送到当前桥接收到BPDU的总时间,包括传输延时等。实际实现中,配置BPDU报文经过一个桥,Message Age增加1

Max Age(最大生存时间)

2

指示BPDU消息的最大生存时间,也即老化时间

Hello Time(Hello消息定时器)

2

指示发送两个相邻BPDU的时间间隔,根桥通过不断发送STP维持自己的地位,Hello time 是发送的间隔时间

Forward Delay(转发延时)

2

指示控制listening和learning状态的持续时间,表示在拓扑结构改变后,交换机在发送数据包前维持在监听和学习状态的时间

 STP 选举流程:

1.选举根桥 2.非根交换机选举根端口 3.每个线路选举指定端口 4.阻塞非根,非指定端口

选举根桥,根端口,指定端口,阻塞端口都以下面的规则来选,都是越小越好,这些信息在BPDU中都有。

比较规则:

1.bridge ID:   优先级(默认32768) + MAC地址 2.Cost路径开销 根据接口带宽比例计算 3.port ID:    优先级 (默认128)+ 端口号

根桥选举:

1.选根桥:每个交换机假设自己为根,互相发送BPUD报文,然后通过比较规则竞选根桥

2.选根端口:每个交换机根据接收由根桥发送的BPDU中的开销来选举根端口(最优路径),交换机接收累加开销,转发不累加

3.选指定端口:每条链路根据比较规则来选出指定端口,每条链路必须有指定端口。

4.选阻塞端口:除了根端口,指定端口,剩下的为阻塞端口

下面是华为设备STP  的配置BPDU

STP BPDU报文

从这里可以分析出,该端口的端口号是2,据开销20000可知千兆口,所以为G0/0/2

很明显该端口所属的交换机不是根桥,并且是根桥的邻居。BPDU类型是配置BPDU。

 

下面看下当某条链路断开时,发生了拓扑变化的BPDU报文

比如有一台交换机,一个端口为根端口,另一个为阻塞端口。如果根端口被关闭了

那么阻塞端口会发送一个拓扑变更BPDU的报文给相邻的交换机,这个BPDU类型为:TCN

 STP BPDU报文

而相邻的交换机会向这个阻塞端口发送一个确认拓扑变更的BPDU,这样阻塞端口就知道自己的消息被收到并将会传达。

这个BPDU类型为 TCA,同时相邻的交换机就会把继续把 TCN 向根端口方向转发,之后也会收到上层交换机发来的TCA确认接收报文

STP BPDU报文

 

如果根桥收到了这个由阻塞端口传来的TCN,便会下发拓扑变更BPDU其类型为TC,每台收到此TC报文的交换机都会将自己的MAC缓存表刷新或减低过期时间。

然后再向下传达这个TC报文。

STP BPDU报文

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/225657.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 上午8:50
下一篇 2026年3月17日 上午8:50


相关推荐

  • ECMall模板开发文档

    ECMall模板开发文档ECMall 模板开发文档前言欢迎阅读 ECMall 模板制作教程 通过阅读本教程可快速上手 ECMall 模板的使用和制作 ECMall 模板制作要求用户具备 XML XHTML 和 CSS 基础知识 至少掌握一种文本编辑器或网页制作工具 如

    2026年3月17日
    1
  • golang 数据库开发(golang append)

    前言:微博参与话题#给你四年时间你也学不会生信#先前的富集分析教程本文主要针对非模式物种,但是有参考基因组可用1.R包安装及database下载#non-model,buthavethegenome>source(“https://bioconductor.org/biocLite.R”)>biocLite(“AnnotationHub”)>biocLite(…

    2022年4月14日
    82
  • 多进程与多线程区别

    多进程与多线程区别在 Unix 上编程采用多线程还是多进程的争执由来已久 这种争执最常见到在 C S 通讯中服务端并发技术的选型上 比如 WEB 服务器技术中 Apache 是采用多进程的 perfork 模式 每客户连接对应一个进程 每进程中只存在唯一一个执行线程 nbsp Java 的 Web 容器 Tomcat Websphere 等都是多线程的 每客户连接对应一个线程 所有线程都在一个进程中 从 Unix 发展历史看 伴随着 Uni

    2025年8月3日
    5
  • CAS原理分析_单点登录cas原理

    CAS原理分析_单点登录cas原理CAS的英文为CompareandSwap翻译为比较并交换。CAS加volatile关键字是实现并发包的基石。没有CAS就不会有并发包,synchronized是一种独占锁、悲观锁,java.util.concurrent中借助了CAS指令实现了一种区别于synchronized的一种乐观锁。什么是乐观锁与悲观锁?悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所…

    2022年10月17日
    6
  • 为什么部分机构和学校要求卸载OpenClaw软件?啥原因?

    为什么部分机构和学校要求卸载OpenClaw软件?啥原因?

    2026年3月16日
    2
  • iot技术_如何帮助阿尔兹海默症

    iot技术_如何帮助阿尔兹海默症场景介绍阿尔茨海默病,是导致中老年人认知功能障碍的最常见疾病之一,是发生在老年期及老年前期的一种原发性退行性脑病。据估计,全世界痴呆症患者数量为4700万,到2030年将达到7500万人。痴呆症患者数量到2050年预计将是现在的近三倍。疾病的高昂费用给卫生系统应对未来预计不断增加的病例构成挑战。据估计,目前每年的支出为8180亿美元,而支出的增长速度预计会比疾病流行率上升还要快。照料痴呆症患者…

    2025年5月28日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号