ARP代理
产生原因
由于ARP只适用于同一物理网络,所以当设备需要将数据报文发往另一个物理网络时,通常需要借助网关路由器上的路由功能查询路由表,实现不同物理网络之间的通信。但是,查询路由表会占用部分系统资源,影响系统处理其他业务的效率。这种情况下,可以在需要互通的主机之间的中介设备上部署ARP代理功能,由中介设备执行代理的角色,减少设备因查询路由表而消耗的系统资源,提高系统的运行效率。
实现过程
路由式ARP代理
有时为了便于管理,在一个公司的内部往往需要将一个大型的网络划分为若干子网。此时,可以修改网络内主机的路由信息,使发往其它子网的数据先发送到连接不同子网的网关设备上,再由网关设备转发此数据报文。但是,这种解决方案并不是一个便于管理和维护的方案。当连接主机的网关设备具有不同的网关地址时,可以部署路由式ARP代理功能,将网关设备端口的MAC地址发送给请求的主机。
结合图2-6,以HostA和HostB通信为例,介绍路由式ARP代理的实现过程。
- HostA发送ARP请求报文,请求目的主机HostB的MAC地址。
- PE收到此ARP请求报文,检查报文的目的IP地址发现并不是请求自己的MAC地址。PE检查是否存在到达HostB的路由,
- 发现有到HostB的路由,于是判断Interface1上是否使能了路由式ARP代理功能。
- 如果使能了路由式ARP代理功能,PE将自己的端口Interface1的MAC地址发送给HostA。
- 如果没有使能路由式ARP代理功能,PE丢弃HostA发送的ARP请求报文。
- 发现没有到HostB的路由,于是丢弃HostA发送的ARP请求报文,不执行任何操作。
- 发现有到HostB的路由,于是判断Interface1上是否使能了路由式ARP代理功能。
- HostA学到Interface1的MAC地址之后,将根据此MAC地址把数据报文发送给设备PE。
PE收到数据报文之后,由其完成将数据报文发送给HostB的过程。
VLAN内ARP代理
结合图2-7,以HostA和HostC通信为例,介绍VLAN内ARP代理的实现过程。
目前接口Interface1可以是VLANIF接口。HostA、HostB和HostC属于同一个VLAN,但是在CE上配置了不同接口间彼此隔离,因此HostA和HostC不能直接在二层互通。此时,可以在CE上通过配置接口Interface1,并且使能VLAN内ARP代理功能,实现HostA和HostC的互通。
- HostA发送ARP请求报文,请求目的主机HostC的MAC地址。
- CE收到此ARP请求报文,检查报文的目的IP地址发现并不是请求自己的Interface1接口的MAC地址。CE查找自己的ARP表,
- 发现有HostC对应的ARP表项,于是判断Interface1上是否使能了VLAN内ARP代理功能。
- 如果使能了VLAN内ARP代理功能,CE将自己的Interface1接口的MAC地址发送给HostA。
- 如果没有使能VLAN内ARP代理功能,CE丢弃该ARP请求报文。
- 发现没有HostC对应的ARP表项,于是丢弃HostA发送的ARP请求报文,同时判断本设备是否使能了VLAN内ARP代理功能。
- 如果使能了VLAN内ARP代理功能,CE在VLAN4内广播发送ARP请求报文,该请求报文的目的IP地址为HostC的IP地址。收到HostC发送的ARP响应报文后,CE在ARP表中生成相应的ARP表项。
- 如果没有使能VLAN内ARP代理功能,CE不执行任何操作。
- 发现有HostC对应的ARP表项,于是判断Interface1上是否使能了VLAN内ARP代理功能。
- HostA学到Interface1接口的MAC地址之后,将根据此MAC地址把数据报文发送给设备CE。
CE收到数据报文之后,由其完成将数据报文发送给HostC的过程。
VLAN间ARP代理
结合图2-8,以HostA和HostB通信为例,介绍VLAN间ARP代理的实现过程。
目前接口Interface 1可以是VLANIF接口。HostA属于VLAN 3,而HostB属于VLAN 2,显然在未对PE配置接口Interface1并且使能VLAN间ARP代理的时候,两者是不能够进行通信的。此时,可以在PE上配置接口Interface1,并且使能VLAN间ARP代理,实现HostA和HostB的互通。
- HostA发送ARP请求报文,请求目的主机HostB的MAC地址。
- PE收到此ARP请求报文,检查报文的目的IP地址发现并不是请求自己的Interface1接口的MAC地址。PE查找自己的ARP表,
- 发现有HostB对应的ARP表项,于是判断Interface1上是否使能了VLAN间ARP代理功能。
- 如果使能了VLAN间ARP代理功能,PE将自己的Interface1接口的MAC地址发送给HostA。
- 如果没有使能VLAN间ARP代理功能,PE丢弃该ARP请求报文。
- 发现没有HostB对应的ARP表项,于是丢弃HostA发送的ARP请求报文,同时判断本设备是否使能了VLAN间ARP代理功能。
- 如果使能了VLAN间ARP代理功能,PE在VLAN2内广播发送ARP请求报文,该请求报文的目的IP地址为HostB的IP地址。收到HostB发送的ARP响应报文后,PE在ARP表中生成相应的ARP表项。
- 如果没有使能VLAN间ARP代理功能,PE不执行任何操作。
- 发现有HostB对应的ARP表项,于是判断Interface1上是否使能了VLAN间ARP代理功能。
- HostA学到接口Interface1的MAC地址之后,将根据此MAC地址把数据报文发送给设备PE。
PE收到数据报文之后,由其完成将数据报文发送给HostB的过程。
本地ARP代理
结合图2-9,以HostA和HostB通信为例,介绍本地ARP代理的实现过程。
HostA和HostB属于同一个BD,但是在CE上配置了不同接口间彼此隔离,因此HostA和HostB不能直接在二层互通。此时,可以在CE上配置VBDIF接口,并且使能本地ARP代理功能,实现HostA和HostB的互通。
HostA发送ARP请求报文,请求目的主机HostB的MAC地址。
- CE收到此ARP请求报文,检查报文的目的IP地址发现并不是请求自己的VBDIF 2接口的MAC地址。CE查找自己的ARP表,
- 发现有HostB对应的ARP表项,于是判断Interface1上是否使能了本地ARP代理功能。
- 如果使能了本地ARP代理功能,CE将VBDIF 2接口的MAC地址发送给HostA。
- 如果没有使能本地ARP代理功能,CE丢弃该ARP请求报文。
- 发现没有HostB对应的ARP表项,于是丢弃HostA发送的ARP请求报文,同时判断本设备是否使能了本地ARP代理功能。
- 如果使能了本地ARP代理功能,CE在BD内广播发送ARP请求报文,该请求报文的目的IP地址为HostB的IP地址。收到HostB发送的ARP响应报文后,CE在ARP表中生成相应的ARP表项。
- 如果没有使能本地ARP代理功能,CE不执行任何操作。
- 发现有HostB对应的ARP表项,于是判断Interface1上是否使能了本地ARP代理功能。
- HostA学到VBDIF 2接口的MAC地址之后,将根据此MAC地址把数据报文发送给CE。
CE收到数据报文之后,由其完成将数据报文发送给HostB的过程。
适用场景
根据功能划分,ARP代理各自的适用场景如表2-4所示。
ARP代理方式 |
适用场景 |
---|---|
路由式ARP代理 |
需要互通的主机处在相同的网段却不在同一物理网络的场景,并且连接主机的网关设备具有不同的网关地址。 |
VLAN内ARP代理 |
需要互通的主机处在相同的VLAN,并且处于相同的网段,但是VLAN内配置了用户隔离的场景。 |
VLAN间ARP代理 |
需要互通的主机处在不同的VLAN,但是处于相同的网段的场景。 说明:
在VLAN聚合的场景下,可在Super-VLAN对应的VLANIF接口上启动VLAN间ARP代理功能,实现Sub-VLAN间用户的互通。 |
ARP本地代理 |
在EVC模型下,需要互通的主机处于相同的广播桥域BD(Bridge Domain),并且处于相同的网段,但是BD内配置了用户隔离的场景。 |
使用价值
ARP代理实际上是使用了简单的欺骗手段,使网络内的主机错误地认为目的主机和自己处于同一网段内,这样可隐藏物理网络的细节,从而达到透明化子网划分的目的。
ARP代理的所有处理都是在网关进行,不需要对所连网络中的主机做任何配置。并且,ARP代理只影响主机的ARP表,对网关的ARP表和路由表没有任何影响。
ARP代理功能可以在主机没有配置缺省网关或者主机没有任何路由能力的情况下使用。