华为技术之ARP-地址解析协议

数据包的封装结构:

  • 四层:源端口号 目标端口号
  • 三层:源IP地址 目标IP地址
  • 二层:源MAC地址 目标MAC地址

ARP原理:

当路由器从接口接收到比特流后,首先解封装查看目标MAC地址,若该地址是自己的地址或者是自己所在组的组播地址或者广播地址,都说明该数据是发给自己的,可以继续向上解封装,查看目标IP地址。若目标MAC地址不是自己,路由器直接丢弃。

1、广播请求,目标地址MAC地址为FFFF-FFFF-FFFF。

2、单播回应

 

ARP的触发条件:

1、访问的目标地址,跟自己的接口在同一网段,会触发ARP请求,如果自己的ARP表中已经存在该地址的映射表项,不会触发ARP请求。

2、如果访问的目标地址,跟自己接口不在同一网段,则使用网关MAC地址作为目标MAC的封装,如果没有网关,无法完成数据报的封装

 一、免费ARP(无故ARP)

  • 设备主动使用自己的IP地址作为目的IP地址发送ARP请求,此种方式称之为免费ARP
  • 免费ARP有如下作用:
    • 1、 IP地址冲突检测:当设备接口的协议状态变为Up时,设备主动对外发送免费ARP报文。正常情况下不会收到ARP应答,如果收到,则表明本网络中存在与自身IP地址重复的地址。如果检测到IP地址冲突,设备会周期性的广播发送免费ARP应答报文,直到冲突解除。
    • 2、用于通告一个新的MAC地址:发送方更换了网卡,MAC地址变化了,为了能够在动态ARP表项老化前通告网络中其他设备,发送方可以发送一个免费ARP。
    • 3、在VRRP备份组中用来通告主备发生变换:发生主备变换后,MASTER设备会广播发送一个免费ARP报文来通告发生了主备变换
  • 当设备收到免费ARP报文时,进行如下判断:
    • 如果免费ARP报文中源IP地址和自己的IP地址相同,则周期性的广播发生免费ARP应答报文,告知此IP地址在网络中存在冲突,直到冲突解除
    • 如果免费ARP报文中源IP地址和自己的IP地址不相同,免费ARP报文是在VLANIF接口收到的,并且设备上已经有免费ARP报文中源IP地址对应的动态ARP表项,则进行ARP学习,即根据收到的免费ARP报文更新该ARP表项。其余情况收到免费ARP后均不进行ARP学习。

 二、代理ARP(由于路由器隔离广播域)

  • 路由器代替终端发送广播ARP请求,默认关闭。开启命令:[R1-GE0/0/0]arp-proxy enable
  • 如果ARP请求是从一个网络的主机发往同一网段但不在同一物理网络上的另一台主机,那么连接这两个网络的设备(通常是路由器或者三层交换机)就可以回答该arp请求,这个过程称之为ARP代理。通过代理ARP,本地设备获得的远端主机地址不是其真正的MAC,而是本地直连设备接口的MAC地址(主机网关的MAC地址)。
  • 触发条件
    • 代理ARP开启
    • 目标IP地址可达,并且本地到达目标地址的出接口和接受ARP请求报文的入接口不一致
  • 三种Proxy ARP方式
    • 1、路由式Proxy ARP:需要互通得到主机(主机上没有配置缺省网关)处于相同的网段但不在同一物理网络(即不在同一广播域)的场景
    • 2、VLAN内Proxy ARP:需要互通的主机处在同网段,并且属于相同VLAN,但是VLAN内配置的端口隔离的场景
    • 3、VLAN间Proxy ARP:需要互通的主机处在相同网段,但属于不同VLAN的场景

1、路由式代理ARP实例 :

华为技术之ARP-地址解析协议

当Host_1需要与Host_2通信时,由于目的IP地址与本机的IP地址为同一网段,因此Host_1以广播形式发送ARP请求报文,请求Host_2的MAC地址。但是,由于两台主机处于不同的物理网络(不同广播域)中,Host_2无法收到Host_1的ARP请求报文,因此也就无法应答。
        通过在Router上启用路由式Proxy ARP功能,可以解决此问题。启用路由式Proxy ARP后,Router收到ARP请求报文后,Router会查找路由表。由于Host_2与Router直连,因此Router上存在到Host_2的路由表项。Router使用自己的MAC地址给Host_1发送ARP 应答报文。Host_1将以Router的MAC地址进行数据转发。此时,Router相当于Host2的代理。如图所示,Host_1上的AR表项中到目的地址Host_2的IP地址对应的MAC地址为Router的VLANif10接口的Ac地址。
 

华为技术之ARP-地址解析协议

2、VLAN内代理ARP实例

华为技术之ARP-地址解析协议

由于在Router上配置了VLAN内不同接口彼此隔离,因此Host_1和Host_2不能直接在二层互通。
若Router的接口使能了VLAN内Proxy ARP功能,可以使Host_1和Host_2实现三层互通。Router的接口在接收到目的地址不是自己的ARP请求报文后,Router并不立即丢弃该报文,而是查找该接口的ARP表项。如果存在Host-2的ARP表项,则将自己的MAC地址发送给Host_1,并将Host_1发送给lost_2的报文代为转发。实际上此时Router相当于Host_2的代理。
 

华为技术之ARP-地址解析协议

3、VLAN间代理ARP实例

华为技术之ARP-地址解析协议

由于Host_1和Host_2属于不同的Sub-VLAN,Host_1和Host_2不能直接实现二层互通。
如果Router上使能了VLAN间Proxy-ARP功能,可以使Host_1和Host_2实现三层互通。Router的接口在接收到目的地址不是自己的ARP请求报文后,并不立即丢弃该报文,而是查找ARP表项(包括动态学习的ARP表项和静态配置的ARP表项),如果存在Host_2的ARP 表项,则将自己的MAC地址发送给Host_1,并将Host-1发送给Host_2的报文代为转发。实际上此时Router相当于Hoat_2的代理。
 

华为技术之ARP-地址解析协议