IP之routing(二)

接《IP之routing(一)》


Two-level hashing(fib structure)

 

Routing cache的数据结构叫做rt_hash_table,它是rt_hash_bucket的一个数组,它中的每个数组元素都指向rtablelist,而rt_hash()的参数有3个:source ipdestination ip、服务类型。

如果发生routing cache miss,则Forwarding Information dataBase (FIB)将被searchLinux中可以存在多张routing table,而每个routing table被存放在叫做fib_table(如上图)的数据结构中。该结构中的tb_data指向fh_hash,它包含了一个hash数组fn_zones和一个指向fn_zone的指针fn_zone_listfn_zones是一个长度为33的数组,fn_zones中的index表示前缀的长度,如fn_zones[16]表示fn_zones指向一个前缀为16fn_zone结构。所有的fn_zone都被fn_zone_list链在一起,按照最长匹配的顺序来连接,即匹配最长的放在最前面。

fib_lookup()会调用每个talbetb_lookup()search routing table,默认的tb_lookup()函数是fn_hash_lookup() (在 src/net/ipv4/fib_hash.c ),它会通过fn_zone_list来顺序的搜索routing table,如果匹配成功,则一定就是longest matching

数组fn_zones的每一项都指向一个叫做fn_zone的结构,该结构包还一个指针fz_next(用于链接所有的fn_zone)和一个hash tablefz_hashfz_hash的每一项是一个指向fib_node结构的指针。每个fib_node对应唯一一个子网,fn_key是子网的前缀,而output device  the next-hop router包含在fib_info中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值