首页 > 编程语言 > 详细

Linux的哈希查找算法

时间:2020-10-08 18:26:31      阅读:37      评论:0      收藏:0      [点我收藏+]

这是Linux操作系统的经典的路由查找算法,直到现在还是默认的路由查找算法。然而它很简单。由于它的简单性,内核(kernel)开发组一直很推崇它,虽然它有这样那样的局限性,但由于Linux内核的哲学就是“够用即可”,因为Linux几乎从来不被用于专业的核心网络路由系统,因此哈希查找法一直都是默认的选择。

查找过程:

技术分享图片

 

 技术分享图片

 

 为了实现最长前缀匹配,从最长的掩码开始匹配,每一个掩码都有一个哈希表,目的IP地址哈希到这些哈希表的特定的桶中,然后遍历其冲突链表得到最终结果。

 注意,哈希查找算法是基于掩码的遍历来实现严格的最长前缀匹配的,也就是说如果一条最终将要通过默认网关发出的数据报,它起码要匹配32次才能得到结果。 这种方式十分类似于传统的Netfilter的filter表的过滤方式-一个一个尝试匹配,而不像HiPac的过滤方式,是基于查找的。高性能的路由器在查找路由的时候使用的都是基于查找型数据结构的方式,最常用的就是查找树了。

 

关于默认路由:

通过默认路由,路由表里任何一个地址都可以与之匹配,默认路由一般标记为0.0.0.0 /0,但是这里的0.0.0.0 /0 不是说ip是0.0.0.0 ,而是掩码是0(0.0.0.0),掩码为0也对应了哈希查找中按掩码顺序查找的方法,有的路由器也可以配置为default来避免误以为ip是0.0.0.0 ,不然ip若真的是0.0.0.0 掩码应该是/32了

 

 

 

参考文章:

https://blog.csdn.net/dog250/article/details/6596046

 

Linux的哈希查找算法

原文:https://www.cnblogs.com/lb2511/p/13781502.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!