问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

STP协议中的BPDU详解:概念、报文格式与时间参数

创作时间:
作者:
@小白创作中心

STP协议中的BPDU详解:概念、报文格式与时间参数

引用
CSDN
1.
https://m.blog.csdn.net/bzmx1984/article/details/143058011

STP(生成树协议)中的BPDU(桥协议数据单元)是确保交换网络无环路的关键机制。本文将详细介绍BPDU的基本概念、报文格式、两种类型的BPDU(配置BPDU和TCN BPDU)及其用途,以及STP的时间参数等核心知识点。

BPDU基本概念

桥协议数据单元(Bridege Protocol Data Unit,BPDU)是STP的协议报文,直接封装在二层协议中,是STP能够正常工作的根本。BPDU主要由4部分组成:

  1. 根桥ID
  2. 发送者到根桥的开销(RPC)
  3. 发送者桥ID
  4. 发送者桥端口(端口优先级128 + 端口ID)

四部分中只有根桥ID不变,其余3部分会变化。BPDU hello报文间隔2秒,最大age时间20秒,即若20秒没有收到根桥发来的BPDU,则认为根桥挂了,将重新进行根桥选举。

BPDU报文格式

配置BPDU报文格式

字段
描述
Protocol Identifier
生成树协议ID,对STP而言,该字段的值总是为0。
Protocol version Identifier
用于描述当前使用的协议版本号:STP(802.1D)传统生成树,值为0;RSTP(802.1W)快速生成树,值为2;MSTP(802.1S)多生成树,值为3;
BPDU Type
描述当前BPDU消息类型:配置BPDU类型(0x00),用于建立、维护STP拓扑;TCN BPDU类型(0x80),传达拓扑变更消息;RSTP/MSTP BPDU类型(0x02);
BPDU Flags
由8位组成,只使用最高位(第一个bit)和最低位(最后一个bit),其余6位保留。最低位=TC(Topology Change,拓扑变化)标志,最高位=TCA(Topology Change Acknowledgement,拓扑变化确认)标志
Root Identifier
根网桥的桥ID,由2字节的桥优先级+6字节的MAC地址组成。
Root Path Cost
根路径开销,描述发送该BPDU报文的端口累计到根桥的开销。
Bridge Identifier
指定桥ID,本交换机的BID。描述该BPDU的桥ID,由2字节的桥优先级+6字节的MAC地址组成。
Port Identifier
指定端口ID,即“发送端口ID”。描述由优先级+端口号组成。
Message Age
该BPDU报文的生存时间。即端口保存BPDU的最长时间,过期后将删除,要在这个时间内转发才有效,如果配置BPDU是直接来自根桥的,则Message Age为0,如果是其他桥转发的,则配置BPDU报文经过一个桥,Message Age增加1。
MAX age
BPDU消息的最大生存时间(即老化时间)。默认20s
Hello Time
发送两个相邻BPDU的时间间隔。默认2s根桥通过不断发送STP维持自己的地位,Hello time 是发送的间隔时间
Forward Delay
最大延迟时间,默认15s。(端口状态迁移的延迟时间)端口从listening -> learning 或 learning -> forwarding 的转态需要时间。

TCN BPDU报文格式

TCN BPDU和配置BPDU在结构上基本相同,也是由源/目的MAC地址、L/T位、逻辑链路头和BPDU数据组成。TCN BPDU的BPDU数据组成非常简单,只包含三部分信息:

  1. 协议类型:字段和配置BPDU相同
  2. 协议版本号:字段和配置BPDU相同
  3. BPDU类型:字段的值为0x80,表示该BPDU为TCN BPDU。

TCN BPDU有两个产生条件:

  1. 网桥上有端口转变为Forwarding状态,且该网桥至少包含一个指定端口。
  2. 网桥上有端口从Forwarding状态或Learning状态转变为Blocking状态。

当上述两个条件之一满足时,说明网络拓扑发生了变化,网桥需要使用TCN BPDU通知根桥。根桥可以通过将配置BPDU中对应标志位置位来通知所有网桥网络拓扑发生了变化,需要使用较短的MAC地址老化时间,保证拓扑的快速收敛。

BPDU两种报文类型详情

配置BPDU

配置BPDU用于构建、维护STP树。在STP的初始化过程中,每台交换机都会产生并发送配置BPDU。在STP树形成后的稳定期,只有根桥才会周期性地发送配置BPDU;相应的,非根桥会从自己的根端口收到配置BPDU,并更新自己的配置BPDU,再从指定端口发送出去。这个过程看起来像根桥发出的配置BPDU逐跳的经过了其它交换机。

拓扑变化通知BPDU(TCN BPDU)

拓扑变更通告(Topology Change Notification BPDU,TCN BPDU)用于通告网络拓扑的变化,这种BPDU是当交换机检测到拓扑发生变更时所产生TCN BPDU。是指下游交换机感知到拓扑发生变化时向上游发送的拓扑变化通知。TCN BPDU只在网络拓扑发生变更时才会被触发。

TCN BPDU的格式非常简单,只有“协议ID”、“协议版本ID”以及"BPDU类型"三个字段,并且“BPDU”字段的值为0x80。TCN BPDU用于在网络拓扑发成变化时向根桥通知变化的发生。

对于STP而言,当拓扑发生变更时,远离变更点的交换机无法直接感知到变化的发生,此时它们的MAC地址表项还是老旧的,如果依然通过这些MAC地址表项来指导数据转发,便有可能出现问题。因此STP需要一种机制,用于在网络中发生拓扑变更时促使全网的交换机尽快老化自己的MAC地址表项,以适应新的网络拓扑。当拓扑稳定时,网路中只会出现配置BPDU,而当拓扑发生变更时,STP会使用TCN BPDU,以及两种特殊的配置BPDU。

STP的时间参数

在STP的计算过程中,BPDU的时间有三种:Hello Time、Max Age、Forward Delay。

Hello Time

STP交换机发送配置BPDU的时间间隔,默认是2秒。如果要修改时间参数,那么必须在根桥上修改才有效。用于设备检测链路是否存在故障。Hello时间控制了发送配置BPDU的时间间隔,默认2秒。这是根交换机生成BPDU并向非根交换机发送的间隔。

生成树协议每隔Hello Time时间会发送BPDU,以确认链路是否存在故障。如果设备在超时时间(超时时间=超时时间因子×3×Hello Time)内没有收到BPDU,则会由于消息超时而重新计算生成树。

非根交换机接收到根交换机发送来的BPDU,再从除接收端口以外的其他端口转发出去,如果在2-20秒里面由于网络故障没有新的BPDU从根交换机发送过来,非根交换机将停止向外发送从根交换机接收到的BPDU。如果这种情况持续20秒,也就是最大存活期,非根交换机就使原储存的BPDU无效,并开始寻找新的根端口。

所谓最大存活期就是非根交换机丢弃BPDU前用来备份储存它的时间。

Max Age

BPDU 的最大生存时间,也称为BPDU的老化时间,Max Age的值由根桥指定,默认值是20秒。如果端口在20秒内收到BPDU,最大生存时间会重新计时;如果端口一直没收到 BPDU ,那么BPDU将会老化,设备会重新在端口上选择最优BPDU,也就是重新进行根接口的选举。

用于判断BPDU在设备内的保存时间是否“过时”,设备会将过时的BPDU丢弃。缺省情况下Max Age时间为20秒。

在MSTP的CIST上,设备根据Max Age时间来确定端口收到的BPDU是否超时。如果端口收到的BPDU超时,则需要对该MSTI重新计算。Max Age时间对MSTP的MSTI无效。

STP每隔一个Hello Time发送一个BPDU,并且引入Keepalive机制。Hello包的发送可以避免最大失效定时器溢出。如果最大失效定时器溢出,通常表明有连接错误发生。此时,STP会进入Listening状态。STP要从连接错误中恢复过来,一般需要50秒的时间。其中BPDU最长的失效时间20秒;Listening状态持续15秒;Learning状态持续15秒。

Forward Delay

接口从侦听状态进入学习状态,或从学习状态进入转发状态的延迟时间,默认值是15秒。避免在STP树的生成过程中可能出现的临时环路,或短暂的数据帧泛洪现象,分别在侦听和学习的端口状态各停留一个转发延迟时间。对于STP而言,一个阻塞端口选举为根接口或指定接口后,进入转发状态至少需要经历30秒的时间。

用于确定状态迁移的延迟时间。缺省情况下,Forward Delay时间为15秒。

链路故障会引发网络重新进行生成树的计算,生成树的结构将发生相应的变化。不过重新计算得到的新BPDU无法立刻传遍整个网络,如果新选出的根端口和指定端口立刻就开始数据转发的话,可能会造成暂时性的环路。为此,生成树协议在端口由Blocking状态向Forwarding状态迁移的过程中设置了Listening和Learning状态作为过渡(Listening和Learning状态都会持续Forward Delay时间),并规定状态迁移需要等待Forward Delay时间,以保持与远端的设备状态切换同步。新选出的根端口和指定端口要经过2倍的Forward Delay延时后才能进入转发状态,这个延时保证了新的BPDU已经传遍整个网络。

为保证网络拓扑的快速收敛,需要配置合适的时间参数。上述三个时间参数之间应满足以下关系,否则会引起网络的频繁震荡:

2×(Forward Delay-1秒)≥Max Age
Max Age≥2×(Hello Time+1秒)

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号