设为首页收藏本站language 语言切换
查看: 2655|回复: 5
收起左侧

[分享] IP路由查找的“最长匹配原则”解析

[复制链接]
 成长值: 64645
发表于 2019-7-18 10:06:20 | 显示全部楼层 |阅读模式
最长匹配原则是CISCO IOS路由器默认的路由查找方式。当路由器收到一个IP数据包时,会将数据包的目的IP地址与自己本地路由表中的表项进行bit by bit的逐位查找,直到找到匹配度最长的条目,这叫最长匹配原则。

1.jpg

这里有几个概念要先搞清楚:

    看上面的图,灰色的空间172.16.0.0/16,这个网络号,我们称为主类网络号,所谓主类网络号,意思是该网络号,按照其所属的IP地址类别区分后,对应上的默认的子网掩码长度后得到的网络号。如172.16.0.0这是一个B类地址,B类地址的默认子网掩码长度是16位,因此172.16.0.0/16本身就是一个主类网络号。再举过一个例子,10.1.12.0/24,首先10开头的,这是一个A类地址,A类地址默认的掩码是255.0.0.0,因此10.1.12.0/24它的主类网络号是10.0.0.0/24。

    我们首先顺着上面的图,从172.16.0.0/16开始往里走,下一个我们看到的网络号是172.16.10.0/24,这很明显是应用了VLSM可变长子网掩码之后,得到的一个172.16.0.0/16这个主类网络的一个子网。所以所谓的子网,我们可以理解为是在网络号所属类别的默认掩码长度的基础上,将掩码“拉长”或者向主机位借位从而得到的一个网络号。实际上172.16.0.0/16是将172.16.10.0/24囊括在内的一个区间。那么在这里,如果我们有一个IP:172.16.10.1,实际上这个IP既可以理解为在172.16.0.0/16网络内,也是在172.16.10.0/24网络内,当然,这里我们能看出来,谁更精确呢?很明显是172.16.10.0/24更精确,我们说,它的匹配长度相比172.16.0.0更长。

    当然子网172.16.0.0/16还可以进一步划分子网,得到172.16.10.0/30,甚至172.16.10.1/32,那么如果这些前缀都存在的情况下,当我要去找172.16.10.1,谁的匹配度最高呢?很明显,是172.16.10.1/32这条主机前缀,或者说,主机路由吧?这就是最长匹配原则。
OK,现在回到172.16.0.0/16这个主类网络号,然后我们向外走,看上图。172.0.0.0/8实际上是将这个B类地址的掩码向左移了8bits,这样一来得到的这个网络号实际上是囊括了172.16.0.0/16在内的一个大的网络号,我们称其为超网。


2.png

    因此,当路由器的路由查找方式为classless也就是无类路由查找方式时,路由器默认的查找动作是最长匹配原则。例如上图,当R3收到一个数据包,去往172.16.1.1,那么实际上,172.16.1.1是“掉落”在172.16.1.0/24及172.16.0.0/16网络中的,两者貌似皆可,但是172.16.1.0/24显然,匹配度要更长,因此,最终这个数据包被丢给了R1。同理若有数据包去往172.16.2.1呢?由于根据最长匹配原则,172.16.2.0/24这个条目匹配度最高,因此数据被扔给了R2。这个过程有点类似下面的样子:


3.png

并且,当R2挂掉之后,172.16.2.0/24的条目失效,去往2.0子网的数据此时匹配的路由条目是172.16.0.0/16这条路由,因此被送往了R1。
这就是利用最长匹配原则,实施的一种简单的数据分流及路径冗余的方法。

下面我们总结一下路由器关于路由查找的几个重点内容:
不同的前缀(网络号+掩码,缺一不可),在路由表中属于不同的路由
相同的前缀,通过不同的协议获取,先比AD,后比metric
这是一般情况,当然有二般情况,这就要看特定的环境和特定的路由协议了
默认采用最长匹配原则,匹配,则转发;无匹配,则找默认路由,默认路由都没有,则丢弃
路由器的行为是逐跳的,到目标网络的沿路径每个路由器都必须有关于目的地的路由
数据是双向的,考虑流量的时候,要关注流量的往返。

本文转自 红茶三杯博客  博客:http://blog.sina.com.cn/vinsoney

发表于 2019-7-31 10:55:28 | 显示全部楼层
感謝喬幫主!
沙发 2019-7-31 10:55:28 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2019-8-20 10:29:58 | 显示全部楼层
感谢感谢感谢感谢
板凳 2019-8-20 10:29:58 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2019-8-29 13:17:27 | 显示全部楼层
感谢大神分享
地板 2019-8-29 13:17:27 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2020-7-17 13:33:01 | 显示全部楼层
感谢楼主分享
6# 2020-7-17 13:33:01 回复 收起回复
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-4-26 10:36 , Processed in 0.126420 second(s), 25 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表