网络子系统35_BPDU的发送与接收

本文详细解析了STP(Spanning Tree Protocol)中BPDU(Bridge Protocol Data Unit)的发送和接收过程。介绍了`br_transmit_config`函数如何处理配置BPDU的发送,包括速率限制、报文填充和发送。同时,阐述了`br_stp_handle_bpdu`函数如何接收并处理BPDU,区分配置BPDU和TC-BPDU,以及如何根据BPDU的内容更新网桥状态。
摘要由CSDN通过智能技术生成
//	传输配置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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值