网络子系统29_桥接转发数据库

本文详细介绍了Linux内核网络子系统中的桥接转发数据库,包括其容量(256个bucket)、老化机制以及关键操作如查询、添加转发项的过程。桥接转发数据库用于维护网络中设备的MAC地址映射,通过哈希表和age_list链表进行高效管理,并通过垃圾回收定时器定期清理过期条目。
摘要由CSDN通过智能技术生成
//	转发数据库
//		1.容量
//			net_bridge->hash[BR_HASH_SIZE],其中BR_HASH_SIZE为(1<<8),有256个bucket
//		2.老化机制,
//			2.1 gc函数,到期时会顺序遍历age_list上的转发项,修改gc函数下一次到期时间为age_list中第一个没有过期的转发项的剩余时间。
//			2.2 age_list链表,保存除本机l2地址以外的所有转发项,按照到期时间进行排序,新添加或更新的转发项保存在age_list尾部。


//	网桥转发数据库初始化
//	调用路径:br_init->br_fdb_init
1.1 void __init br_fdb_init(void)
{
	//创建转发项的SLAB cache
	br_fdb_cache = kmem_cache_create("bridge_fdb_cache",
					 sizeof(struct net_bridge_fdb_entry),
					 0,
					 SLAB_HWCACHE_ALIGN, NULL, NULL);
}


//	查询转发项
//		__br_fdb_xxx不会递增net_bridge_fdb_entry的引用计数,br_fdb_xxx会递增net_bridge_fdb_entry的引用计数		
//	参数:
//		addr,目的l2地址
//	函数主要任务:
//		hash l2地址到正确的bucket,遍历bucket查找具有相同l2地址的转发项
2.1 struct net_bridge_fdb_entry *__br_fdb_get(struct net_bridge *br,
					  const unsigned char *addr)
{
	struct hlist_node *h;
	struct net_bridge_fdb_entry *fdb;
	//ne
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值