// 传输配置BPDU
// 函数主要任务:
// 1.检查速率限制
// 2.填充bpdu报文
// 3.发送配置bpdu
// 注:每个端口对bpdu的发送速率具有限制,通过net_bridge_port->hold_timer进行限制。
1.1 void br_transmit_config(struct net_bridge_port *p)
{
struct br_config_bpdu bpdu;//配置bpdu
struct net_bridge *br;
if (timer_pending(&p->hold_timer)) {//如果在速率限制区间内,则设置config_pending,然后返回
p->config_pending = 1;
return;
}
br = p->br;//网桥的设备
bpdu.topology_change = br->topology_change;//初始化配置bpdu协议相关项
bpdu.topology_change_ack = p->topology_change_ack;
bpdu.root = br->designated_root;
bpdu.root_path_cost = br->root_path_cost;
bpdu.bridge_id = br->bridge_id;
bpdu.port_id = p->port_id;
if (br_is_root_bridge(br))//根网桥
bpdu.message_age = 0;//自从根网桥生成该BPDU中包含的信息后已经过的时间
else {
struct net_bridge_port *root
= br_get_port(br, br->root_port);
bpdu.message_age = br->max_age
- (root->message_age
网络子系统35_BPDU的发送与接收
最新推荐文章于 2024-07-16 18:45:44 发布
本文详细解析了STP(Spanning Tree Protocol)中BPDU(Bridge Protocol Data Unit)的发送和接收过程。介绍了`br_transmit_config`函数如何处理配置BPDU的发送,包括速率限制、报文填充和发送。同时,阐述了`br_stp_handle_bpdu`函数如何接收并处理BPDU,区分配置BPDU和TC-BPDU,以及如何根据BPDU的内容更新网桥状态。
摘要由CSDN通过智能技术生成