华为交换机ARP基础知识
1、ARP简介
地址解析协议ARP(Address Resolution Protocol)是用来将IP地址解析为MAC地址的协议。
在局域网中,当主机或其它网络设备有数据要发送给另一个主机或设备时,它必须知道对方的网络层地址(即IP地址)。
但是仅有IP地址是不够的,因为IP数据报文必须封装成帧才能通过物理网络发送,因此发送方还必须有接收方的物理地址(MAC地址),所以需要一个从IP地址到物理地址的映射。
ARP就是实现这个功能的协议。
2、ARP报文格式
图ARP请求和应答报文格式
ARP请求和应答的报文格式如上图所示。
主要字段解释如下:
Hardware Type:硬件地址的类型。对于以太网,该类型的值为“1”。
Protocol Type:映射的协议地址类型。对于IP地址,该值为0x0800。
Hardware Length:硬件地址长度。对于ARP请求或应答来说,该值为6。
Protocol Length:协议地址长度。对于ARP请求或应答来说,该值为4。
OP:操作类型。1表示ARP请求,2表示ARP应答。
Ethernet Address of sender:发送方MAC地址。
IP Address of sender:发送方IP地址。
Ethernet Address of destination:接收方MAC地址。
IP Address of destination:接收方IP地址。
3、ARP地址解析过程
ARP通过以ARP请求和ARP应答这两个过程完成地址解析。
图ARP请求过程
如上图所示,HOSTA和HOSTB在同一网段,HOSTA要向HOSTB发送信息。
首先,HOSTA查看自己的ARP表,确定其中是否包含有HOSTB对应的ARP表项。如果找到了HOSTB对应的MAC地址,则HOSTA直接利用ARP表中的MAC地址,对IP数据包进行帧封装,并将数据包发送给HOSTB。
如果HOSTA在ARP表中找不到对应的MAC地址,则将缓存该数据报文,然后以广播方式发送一个ARP请求报文。ARP请求报文中的发送端IP地址和发送端MAC地址为HOSTA的IP地址和MAC地址,目标IP地址为HOSTB的IP地址,目标MAC地址为全0的MAC地址。
由于ARP请求报文以广播方式发送,该网段上的所有主机都可以接收到该请求,但只有被请求的主机(即HOSTB)会对该请求进行处理。
HOSTB比较自己的IP地址和ARP请求报文中的目标IP地址,当两者相同时进行如下处理:将ARP请求报文中的发送端(即HOSTA)的IP地址和MAC地址存入自己的ARP表中。之后以单播方式发送ARP响应报文给HOSTA,其中包含了自己的MAC地址。
图ARP响应过程
如上图所示,HOSTB向HOSTA发出一个包含其MAC地址的ARP响应报文。
HOSTA收到ARP响应报文后,将HOSTB的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将IP数据包进行封装后发送出去。HOSTA学习到的MAC地址可以是组播MAC地址。
4、ARP老化机制
1、高速缓存:
如果每次HOSTA和HOSTB通信前都要发送一个广播的ARP请求报文的话,会极大的增加网络负担。而且网络上的所有机器都必须接收和处理这个广播的ARP请求报文,也极大的影响了网络运行效率。
为了解决以上问题,每台主机上都维护着一个高速缓存,这是ARP高效运行的一个关键。在这个高速缓存中,存放最近获得的IP地址到MAC地址的映射关系。
发送方在每次发送报文时,都先在缓存中查找目标IP地址所对应的MAC地址。如果ARP缓存中有对应的MAC地址,主机就不会再发送ARP请求报文,而是直接将报文发至这个MAC地址。如果ARP缓存中没有对应的MAC地址时,主机才会发送广播的ARP请求报文。
2、动态ARP表项的老化超时时间
当HOSTA收到HOSTB的ARP回应时,在HOSTA的缓存中会形成HOSTB的IP地址和MAC地址的映射关系。但是,如果HOSTB发生故障或者更换了网卡时,HOSTA没有得到关于HOSTB的任何通告,于是HOSTA仍会继续将报文发送给HOSTB。
造成地址解析出现错误的原因就是HOSTA中的映射表的信息没有得到及时的更新。
为了减少地址解析过程中所出现的错误,ARP高速缓存中的表项一般都会设定一个定时器。当达到定时器的动态ARP表项的老化超时时间,设备进行老化探测,如果探测失败,删除该表项;否则,保留该表项。
通过设置定时器,在地址解析过程中出现错误的现象得到了改善但并没有完全消除,其原因在于时延。如果定时器的动态ARP表项的老化超时时间是N秒,发送方只有等到N秒后才能检测到接收方出现了故障,在此期间发送方缓存表的信息还是没有得到及时的更新。
3、动态ARP表项的老化探测次数
除了设置定时器中动态ARP表项的老化超时时间,还可以通过设置动态的探测次数来减少地址的解析错误。在将一条动态ARP表项老化之前,系统先进行探测,如果超过设置的探测次数后探测的目标主机仍没有应答,则此ARP表项将被删除。++
4、动态ARP表项的老化探测模式
ARP表项老化之前,接口会发送ARP老化探测报文。老化探测报文可以是单播报文,也可以是广播报文。缺省情况下,接口以广播模式发送ARP老化探测报文。
当对端设备的IP地址不变化而MAC地址频繁更新时,建议使用广播模式发送ARP老化探测报文。
当对端设备MAC地址不变,当前网络带宽资源特别紧缺,且ARP表项的老化时间设置的比较小时,建议使用单播模式发送ARP老化探测报文。
当其他厂商设备与华为设备互联时,其他厂商设备接收到目的MAC地址为广播地址的ARP老化探测报文后,若ARP表项中已存在华为设备的IP地址与MAC地址映射,则丢弃该广播ARP老化探测报文。
华为设备由于收不到该探测报文的应答报文,而删除对应的ARP表项,导致网络侧过来的流量不通。这种特殊情况下华为设备需要配置成以单播方式发送ARP老化探测报文,其他厂商设备需要配置成可以响应该单播探测报文。
5、二层拓扑探测功能
二层拓扑探测功能,是指当二层接口的状态由Down变为Up时,二层接口所属VLAN对应的所有ARP表项的老化超时时间变为0,使设备重新发送ARP探测报文,更新二层接口所属VLAN对应的所有ARP表项。
5、动态ARP
动态ARP表项由ARP协议通过ARP报文自动生成和维护,可以被老化,可以被新的ARP报文更新,可以被静态ARP表项覆盖。当到达老化时间、接口Down时会删除相应的动态ARP表项。
6、静态ARP
静态ARP是指IP地址和MAC地址之间有固定的映射关系,由网络管理员手动配置生成。
7、Proxy ARP
如果ARP请求是从一个网络的主机发往另一个网络上的主机,连接这两个网络的设备就可以回答该请求,这个过程称作ARP代理(Proxy ARP)。
Proxy ARP有以下特点:
1、所有处理在ARP子网网关(ARP Subnet Gateways)进行,所连网络中的主机不必做任何改动;
2、可以隐藏物理网络细节,使两个物理网络可以使用同一个网络号。在主机端看不到子网,只是一个标准IP网络;
3、Proxy ARP只影响主机的ARP高速缓存,对网关的ARP高速缓存和路由表没有影响;
4、使用Proxy ARP后,主机应该减小ARP老化时间,以尽快使无效ARP项失效,减少发给交换机而交换机却不能转发的报文。
8、路由式Proxy ARP
路由式Proxy ARP就是使那些在同一网段却不在同一物理网络上的网络设备能够相互通信的一种功能。
在实际应用中,如果连接交换机的当前主机上没有配置缺省网关地址(即不知道如何到达本网络的中介系统),此时将无法进行数据转发。
图 路由式Proxy ARP应用环境
如上图所示,设备SwitchA通过VLAN10和VLAN20连接两个网络,两个VLANIF接口的IP地址不在同一个网段。
但是两个网络内的主机HOSTA和HOSTB的地址通过掩码的控制,既与相连设备的接口地址在同一网段,同时HOSTA和HOSTB也处于同一个网段。
在这种组网情况下,当HOSTA需要与HOSTB通信时,由于目的IP地址与本机的IP地址为同一网段,因此HOSTA以广播形式发送ARP请求报文,请求HOSTB的MAC地址。
但是,此时的两台主机处于不同的物理网络(不同广播域)中,HOSTB无法收到HOSTA的ARP请求报文,因此也就无法应答。
通过在SwitchA上启用代理ARP功能,可以解决此问题。
启用代理ARP后,收到这样的请求后,SwitchA会查找路由表,如果存在HOSTB的路由表项,则使用自己的MAC地址作为该ARP请求的回应,HOSTA将以SwitchA的MAC地址进行数据转发。此时,SwitchA相当于HOSTB的代理。
9、VLAN内Proxy ARP
如果两个用户属于相同的VLAN,但VLAN内配置了用户隔离。此时用户间要互通,需要在关联了VLAN的接口上启动VLAN内Proxy ARP功能。
图 VLAN内Proxy ARP应用环境
如上图所示,HOSTA和HOSTB是SwitchA设备下的两个用户。连接HOSTA和HOSTB的两个接口在SwitchA属于同一个VLAN10。
由于在SwitchA上配置了VLAN内不同接口彼此隔离,因此HOSTA和HOSTB不能直接在二层互通。
若SwitchA的接口使能了VLAN内Proxy ARP功能,可以解决这个问题。
SwitchA的接口在接收到目的地址不是自己的ARP请求报文后,SwitchA并不立即丢弃该报文,而是查找该接口的ARP表项。如果存在HOSTB的ARP表项,则将自己的MAC地址发送给HOSTA,并将HOSTA发送给HOSTB的报文代为转发。实际上此时SwitchA相当于HOSTB的代理。
10、VLAN间Proxy ARP
如果两个用户属于不同的VLAN,用户间要进行三层互通,可以在关联了VLAN的接口上启动VLAN间Proxy ARP功能。
图 VLAN间Proxy ARP应用环境
如上图所示,HOSTA和HOSTB是SwitchA设备下的两个用户。连接HOSTA和HOSTB的两个接口分别属于VLAN10和VLAN20。
由于连接HOSTA和HOSTB的两个接口在SwitchA属于不同的VLAN,因此HOSTA和HOSTB不能直接实现二层互通。
若SwitchA的接口使能了VLAN间Proxy ARP功能,可以解决这个问题。
SwitchA的接口在接收到目的地址不是自己的ARP请求报文后,并不立即丢弃该报文,而是查找该接口的ARP表项。如果存在HOSTB的ARP表项,则将自己的MAC地址发送给HOSTA,并将HOSTA发送给HOSTB的报文代为转发。实际上此时SwitchA相当于HOSTB的代理。
11、免费ARP
主机主动使用自己的IP地址作为目标地址发送ARP请求,此种方式称免费ARP。
免费ARP有三方面的作用:
1、用于检查重复的IP地址:
正常情况下不会收到ARP回应,如果收到,则表明本网络中存在与自身IP地址重复的地址。
2、用于通告一个新的MAC地址:
发送方更换了网卡,MAC地址变化了,为了能够在ARP表项老化前通告所有主机,发送方可以发送一个免费ARP。
3、在VRRP备份组中用来通告主备发生变换:
发生主备变换后,MASTER交换机会在备份组中发送一个免费ARP报文来通告发生了主备变换。
12、ARP-Ping
ARP-Ping包括ARP-Ping IP和ARP-Ping MAC,主要作用是通过发送ARP请求或ICMP请求报文来确定特定的IP或者MAC是否被使用。
1、ARP-Ping IP
ARP-Ping IP是利用ARP报文在局域网内探测IP地址是否被其它的设备使用的一种方法。
用户对设备配置IP地址前,需要确认该IP地址有没有被网络上的其他设备使用,可以通过发送ARP请求报文,确认该IP的使用情况,以便做出相应调整。
通过ping命令也可以探测该IP地址是否被网络上的其他设备使用。
但是如果带有防火墙功能的目的主机和交换机设备设置了对Ping报文不进行回复的功能时,就不会响应Ping报文,造成该IP没有被使用的假象。
由于ARP报文是二层协议,大多数情况下可以透过设置了对ping报文不进行回复的防火墙,从而避免了此类情况的发生。
ARP-Ping IP发送的是ARP请求报文。
以下是ARP-Ping IP的具体实现过程:
用户通过命令arp-ping ip设置指定的IP地址后,发送ARP请求报文并且启动ARP应答报文的超时定时器。
局域网内交换机设备或主机收到ARP请求报文后,回复ARP应答报文。
发送方设备根据是否收到ARP应答报文进行如下两种操作:
发送方设备收到ARP应答报文后将应答报文中的源IP地址和命令行中输入的IP地址进行比较。若匹配,则向用户显示与所输入IP地址相对应的MAC地址并且关闭应答报文的超时定时器,本次操作结束。
若ARP Reply报文的超时定时器超时,输出该IP地址无设备使用的显示信息。
2、ARP-Ping MAC
ARP-Ping MAC和普通Ping处理方法一样,但ARP-Ping MAC只应用在直连以太局域网或二层VPN以太网络。
ARP-Ping MAC发送的是ICMP请求(ECHO Request)报文。
以下是ARP-Ping MAC的具体实现过程:
用户通过命令arp-ping mac设置指定的MAC地址后,发送ICMP报文并且启动超时定时器。
局域网内各交换机设备或主机收到ICMP请求报文后,回复ICMP应答(ECHO Reply)报文。
发送方设备根据是否收到ICMP应答报文进行如下两种操作:
发送方设备收到ICMP应答报文后,将应答报文中的源MAC地址和命令行中输入的MAC地址相比较。若匹配,显示出该报文的IP地址,并提示该MAC地址已被使用并且关闭超时定时器,本次操作结束。
若ICMP应答报文的响应时间定时器超时,输出该MAC地址无设备使用的信息。
13、多端口ARP
网络负载均衡NLB(Network Load Balance)是微软在Windows Server上开发的多服务器群集负载均衡特性。NLB支持群集内服务器之间的负载分担及冗余备份,当群集中一台服务器故障时数据可以快速切换。为了保证快速切换,NLB要求设备将业务流量发往群集中的每台服务器,服务器收到后决定是否处理该业务流量。
图 多端口ARP典型组网应用
如上图所示,NLB服务器群集中的服务器使用一个共同的IP地址(NLB群集IP地址)和一个共同的MAC地址(NLB群集MAC地址)。
交换机作为接入网关连接NLB服务器群集时,要求交换机将发往NLB群集IP地址的数据报文发往NLB服务器群集中的每台服务器。
NLB服务器可以工作在NLB单播模式,NLB组播模式等。
NLB服务器工作在单播模式时,群集中各服务器采用的群集MAC地址以02BF开头。
NLB服务器工作在组播模式时,群集中各服务器采用的群集MAC地址以03BF开头。
当设备Switch向服务器发送ARP请求报文,请求NLB群集IP地址对应的MAC地址时,群集中所有服务器都向Switch发送ARP应答。
ARP应答报文中协议源IP地址为NLB服务器群集使用的共同的IP地址,协议源MAC地址为NLB服务器群集使用的共同的MAC地址。
NLB服务器工作在单播模式时,设备上ARP表中NLB群集IP地址的ARP表项只能学习到一个出接口。因此设备只能将发往服务器群集IP地址的数据报文发送给群集中一台服务器,而无法发送给服务器群集中的所有服务器。
NLB服务器工作在组播模式时,设备收到ARP应答报文后,由于协议源MAC地址为组播MAC地址,设备不会进行ARP学习。若通过静态ARP方式将NLB群集IP地址和NLB群集共同的MAC地址进行绑定,也只能指定一个出接口。因此设备只能将发往服务器群集IP地址的数据报文发送给群集中一台服务器,而无法发送给服务器群集中的所有服务器。
多端口ARP可以实现将发往服务器群集的报文同时发送给群集中所有的服务器。
多端口ARP主要通过静态ARP表项将NLB群集IP地址与NLB服务器群集使用的共同MAC地址进行绑定,并且通过多端口MAC表项将NLB服务器群集使用的共同MAC地址与设备上与服务器相连的出接口进行绑定。这样发往服务器群集IP地址的数据报文会从设备上所有与服务器相连的出接口发送出去。
14、ARP-CPCAR
CPCAR通过对上送控制平面的不同业务的协议报文分别进行限速,来保护控制平面的安全。设备针对每类协议报文都有缺省的CPCAR值,部分协议报文的CPCAR值需要根据实际业务规模和具体的用户网络环境进行调整。
调整CPCAR不当将会影响网络业务,如果需要调整ARP报文的CPCAR,建议联系华为工程师处理。
发表评论