Skip to main content

 路由器设置 > 新闻资讯 >

看看递归路由

2013-11-12 00:51 浏览:

  拓扑:

203358805.png

 

  屏幕剪辑的捕获时间:2013/10/20 20:05

  路由的递归查询到底是干什么的?

  路由的递归查询针对静态路由来讲,对于动态路由就没必要了。之所以要使用递归路由,目的是绕开那些经常变动的链路,可以使静态路由的配置工作量减小。

  使用递归路由的一个条件:到达目标网络的链路在途中可以汇聚成比目标网络数量更少的链路。

  路由器逐跳将数据包发送到目的地,静态路由可以指定到目的地的每一跳,但是如果路径上某个节点出现问题,整条静态路由就不能工作了,如果真的能用到静态路由,则需要管理员重新指定一条可以到达目的地的静态路由,很蛋疼。

  递归路由可以在一定程度上解决这个问题:

  对于上面的拓扑,R1需要经过R2或R3路由器,将数据包发送给R4下的网段,管理员需要指定一条从R2或R3到R4下网段的静态路由,如果指定的是经过R2的静态路由,那如果R2不幸down掉,则需要在指定经过R3的路由,对于这样简单的拓扑还可以,但对于大点的网络环境,则比较麻烦。

  如果R1不指定R2或R3,直接指定R4路由器的f0/0接口,如果R2 down掉,则可以通过R3继续工作。

  目标:

  从R1可以访问R4路由之下的四个网段。

  实现:

  1.静态路由关联R2或R3,来实现与R4的通信,但这样存在问题,如果R2或R3中有路由器无法使用了,得重新修改路由配置

  2.直接关联R4的f0/0接口:这样R2或R3失效后,R1仍可以访问R4网段,这里用到就是递归路由了吧。

  具体操作:

  R1指定到R4的静态路由:

  R1(config)#ip route 40.0.1.0 255.255.255.0 fastEthernet0/020.2.2.4

  R1(config)#ip route 40.1.1.0 255.255.255.0fastEthernet 0/020.2.2.4

  R1(config)#ip route 40.2.1.0 255.255.255.0fastEthernet 0/020.2.2.4

  R1(config)#ip route 40.3.1.0 255.255.255.0fastEthernet 0/020.2.2.4

  R2指定到R4的静态路由:

  R2(config)#ip route 40.0.1.0 255.255.255.0 fastEthernet 0/120.2.2.4

  R2(config)#ip route 40.1.1.0 255.255.255.0 fastEthernet 0/120.2.2.4

  R2(config)#ip route 40.2.1.0 255.255.255.0 fastEthernet 0/120.2.2.4

  R2(config)#ip route 40.3.1.0 255.255.255.0 fastEthernet 0/120.2.2.4

  R3指定到R4的静态路由:

  R3(config)#ip route 40.0.1.0 255.255.255.0 fastEthernet 0/120.2.2.4

  R3(config)#ip route 40.1.1.0 255.255.255.0 fastEthernet 0/120.2.2.4

  R3(config)#ip route 40.2.1.0 255.255.255.0 fastEthernet 0/120.2.2.4

  R3(config)#ip route 40.3.1.0 255.255.255.0 fastEthernet 0/120.2.2.4

  R1要把报文发给40.0.1.0等四个网段,先要把报文发给静态路由中指定的下一跳地址,也就是20.2.2.4,但R1的路由表里没有20.2.2.4的的路由条目,R1会干什么?R1会像PC一样,发送ARP请求,用debug 来查看ARP信息:

  Mar 1 00:25:23.783: IPARP: creating incomplete entry for IP address: 20.2.2.4 interfaceFastEthernet0/0

  *Mar 1 00:25:23.783: IPARP: sent req src 10.1.1.1 c400.1910.0000,

  dst20.2.2.4 0000.0000.0000 FastEthernet0/0

  这里可以看到,R1发送arp请求,源地址是10.1.1.1,源mac地址是c400.1910.0000,目的地是:20.2.2.4,目的mac是:0000.0000.0000,通过接口:FastEthernet0/0,R1向R2和R3发送ARP请求,R2和R3的代理ARP功能,会判断,请求者和被请求者是不是在同一个广播域,是否拥有去往源和目的地址的路由,是否开启接口代理ARP,如果全部满足,则R2和R3就会给R1发送ARP应答。

  R2中:

  *Mar 1 00:25:21.859: IPARP: rcvd req src 10.1.1.1 c400.1910.0000, dst 20.2.2.4 FastEthernet0/0

  *Mar 1 00:25:21.863: IPARP: sent rep src 20.2.2.4 c401.1910.0000,

  dst10.1.1.1 c400.1910.0000 FastEthernet0/0

  R3:

  *Mar 1 00:48:20.815: IPARP: rcvd req src 10.1.1.1 c400.1910.0000, dst 20.2.2.4 FastEthernet0/0

  *Mar 1 00:48:20.819: IPARP: sent rep src 20.2.2.4 c402.1910.0000,

  dst10.1.1.1 c400.1910.0000 FastEthernet0/0

  来查看R1收到ARP应答的情况:

  *Mar 1 00:49:24.239: IPARP throttled out the ARP Request for 20.2.2.4

  *Mar 1 00:49:24.303: IPARP rep filteredsrc 20.2.2.4 c401.1910.0000, dst 10.1.1.1 c400.1910.0000 wrong cable, interfaceFastEthernet0/0

  *Mar 1 00:49:24.303: IPARP rep filtered src 20.2.2.4 c402.1910.0000, dst 10.1.1.1 c400.1910.0000 wrongcable, interface FastEthernet0/0

  这里,发现R1将应答过滤掉了。。。

  对于PC,如果该设备收到路由器传递的ProxyARP Reply,则该PC会信任该Reply,并将其加入ARP表中;

  而对于路由器,如果该设备收到Proxy ARPReply,则该路由器会优先判断该Reply中应答者ip地址所在网段是否可达,如果是,则接收,否则,直接丢弃。

  这里R1收到的ARP,应答者的ip地址应该是20.2.2.4,所以,R1会将收到的rep过滤掉。

  可以在R1上添加一条去往20.2.2.0的路由条目

  R1(config )#ip route 20.2.2.0 255.255.255.0 10.1.1.2

  这一条静态路由的作用就是,R1不过滤收到的代理ARP回复,这里的下一跳地址没有实际意义。

  在R4上指定一个去R1的路由条目:

  R4(config)#ip route 10.1.1.0 255.255.255.0 20.2.2.2

  这样R1就可以去往R4下网段了。