码迷,mamicode.com
首页 > 其他好文 > 详细

IP之routing(二)

时间:2015-02-03 11:09:15      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:linux   router   routing   ip   

接《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中。

IP之routing(二)

标签:linux   router   routing   ip   

原文地址:http://blog.csdn.net/wfhh000/article/details/43446249

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!