路由的递归查询对静态路由来讲,对于动态路由就没必要了。之所以要使用递归路由,目的是绕开那些经常变动的链路,可以使静态路由的配置工作量减小。
一、实验拓扑
二、实验说明
1、R1若想跟R4通信,R1必须拥有去往R4的静态路由,若简单的拓扑,若干条静态路由即可,若去往R4的链路有很多条,或者经常变动,则需要管理员经常写大量的静态路由来保证通信。此时为了减少工作量,就可以使用递归路由。
2、递归路由的实现就是静态路由直接关联目标网段路由器的入站接口的IP地址。
3、实现非对称路由。R1的icmp echo包和R4的icmp reply包使用不同路径。
三、实验步骤
1、在R1,R4上配置静态路由。
2、当R1收到去4.4.4.0/24的数据时,查询路由表,从f0/0发出,但是只知道下一跳地址20.1.1.4,此时R1就向f0/0发送ARP广播,查询MAC地址。当R2和R3收到ARP广播会如何处理呢?默认情况下R2和R3都开启了代理ARP,查询到本地ARP表中有该地址的ARP记录,则发送ARP-replay包。但是在R1上发现R1并没有将20.1.1.4的mac地址记录到ARP表中,却是丢弃,这是为什么呢?因为R1会先判断应答者所在网段是否可达(注:PC是无条件接收proxy-ARP reply并加入ARP表的)。还有一个问题就是R2和R3都收到了ARP广播,R1会选择走R2还是R3?
3、在R1上配置去往20.1.1.0/24的静态路由,R4上配置去往10.1.1.0/24的静态路由。此时再ping 4.4.4.4,发现arp表项中拥有了20.1.1.4的记录,发现是R2的f0/0mac地址。R1发送ARP广播之后,R1和R2都会发送arp-reply包,谁后到,就把谁的mac地址写入记录表中。因此递归表查询的下一跳节点的地址,丝毫不影响路径的选择,影响路径选择的是proxy arp。
4、如何实现非对称路由呢?arp表项默认保存时间是4个小时,但4个小时过后,则重新发送arp-echo包,这时去4.4.4.0/24是走R2还是R3有随机性。此时我们可能通过修改arp过期时间和关闭接口的代理ARP功能来实现非对称路由。
R2(config-if)#no ip proxy-arp
R3(config-if)#no ip proxy-arp
5、虽然禁用了proxy arp,当数据到达指定的路由器后没去目的网段的路由,此时则需要在R2和R3添加静态路由。通过抓取链路上的包来验证结果。
R2(config)#ip route 1.1.1.0 255.255.255.0 f0/0 10.1.1.1
R3(config)#ip route 4.4.4.0 255.255.255.0 f0/1 20.1.1.4
R2到R1的链路抓包结果全是reply类型的包,R3到R4的链路上全是request包,成功实现非对称路由。