路由的选路原则:最长、最细,与生活中的喜好不同

概述

人生总是有很多的选择,而不同的选择会有不同的结果,你现在的生活状态就是你曾经选择,因此我们最好不要抱怨现在的生活,因为一切都是你自己选择的。

在网络世界里也是一样的,当路由器收到报文以后,选择哪条路由转发,也会有很多的选择。只不过它们的选择相对我们来说非常的不自由,因为它们要遵循一个规则:最长匹配。我们今天会以一个例子来阐述这种最长匹配工作原理,不过在此之前先来了解一下具体的规则。

最长匹配原则

我们都知道路由器收到一个报文以后,会取出报文的目的IP地址,然后根据目的IP地址查找路由表。

针对这个目的IP地址,在路由表中可能有多个条目都可以转发它,那我们该如何选择呢?

如下图的路由表,如果路由器收到目的IP为20.1.1.3的报文,该如何转发呢?

路由的选路原则:最长、最细,与生活中的喜好不同

路由表举例

初学者会感觉很迷茫,因为会每一个条目看起来都可以使用,选择哪个条目都行。其实遇到这种情况我们不用慌张,只需要记住一句话就可以:在选路时,挑选那条最长、最细的路由转发数据

例如上面的情况会进行如下的查找:

第一步:先在路由表中,查找最长(32网段)的路由是否匹配:路由20.1.1.2/32和目的IP 20.1.1.3的报文不匹配,所以继续查找;

第二步:在路由表中,查找次长(24网段)的路由是否匹配:路由20.1.1.0/24包含20.1.1.3,所以匹配,终止查找,从这条路由转发。

在工作中,情况有时还会复杂一些,我们还可能遇到子网,汇总,默认等不同的路由条目。我总结了一下,如下图来表示:

路由的选路原则:最长、最细,与生活中的喜好不同

路由条目

每次根据目的IP查找路由表时,都会按照从上到下的原则进行查找,只有上一条不匹配,才会查找下一个条目。这也是最长匹配名称的由来:看上面这些子网掩码,主机路由的子网为32,最长;缺省路由的子网为0,最小;其它的几个夹在中间,位置越上,子网掩码越大,越优先匹配。

实验

我们以一个例子来验证路由的这种最长匹配原则,拓扑图如下:

拓扑

路由的选路原则:最长、最细,与生活中的喜好不同

拓扑

  • PC1想要访问PC2
  • 在R1上针对PC2(20.1.1.2)分别配置三条静态路由:主机、子网、主网
  • 在R2、R3、R4和R5相连的接口抓包,看报文的转发路径

配置

R1的静态路由配置和路由表:

路由的选路原则:最长、最细,与生活中的喜好不同

R1的配置

路由的选路原则:最长、最细,与生活中的喜好不同

R1的路由条目

R2-R4的配置都类似,只配置一条静态路由,指向PC2的方向

路由的选路原则:最长、最细,与生活中的喜好不同

R2的配置

PC1 ping PC2以后,在R1和R2-R4连接的线路上抓包:

路由的选路原则:最长、最细,与生活中的喜好不同

在R1和R2相连的链路上抓包

发现只有在R1和R2相连的链路上能抓到ICMP报文,则证明报文使用32位的主机路由进行转发了,如下图:

路由的选路原则:最长、最细,与生活中的喜好不同

R1路由表,主机路由转发

总结

详细经过上面的描述,相信各位小伙伴已经知道路由表时如何选择转发路径了吧?其实还是记住那句话:匹配最长、最细的那条路由。

如果各位小伙伴还是有疑问,欢迎留言讨论!也非常高兴小伙伴关注我的头条号,一起讨论网络问题!

最后给小伙伴来个简单的投票,看对路由的匹配原则是否了解:如下图所示的路由表,如果收到目的IP为30.1.1.2的报文,下一跳该如何选择呢?

收到目的IP为30.1.1.2的报文如何转发数据? (单选)
0人
0%
下一跳为13.1.1.3
0人
0%
下一跳为14.1.1.4
0人
0%
下一跳为12.1.1.2
0人
0%
丢弃报文
<button>投票/<button>
路由的选路原则:最长、最细,与生活中的喜好不同

路由表


分享到:


相關文章: