AR G3 双重ARP代理的一个问题

digest [复制链接]
发表于 : 2013-10-11 15:01:16 最新回复:2018-01-14 13:52:52
4090 10
周常青  专家  

 

一、实验拓扑

本实验为真机实验,***上亦可重现,此处拓扑用于说明

二、实验配置

R1的配置

sysname R1

interface GigabitEthernet0/0/1

ip address 12.1.1.1 255.255.255.0

ip route-static 3.3.3.0 255.255.255.0 GigabitEthernet0/0/1

 

R2的配置

sysname R2

interface GigabitEthernet0/0/1

ip address 12.1.1.2 255.255.255.0

arp-proxy enable

interface GigabitEthernet0/0/2

ip address 23.1.1.1 255.255.255.0

ip route-static 3.3.3.0 255.255.255.0 GigabitEthernet0/0/2

 

R3的配置

sysname R3

interface GigabitEthernet0/0/2

ip address 23.1.1.2 255.255.255.0       

arp-proxy enable

interface LoopBack0

ip address 3.3.3.3 255.255.255.0

ip route-static 12.1.1.0 255.255.255.0 23.1.1.1

 

三、问题重现

1、  R1ping 3.3.3.3 不通

[R1]pin 3.3.3.3        

  PING 3.3.3.3: 56  data bytes, press CTRL_C to break

    Request time out

    Request time out

    Request time out

    Request time out

    Request time out

  --- 3.3.3.3 ping statistics ---

    5 packet(s) transmitted

    0 packet(s) received

    100.00% packet loss

2、  R2添加命令arp static 23.1.1.1 x-x-x(为R3g0/0/0MAC)可以通信

[R2]arp static 23.1.1.1 5489-9876-8225

[R1]ping 3.3.3.3

  PING 3.3.3.3: 56  data bytes, press CTRL_C to break

    Request time out

    Reply from 3.3.3.3: bytes=56 Sequence=2 ttl=254 time=1 ms

    Reply from 3.3.3.3: bytes=56 Sequence=3 ttl=254 time=1 ms

    Reply from 3.3.3.3: bytes=56 Sequence=4 ttl=254 time=10 ms

    Reply from 3.3.3.3: bytes=56 Sequence=5 ttl=254 time=1 ms

  --- 3.3.3.3 ping statistics ---

    5 packet(s) transmitted

    4 packet(s) received

    20.00% packet loss

    round-trip min/avg/max = 1/3/10 ms

 

四、原因解释

R1发起ping 3.3.3.3的数据包后,R1把数据包投递给R2R2查路由表下一跳是23.1.1.1开始解析23.1.1.1MAC地址,以封装数据帧的目标MAC,此处有两个问题,如下所述。

[R2]dis ip routing-table

Route Flags: R - relay, D - download to fib

------------------------------------------------------------------------------

Routing Tables: Public

         Destinations : 11       Routes : 11      

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

        3.3.3.0/24  Static  60   0           D   23.1.1.1        GigabitEthernet0/0/2

       12.1.1.0/24  Direct  0    0           D   12.1.1.2        GigabitEthernet0/0/1

       12.1.1.2/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/1

     12.1.1.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/1

       23.1.1.0/24  Direct  0    0           D   23.1.1.1        GigabitEthernet0/0/2

       23.1.1.1/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/2

     23.1.1.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/2

[R2]dis arp

IP ADDRESS      MAC ADDRESS     EXPIRE(M) TYPE        INTERFACE   VPN-INSTANCE

                                          VLAN/CEVLAN PVC                     

------------------------------------------------------------------------------

12.1.1.2        5489-9876-832c            I -         GE0/0/1

12.1.1.1        5489-9876-830c  20        D-0         GE0/0/1

23.1.1.1        5489-9876-832d            I -         GE0/0/2

23.1.1.2        5489-9876-8225  19        D-0         GE0/0/2

23.1.1.1        Incomplete      1         D-0         GE0/0/2

------------------------------------------------------------------------------

Total:5         Dynamic:3       Static:0     Interface:2   

 

第一个问题

如上两表所示,路由器已经知道23.1.1.1是自己的接口了,并且已经拥有23.1.1.1ARP表项了,按常理路由器无需再解析ARP包了,但是事实上发现它还要额外解析23.1.1.1ARP表项,只不过结果是incomplete而已。原因为何?

因为路由器如果使用5489-9876-832d做目标MAC的话,此时数据帧从g0/0/2出来,源MAC也是5489-9876-832d这个,如果此帧送到交换机的话就会反回来,出现不可达目的地的情况。但是如果额外解析,对方设备是23.1.1.2,虽然是开了代理ARP,但是并没有对此MAC进行代理解析,所以出现了Incomplete

我在此实验里后来之所以能ping通,是因为使用静态ARP23.1.1.1进行解析,把MAC地址配置成R3g0/0/2的接口MAC,帮助路由器R2完成这个功能。

第二个问题是

路由器R2已经有静态路由是从本地出口出来的,明知此操作是要直接解析3.3.3.3MAC,为何不直接调用3.3.3.3MAC做数据帧目标MAC

五、修改建议(二选一)

方案一:

R2在配置静态路由从本地出口出来的时候,自动添加静态ARP,把自己的IP和对方的MAC绑定到一起,此方案不推荐,因为当对方有多个设备的时候不容易处理。

 

方案二:

R2配置静态路由从本地出口出来的时候,针对路由的数据包,如果命中此静态路由,此时不解析下一跳的MAC,因为下一跳已经是自己,此时应该发起ARP请求询问目的地的MAC(如果ARP表里已经有此项则跳过此步骤),然后直接封装目标MAC并从静态路由指定的出口发出即可。(推荐使用此方案,思科设备采用类似的实现,并且没有这个问题)。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
  • x
  • 常规:

点评 回复

跳转到指定楼层
海之南     发表于 2013-10-11 15:59:43 已赞(0) 赞(0)

顶上,受教了.

  • x
  • 常规:

点评 回复

kmyd  版主   发表于 2013-10-11 17:50:07 已赞(0) 赞(0)

不错,学习了!!
  • x
  • 常规:

点评 回复

clcilin     发表于 2013-10-24 11:00:15 已赞(0) 赞(0)

请问方案二的,在思科上是如何实现的??若在华为上,又能怎样实现呢,请告之,谢谢!!!!
  • x
  • 常规:

点评 回复

w00188679     发表于 2013-11-29 09:17:31 已赞(0) 赞(0)

方案二,Cisco设备是默认的,华为设备怎么实现解析目的IP而不是下一跳IP,有什么命令吗?

  • x
  • 常规:

点评 回复

周常青  专家   发表于 2013-10-24 11:12:31 已赞(0) 赞(0)

思科的静态路由指的是本地出口时,如果带下一跳,就不能是自己的设备(这个和华为一样),但是如果是没有指下一条,路由表里就绝对不会把下一跳自动填充成自己,所有就会处理路由的包时候就会自动调用对方的代理ARP,华为的下一跳是自己就出现了ARP解析的 Incomplete 。建议华为在处理的时候也要避开这个。路由下一跳是自己,不应该解析下一跳的ARP,而是解析目的IP地址的ARP(即使用对方的代理ARP)

  • x
  • 常规:

点评 回复

周常青  专家   发表于 2013-11-29 11:47:25 已赞(0) 赞(0)

回复 6 楼

我是写给AR的研发让他们改的,没有命令的

  • x
  • 常规:

点评 回复

liushuo  导师   发表于 2013-11-29 23:49:59 已赞(0) 赞(0)

这是很久之前的一个人发的求教贴
  • x
  • 常规:

点评 回复

liushuo  导师   发表于 2013-11-30 00:01:44 已赞(0) 赞(0)

我觉得问题是出在第二个arp代理上面

因为arp代理要正常工作必须满足两个条件:

1、目的ip本机可路由(这个没问题)

2、发起arp请求的源ip必须跟本机arp代理接口ip在同网段(问题就出在这,导致第二个arp代理没有生效)

  • x
  • 常规:

点评 回复

周常青  专家   发表于 2013-11-30 10:13:46 已赞(0) 赞(0)

回复 9 楼

这第二个条件在别的厂商就没有了限制,所以应该改进一下才好

  • x
  • 常规:

点评 回复

12
返回列表
发表回复
您需要登录后才可以回帖 登录 | 注册

如果附件按钮无法使用,请将Adobe Flash Player 更新到最新版本!
快速回复 返回顶部