2.4 Proxy ARP
Proxy ARP的功能就是使那些在同一网段却不在同一物理网络上的计算机或路由器能够相互通信。下面介绍Proxy ARP的原理、应用及其特点。
2.4.1 Proxy ARP原理
VRP实现中的Proxy ARP有三种方式:
l 路由式Proxy ARP
l VLAN内Proxy ARP
l VLAN间Proxy ARP
VLAN内Proxy ARP和VLAN间Proxy ARP是在VRP5.30-07版本开始支持的。
路由式Proxy ARP
如图2-4所示,Router A与Router B通过串行线路相连。每台路由器分别有一个GE口连接一个局域网。Host A的IP地址为172.16.2.2/16,没有配置缺省网关。Host B的IP地址为172.16.4.4/24,配置了缺省网关。
由于Host A只有16位掩码,它认为自己直连到172.16.0.0网段,当Host A需要与172.16.0.0网段上的设备例如Host B通信时,它使用ARP请求主机B的物理地址。由于路由器不转发广播,Host B收不到Host A发出的ARP请求。
如果在Router A的接口GE1/0/0上使能路由式Proxy ARP,由Router A转发Host A与Host B之间的IP报文,Host A就可以与Host B互通了。
图2-4 路由式Proxy ARP示意图
路由式Proxy ARP的工作过程如下:
1. Host A在其所属的子网中广播ARP请求,询问IP地址为172.16.4.4的主机的MAC地址。
2. Router A收到Host A发出的ARP请求。
3. 由于已经使能了路由式Proxy ARP,因此Router A并不丢弃目地IP地址不是自己的ARP请求报文。而是进行以下判断:
− Router A上存在到Host B的路由。
− 出接口与收到ARP请求的入接口不相同。
以上条件都满足,则进行下一步处理,否则丢弃该ARP请求报文。
4. Router A以接口GE1/0/0的MAC地址00.e0.fc.39.80.ab向Host A回应ARP Reply。
5. Host A收到Router A的应答报文后,在自己的ARP表中添加新表项,即IP地址172.16.4.4对应的MAC地址为Router A的MAC地址00.e0.fc.39.80.ab。
6. 此后,Host A向Host B发送的IP报文都先发给Router A,再由Router A发到Host B。
VLAN内Proxy ARP
如图2-5所示,DSLAM(Digital Subscriber Line Access Multiplexer)的上行口与Router的接口GE1/0/0相连,GE1/0/0属于Router上的Eth-Trunk1。
HOST A和HOST B是DSLAM设备下的两个用户。连接HOST A和HOST B的两个端口在DSLAM上属于同一个VLAN10。由于在DSLAM上配置了VLAN内不同端口彼此隔离,因此HOST A和HOST B不能直接在二层互通。
如果在Router上创建子接口Eth-trunk1.10,使子接口关联VLAN10。在Router的子接口Eth-trunk1.10上使能VLAN内Proxy ARP,HOST A和HOST B就可以在二层互通了。子接口Eth-trunk1.10的IP地址与VLAN10中的主机IP地址必须在同一个网段。
图2-5 VLAN内Proxy ARP示意图
VLAN内Proxy ARP的工作过程如下:
1. HOST A在其所属的VLAN内广播ARP请求,询问HOST B的MAC地址,如图2-5所示。
2. Router的子接口Eth-trunk1.10收到HOST A发出的ARP请求。
由于子接口Eth-trunk1.10已经使能VLAN内Proxy ARP,因此Router并不丢弃目的IP地址不是自己的ARP请求报文。
3. 根据ARP请求报文中的目的IP地址,Router在子接口Eth-trunk1.10的ARP表中查找HOST A所请求的ARP表项。
− 有则进行第5步处理。
− 没有则在本VLAN内,以Eth-trunk1.10的MAC地址作为源MAC地址,广播ARP请求,询问HOST B的MAC地址。
4. HOST B收到这个ARP请求后,回复ARP Reply给Eth-trunk1.10接口,其中包含HOST B的MAC地址信息。
Eth-trunk1.10收到HOST B的ARP应答,在ARP表中添加HOST B的IP地址和MAC地址表项。然后进行下一步处理。
5. Router以子接口Eth-trunk1.10的MAC地址00.e0.fc.39.80.ab向HOST A回复ARP Reply。
6. HOST A收到Router的ARP Reply后,在自己的ARP表中添加HOST B的IP地址172.16.2.30对应的MAC地址为00.e0.fc.39.80.ab的新表项。
7. 此后,HOST A向HOST B发送的IP报文都先发给Router的子接口Eth-trunk1.10,Router根据子接口Eth-trunk1.10上的ARP表将报文转发到HOST B。
VLAN间Proxy ARP
如图2-6所示,DSLAM的上行口连到Router的接口GE1/0/0上。
HOST A和HOST B是DSLAM设备下的两个用户。由于连接HOST A和HOST B的两个端口在DSLAM上属于不同的VLAN,因此HOST A和HOST B不能直接实现二层互通。
如果在Router上创建子接口GE1/0/0.1,在子接口上关联VLAN10和VLAN20,并且在GE1/0/0.1上使能VLAN间Proxy ARP,HOST A和HOST B就可以实现二层互通了。子接口GE1/0/0.1的IP地址与VLAN10和VLAN20中的主机IP地址在同一个网段。
图2-6 VLAN间Proxy ARP示意图
VLAN间Proxy ARP的工作过程如下:
1. HOST A在其所属的VLAN内广播ARP请求,询问HOST B的MAC地址,如图2-6所示。
2. Router的子接口GE1/0/0.1收到HOST A发出的ARP请求。
由于子接口GE1/0/0.1已经使能VLAN间Proxy ARP,因此Router并不丢弃目地IP地址不是自己的ARP请求报文。
3. 根据ARP请求报文中的目的IP地址,Router在子接口GE1/0/0.1的ARP表中查找HOST A所请求的ARP表项。
− 有则进行第5步处理。
− 没有则以GE1/0/0.1的MAC地址作为源MAC向本接口关联的其它VLAN发送ARP请求,询问HOST B的MAC地址。
4. HOST B收到这个ARP请求后,回复ARP Reply给GE1/0/0.1接口,其中包含HOST B的MAC地址信息。
GE1/0/0.1收到HOST B的ARP应答,在ARP表中添加HOST B的IP地址和MAC地址表项。然后进行下一步处理。
5. Router以子接口GE1/0/0.1的MAC地址00.e0.fc.39.80.ab向HOST A回应ARP Reply。
6. HOST A收到Router的ARP Reply后,在自己的ARP表中添加HOST B的IP地址对应的MAC地址为00.e0.fc.39.80.ab的新表项。
7. 此后,HOST A发送给HOST B的IP报文先发给Router的子接口GE1/0/0.1,再由Router根据子接口GE1/0/0.1上的ARP表将报文转发到HOST B。
接口上有VRRP的Proxy ARP
如果以太类型接口不仅配置了VRRP(Virtual Router Redundancy Protocol),同时还使能了路由式Proxy ARP、VLAN内Proxy ARP或VLAN间Proxy ARP中的一种。该接口上的Proxy ARP处理过程与前文介绍的相同,区别是:需要判断路由器所处的VRRP备份组的状态。
判断路由器在VRRP备份组中的状态分为两种情况。
l 接口上只配置了一个VRRP备份组。
如果路由器处于VRRP备份组的Master状态,则需要使用接口的虚MAC回应ARP Reply。
如果路由器处于VRRP备份组的Backup状态,则不响应。
l 接口上配置了多个VRRP备份组。
如果路由器在多个VRRP备份组都处于Master状态,选择其中一个虚MAC进行回应。
如果没有处于Master状态的,则对该请求报文不做响应。
2.4.2 Proxy ARP的应用
路由式ARP Proxy
通常情况下,当路由器收到ARP请求报文时,路由器将进行检查,看该ARP请求的目的地址是否是自己。如果是,发出ARP应答报文;如果不是,丢弃该报文。
若使能路由式Proxy ARP功能后,路由器接收到目的地址不是自己的ARP请求报文,路由器并不立即丢弃该报文,而是查找路由表。如果路由器有到达该目的地址的路由,在满足代理条件时,路由器将自己的MAC地址发送给ARP请求方,相当于它代替其他网络的主机回答这个ARP请求。ARP请求方就将到该目的地址的报文发送给路由器,路由器再将其转发出去。
路由式Proxy ARP主要用于:
l 当主机上没有配置缺省网关地址(即不知道如何到达本网络的中介系统),它可以发送一个ARP请求(请求目的主机的MAC地址)。使能Proxy ARP功能的路由器收到这样的请求后,会使用自己的MAC地址作为该ARP请求的回应。
l 如图2-4所示,使能Proxy ARP功能的路由器A隐藏了物理网络的细节,使得处于不同物理网络但网络号相同的Ethernet A和Ethernet B的内部主机之间可以正常的相互通信。
VLAN内Proxy ARP
如果两个用户属于相同的VLAN,但VLAN内配置了用户隔离。用户间要互通,需要在关联了VLAN的接口上启动VLAN内Proxy ARP功能。
若路由器的接口使能了VLAN内Proxy ARP功能,端口在接收到目的地址不是自己的ARP请求报文后,路由器并不立即丢弃该报文,而是查找该接口的ARP表项。如果满足代理条件,则将路由器的MAC地址发送给ARP请求方。
VLAN内Proxy ARP主要用于配置了用户隔离的VLAN内的用户间互通。
VLAN间Proxy ARP
如果两个用户属于不同的VLAN,用户间要进行二层互通,需要在关联了VLAN的子接口上启动VLAN间Proxy ARP功能。
若路由器的接口使能了VLAN间Proxy ARP功能,端口在接收到目的地址不是自己的ARP请求报文后,路由器并不立即丢弃该报文,而是查找该接口的ARP表项。如果满足代理条件,则将路由器的MAC地址发送给ARP请求方。
VLAN间Proxy ARP主要用于:
l 处于不同VLAN的用户的二层互通。
l 可在Super VLAN对应的VLANIF接口上启动VLAN间Proxy ARP功能,实现Sub VLAN间用户互通。
2.4.3 Proxy ARP的特点
以下是Proxy ARP的特点:
l 所有处理在ARP子网网关(ARP Subnet Gateways)进行,所连网络中的主机不必做任何改动;
l 在主机端看不到子网,只是一个标准IP网络;
l Proxy ARP只影响主机的ARP高速缓存,对网关的ARP高速缓存和路由表没有影响;
l 使用Proxy ARP后,主机应该减小ARP老化时间,以尽快使无效ARP项失效,减少发给路由器而路由器却不能转发的报文。
2.5 免费ARP
主机主动使用自己的IP地址作为目标地址发送ARP请求,此种方式称免费ARP。免费ARP有两个方面的作用:
l 用于检查重复的IP地址:正常情况下应当不能收到ARP回应,如果收到,则表明本网络中存在与自身IP地址重复的地址;
l 用于通告一个新的MAC地址:发送方换了块网卡,MAC地址变了,为了能够在ARP表项老化前就通告所有主机,发送方可以发送一个免费ARP。
2.6 ARP与接口状态联动
当链路中间存在传输设备时,虽然网络层是直连,但是由于实际物理链路分段,链路或远端设备发生故障时,本端设备需要比较长的时间才能检测到。
ARP与接口状态联动功能可以通过向对端发送ARP探测报文,根据是否收到回应来判断对端是否具有正常的报文转发功能,从而决定本端的协议状态为up或down,进而可以触发路由的快速收敛。
只能对GE及其子接口、Ethernet及其子接口配置ARP与接口状态联动功能