拓扑说明: R1——R2 均是思科路由器
R1配置:lo1:172.16.1.1/24; lo2:172.16.2.1/24;lo3:172.17.1.1/24;lo4:172.17.2.1/26;S1/ 1:12.1.1.1/24 与R2 :S1/0 12.1.1.2/24相连
R2配置:S1/0:12.1.1.2/24;lo0:192.168.2.1/24;lo2:172.16.3.1/24
以下是R1路由表:
以下是R2路由表
我现在R1上pingR2的lo2地址172.16.3.1,结果怎么样?我认为一定会通,我相信绝大多数人都认为会通,可实际的情况呢?却不通。
其实这里面不通是有道理的!经过排查,原来R1上执行的是有类路由查找。我们现在可以回忆下路由查找过程:
当一个路由器收到一个IP报文后,检查目的IP地址,查找路由表,执行路由转发,具体过程如下:
1,路由器根据数据包中的目的IP地址,查找级别1路由:网络路由(包括父路由)、超网路由、默认路由;
2,如果最佳匹配(指的是最长子网掩码)是级别1的最终路由,这条路由被用来转发数据包;
3,如果最佳匹配是级别1中的父路由,继续下一步查找;
4,如果在父路由中找到了匹配,继续查找该父路由下的子路由。
5,如果有一条子路由匹配,这条路由用来转发数据包;
6,如果没有子路由匹配,则看下一条分析:
7,如果路由器执行的是有类路由查找,则执行第八步;如果执行的是无类路由查找,则执行第九步;
8,有类路由查找:终止查询,丢弃数据包;
9,无类路由行为:继续查找级别1的超网路由和默认路由,有匹配就使用超网和默认路由转发数据包
10,没找到超网路由也没配置默认路由,则终止查找丢弃数据包。
熟悉以上过程,我们大致可以猜测路由器R1在查找路由时,第七步出了问题,执行的是有类路由查找。找到原因,修改路由器R1的配置,特权模式下执行命令:ip classless 。再次在R1上ping172.16.3.1 发现成功P通。