STP 协议中两种类型的 BPDU : Configuration & TCN

好久没写博了,这两天看到STP中的BPDU,总结一下,省得忘了.
 
BPDU分为几种类型:
  configuration BPDU     type:0x00   注意类型号
  TCN BPDU               type 0x80
 
这两种类型的BPDU是由BPDU协议字段中的TYPE决定的,具体字段内容如下:
 Bytes Field
 2 Protocol ID
 1 Version
 1 Message Type
 1 Flags
 8 Root ID
 4 Cost of Path
 8 Bridge ID
 2 Port ID
 2 Message Age
 2 Maximum Time
 2 Hello time
 2 Forward Delay
 
STP在交换机之间运行,交换配置信息,就是靠BPDU实现的。
BPDU每隔2秒,以Multicast的方式发送,在designate port上被发送
通过BPDU信息的交换,我们能够:
1、为整个STP网络找到一个root switch,也叫root bridge
2、为每个网段选举一个designate switch,或者说designate bridge
3、通过设置某些端口为backup状态,来打破环路
 
正常情况下,交换机只会从它的Root Port上接收configuration BPDU包,但是绝不会主动发送configuration BPDU包给root bridge。
 
这里就需要提到第二种类型的BPDU包了,也就是Topology Change Notification(TCN) BPDU。
 
这样,当一台交换机检测到拓扑变化后,它就可以发送TCN给root bridge,注意TCN是通过root port向root bridge方向发出的.
 
当交换机从它的designate port接收到TCN类BPDU时,它必须为其做转发,从它自已的root port上发送出去TCN类型的BPDU包,这样一级一级地传到root bridge后,TCN的任务才算完成.
 
在以上的过程中,无论是哪台交换机从它的designate port上收到了TCN类型的BPDU包,它都必须给一个回复,必须从designate port上发出TCA位被置1的normal configuration BPDU包,注意,这里是正常的configuration BPDU包.它的TCA位被置1,表明是要给TCN以回复的,但它跟TCN不是一类型的包.
 
那么当TCN传遍全网,直至到达ROOT BRIDGE后,root bridge也要做出一种回应,它会发出一个正常的configuration BPDU包,当然会有一些不同,就是包内的TC字段会被置1,TC即topology change,表示发现拓扑变化.这个包会被所有交换机转发,同样的TC位会置1,直至传遍全网,所有交换机都得知拓扑变化为止.









本文转自 ciscodocu51CTO博客,原文链接:http://blog.51cto.com/ciscodocu/52847,如需转载请自行联系原作者
### STPBPDU 的定义、功能与作用 #### 定义 BPDU 是 Bridge Protocol Data Unit(网桥协议数据单元)的缩写,它是生成树协议(Spanning Tree Protocol, STP)中用于交换网络拓扑信息的关键消息类型[^1]。BPDU 报文分为两种主要类型:配置 BPDUTCN BPDU。 - **配置 BPDU** 配置 BPDU 是最常见的 BPDU 类型,其 BPDU 类型字段值为 `0x00`。它主要用于执行生成树计算以及维护整个网络的无环拓扑结构。配置 BPDU 包含了诸如桥 ID、路径开销和端口 ID 等重要参数,这些参数帮助设备确定根桥的位置并选择最佳路径[^2]。 - **TCN BPDU** TCN BPDU(Topology Change Notification BPDU),其 BPDU 类型字段值为 `0x80`,用于通知网络中的其他设备发生了一次拓扑变化事件。这种类型BPDU 不会携带详细的拓扑信息,而是作为一种信号机制来触发重新计算生成树的过程[^1]。 --- #### 功能 BPDU 的核心功能在于支持生成树算法运行,具体体现在以下几个方面: 1. **选举根桥** 所有参与 STP 协议的交换机通过比较彼此发送的配置 BPDU 来选出唯一的根桥。每台设备会在初始阶段主动发送配置 BPDU,在此过程中包含自身的桥优先级和 MAC 地址作为桥 ID 进行对比[^2]。 2. **指定端口的选择** 基于接收到的配置 BPDU 数据,各交换机会决定哪些端口成为指定端口或根端口。这一过程依赖于路径成本、桥 ID 及端口号等因素共同评估得出最优连接方案[^3]。 3. **防止循环路径形成** 当检测到可能存在的冗余链路时,某些非必要端口会被置于阻塞状态以消除潜在的数据包无限复制现象——即所谓的“广播风暴”。一旦活动链路上出现故障,则先前处于备用角色下的那些被封锁端口能够迅速切换至转发模式从而保障通信连续性[^3]。 4. **传播拓扑变更信息** 如果某条物理线路断开或者新增加节点接入现有局域网环境当中,那么相应区域内的交换装置就会立即产生一份新的 TCN BPDU 并沿下游逐层传递直至抵达根节点位置为止;与此同时促使整套系统再次经历一轮完整的收敛周期以便适应最新状况下形成的逻辑布局图景。 --- #### 作用 BPDU 在二层网络管理中有如下重要作用: - 维护稳定的网络拓扑结构,避免因多重路径引发的广播风暴问题; - 提供动态调整能力,允许在网络发生变化时快速响应并通过重新计算生成树恢复连通性和稳定性; - 实现链路冗余保护机制,确保即使部分硬件设施失效仍可维持正常业务运作不受影响。 ```python # 示例代码展示如何模拟简单STP环境中BPDU交互流程的一部分 class Switch: def __init__(self, id): self.id = id def send_bpdu(self): print(f"Switch {self.id} is sending Configuration BPDU.") root_switch = Switch(1) non_root_switch = Switch(2) root_switch.send_bpdu() # 输出: Switch 1 is sending Configuration BPDU. non_root_switch.send_bpdu() # 输出: Switch 2 is sending Configuration BPDU. ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值