STP/RSTP/MSTP帧格式、报文格式及字段说明

news/2024/11/15 8:35:12/

STP(Spanning Tree Protocol,生成树协议)是一种二层(数据链路层)管理协议,它通过有选择性地阻塞网络冗余链路来达到消除网络二层环路的目的,同时具备链路的备份功能。最初被广泛应用的是IEEE 802.1D STP,随后以它为基础产生了IEEE 802.1w RSTP (Rapid Spanning Tree Protocol,快速生成树协议)和IEEE 802.1s MSTP(Multiple Spanning Tree Protocol,多生成树协议)。STP/RSTP/MSTP在

 STP/RSTP/MSTP的BPDU报文格式

+--------------------------------+
|              DMAC              |
+--------------------------------+
|              SMAC              |
+--------------------------------+
|            Length              |
+--------------------------------+
|           LLC header           |
+--------------------------------+-----------------------
|       Protocol Identifier      |                ^
+--------------------------------+                |
|  Protocol Version Identifier   |                |
+--------------------------------+                |
|           BPDU Type            |                |
+--------------------------------+                |
|              Flags             |                |
+--------------------------------+                |
|          Root Identifier       |                |
+--------------------------------+                |
|          Root Path Cost        |                |
+--------------------------------+                |
|       Bridge Identifier        |                |
+--------------------------------+                |
|        Port Identifier         |                |
+--------------------------------+                |
|           Message Age          |                |
+--------------------------------+               BPDU
|            Max Age             |              payload
+--------------------------------+                |
|          Hello Time            |                |
+--------------------------------+                |
|        Forward Delay           |                |
+--------------------------------+----------      |
|       Version 1 Length         |    RSTP/MSTP   |
|                                |    Extension   |
+--------------------------------+----------      |
|       Version 3 Length         |     ^          |
+--------------------------------+     |          |
| MST Config ID Format Selector |     |          |
+--------------------------------+     |          |
|        MST Config Name        |     |          |
+--------------------------------+     |          |
|     MST Config reversion      |     |          |
+--------------------------------+     |          |
|       MST Config Digest       |      MSTP      |
+--------------------------------+   Extension    |
|  CIST Internal Root Path Cost  |     |          |
+--------------------------------+     |          |
|     CIST Bridge Identifier     |     |          |
+--------------------------------+     |          |
|      CIST Remaining Hops       |     |          |
+--------------------------------+     |          |
|   MSTI configuration Messages  |     |          |
|         (may be absent)        |     V          V
+--------------------------------+-----------------------
|               FCS              |
+--------------------------------+

Copy

2、对应字段说明:

字段

长度

说明

DMAC

6字节

目的MAC地址,该字段标识帧的接收者。

SMAC

6字节

源MAC地址,该字段标识帧的发送者。

Length

2字节

指后续数据的字节长度,但不包括FCS字段。

Protocol Identifier

2字节

协议ID=“0”。

Protocol Version Identifier

1字节

协议版本标识符,STP为0x00,RSTP为0x02,MSTP为0x03。

BPDU Type

1字节

BPDU类型:

  • 0x00:STP的Configuration BPDU
  • 0x80:STP的TCN BPDU(Topology Change Notification BPDU)
  • 0x02:RST BPDU(Rapid Spanning-Tree BPDU)或者MST BPDU(Multiple Spanning-Tree BPDU)

Flags

1字节

标记域。对于STP:第一个bit(左边、高位bit)表示“TCA(拓扑改变响应)”,最后一个bit(右边、低位bit)表示“TC(拓扑改变)”,其他字段预留。

对于RSTP和MSTP:

  • Bit7:TCA (Topology Change Acknowledgement)
  • Bit6:Agreement
  • Bit5:Forwarding
  • Bit4:Learning
  • Bit3和Bit2:端口角色
    • 00:未知
    • 01(低位为1高位为0):Alternate / Backup
    • 10(低位为0高位为1):根端口
    • 11:指定端口
  • Bit1:Proposal
  • Bit0:TC (Topology Change)

Root Identifier

8字节

网桥ID都是8个字节——前两个字节是网桥优先级,后6个字节是网桥MAC地址。对于MSTP,是指CIST的总根交换机ID。

Root Path Cost

4字节

根路径开销,本端口累计到根桥的开销。对于MSTP,是指CIST外部路径开销指从本交换机所属的MST域到CIST根交换机的累计路径开销。CIST外部路径开销根据链路带宽计算。

Bridge Identifier

8字节

发送者BID,本交换机的Bridge ID。对于MSTP,是指CIST的域根交换机ID,即IST Master的ID。如果总根在这个域内,那么域根交换机ID就是总根交换机ID。

Port Identifier

2字节

发送端口PID,发送该BPDU的端口ID。对于MSTP,是指本端口在IST中的指定端口ID。

Message Age

2字节

该BPDU的消息年龄,以秒为单位。

Max Age

2字节

消息老化年龄,以秒为单位,超时则认为到根交换机的链路故障。

Hello Time

2字节

发送两个相邻BPDU间的时间间隔,以秒为单位。

Forward Delay

2字节

控制Listening和Learning状态的持续时间,以秒为单位。

Version 1 Length

1字节

Version1 BPDU的长度,值固定为0。只在RSTP和MSTP的BPDU中出现,STP的BPDU没有此字段。

Version 3 Length

2字节

Version3 BPDU的长度,只在MSTP的BPDU中出现。

MST Config ID Format Selector

1字节

固定为0。

MST Config Name

32字节

“域名”,字符串格式。

MST Config reversion

2字节

非负整数。

MST Config Digest

16字节

利用HMAC-MD5算法将域中VLAN和实例的映射关系加密成16字节的摘要。

CIST Internal Root Path Cost

4字节

CIST内部路径开销,指从本端口到IST Master交换机的累计路径开销,只在MSTP的BPDU中出现。CIST内部路径开销根据链路带宽计算。

CIST Bridge Identifier

8字节

CIST的指定交换机ID,只在MSTP的BPDU中出现。

CIST Remaining Hops

1字节

BPDU报文在CIST中的剩余跳数,只在MSTP的BPDU中出现。

MSTI Configuration Messages (may be absent)

n×16字节

MSTI配置信息,只在MSTP的BPDU中出现。每个MSTI的配置信息占16 bytes,如果有n个MSTI就占用n×16bytes。单个MSTI Configuration Messages的字段说明如下:

  • MSTI Flags:MSTI标志。
  • MSTI Regional Root Identifier:MSTI域根交换机ID。
  • MSTI Internal Root Path Cost:MSTI内部路径开销指从本端口到MSTI域根交换机的累计路径开销。MSTI内部路径开销根据链路带宽计算。
  • MSTI Bridge Priority:本交换机在MSTI中的指定交换机的优先级。
  • MSTI Port Priority:本交换机在MSTI中的指定端口的优先级。
  • MSTI Remaining Hops:BPDU报文在MSTI中的剩余跳数。

FCS

4字节

帧校验序列FCS(Frame Check Sequence)是为接收网卡提供判断是否传输错误的一种方法,如果发现错误,丢弃此帧。

FCS只是通用叫法,具体的FCS还可以细分多种校验方法。在以太帧中,FCS通常采用循环冗余码校验CRC(Cyclical Redundancy Check)。

标签: STP   RSTP   MSTP   帧格式

版权所有
侵权必究

阅读

分享

上一篇
STP协议-网络环路导致的问题下一篇
STP选举过程和规则

相关推荐

  • STP协议中的BPDU类型-

  • STP中的BPDU报文格式

  • STP选举过程和规则

  • STP协议-网络环路导致

发布评论

最近更新

  • 16/05月

    华为设备查询MIB对应OID值

  • 16/05月

    通过Ansible fetch批量收集服务器log等日志文件

  • 16/05月

    ESXI添加硬盘时提示 无法创建 VMFS 数据存储 - ...

  • 16/05月

    Intel X700系列网卡(i40e驱动)看不到LLDP邻居 收不...

  • 07/05月

    H3C出口设备nat server端口映射解决NAT回流问题

  • 07/05月

    Windows cmd输出筛选命令find用法

  • 1Unix Linux时间戳(timestamp)转换工具
  • 2Redhat Linux 如何查找大文件? 大于1G的文件
  • 3Cisco 2811 Cisco2911 忘记enable密码重置方法,同样适用思科Cisco系列的其他路由器和交换机(Cisco1921,Cisco 2960,Cisco3560,Cisco3750
  • 4resize2fs: Bad magic number in super-block while trying to open /dev/mapper/centos-home Couldn'
  • 5Redhat7.6 Redhat7.4 手动安装Oracle11gR2数据库教程 版本11.2.0.4-非常详细
  • 6H3C路由器 交换机SSH远程登录配置
  • 7Centos7\RHEL 7重置root系统密码
  • 8IPv6地址可用性在线Ping检测
  • 9pycharm创建虚拟环境后, terminal默认进入的不是虚拟环境怎么处理?
  • 10阿里云服务器IPv6地址无法ping通,阿里云ecs IPv6安全组配置

  • linux zabbix Centos H3C python IPv6 Redhat SNMP 帝国CMS Zabbix5.0 Mysql ESXi SSH windows redhat7 cento

http://www.ppmy.cn/news/692779.html

相关文章

STP报文格式与端口状态

1.STP交换机通过交换STP协议帧来建立和维护STP树,并在网络的物理拓扑发生变化时重新建立STP树。 2.STP协议帧由STP交换机产生,发送、接收和处理。STP协议帧是一种组播帧,组播地址是01-80-c2-00-00-00。 3.STP协议帧采用IEEE 802.3封装格式&…

大数据Doris(五十四):BACKUP数据备份原理和语法

文章目录 BACKUP数据备份原理和语法 一、BACKUP数据备份原理 1、快照及快照上传 2、元数据准备及上传 二、BACKUP数据备份语法 BACKUP数据备份原理和语法 通过Doris数据导出的各种方式我们可以将Doris中的数据进行备份,除了export方式之外,Doris 还…

python的函数定义要在调用之前吗?

在Python中,函数必须在调用之前定义。如果你试图在定义一个函数之前调用它,Python会抛出一个NameError,告诉你这个函数尚未定义。 例如: # 错误的顺序 my_function() # 这会引发 NameError,因为 my_function 还未定…

装饰器设计模式应⽤-JDK源码⾥⾯的Stream IO流

装饰器设计模式在JDK源码⾥⾯应⽤场景 抽象组件(Component):InputStream 定义装饰⽅法的规范被装饰者(ConcreteComponent) : FileInputStream、ByteArrayInputStream Component的具体实现,也就是我们要装饰的具体对…

vue移动端实现拨号功能(点击手机号就拨号)

vue移动项目中如何设置点击手机号码就可以打电话 1&#xff0c; 在vue项目的index.html中添加如下代码&#xff1a; <meta name"format-detection" content"telephoneyes" />,2&#xff0c;在需要调起手机拨号功能的页面&#xff0c;写如下方法&am…

前端项目设置点击手机号码唤起拨号功能

1.index.html中添加如下代码&#xff1a; <meta name"format-detection" content"telephoneyes" />2.在需要调起手机拨号功能的页面&#xff0c;写如下函数&#xff1a; // 调用拨号功能 callPhone (phoneNumber) {window.location.href tel://…

安卓手机拨号键盘隐藏工程代码大全

安卓手机拨号键盘隐藏工程代码大全*#*#4636#*#* 显示手机信息、电池信息、电池记录、使用统计数据、WiFi 信息 *#*#7780#*#* 或 *#7780# 重设为原厂设定&#xff0c;不会删除预设程序&#xff0c;及 SD 卡档案。 *2767*3855# 重设为原厂设定&#xff0c;会删除 SD 卡所有档案。…

Android 手机拨号

一、直接调用系统拨号界面 1、将用户输入的手机号码&#xff0c;直接显示在拨号盘上 //调用拨打电话界面 Intent intent new Intent(Intent.ACTION_DIAL,Uri.parse("tel:"number)); //number 是手机号码 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); st…