ARP表项刷新方法和装置与流程

文档序号:16735359发布日期:2019-01-28 12:35阅读:1381来源:国知局
ARP表项刷新方法和装置与流程
本申请涉及网络通信技术,特别涉及地址解析协议(arp:addressresolutionprotocol)刷新方法和装置。
背景技术
:arp表项是网络协议(internetprotocol,ip)地址到媒体访问控制(mediaaccesscontrol,mac)地址的映射表项,用于报文转发。arp表项可以被老化,也可以被刷新。下面描述网络设备如何老化、刷新arp表项。这里的网络设备举例为网络中的路由器、三层交换机、网关设备等。网络设备在arp表项的老化时间到达之前的某一个时间点,会主动发送arp请求报文,arp请求报文的目的mac地址为arp表项中的mac地址,目的ip地址为arp表项中的ip地址。这里,arp表项的老化时间是指从arp表项的表项生成时间戳开始维持arp表项的时间,arp表项的表项生成时间戳是生成arp表项的时间戳。网络设备在发送arp请求报文之后的设定时间内(此时arp表项的老化时间还未到达)收到对应arp请求报文的arp应答报文,则将arp表项的表项生成时间戳更新为当前时间戳(即刷新arp表项),以实现arp表项从当前时间戳开始维持上述老化时间,否则,在arp表项的老化时间到达时,删除arp表项(即arp表项老化)。以上描述了网络设备如何老化、刷新arp表项。但是,当网络中有大量数据报文传输时,网络设备主动发送的arp报文可能会被淹没,这会导致网络设备因在发送arp请求报文之后的设定时间内不能收到arp应答报文而删除arp表项,使得依赖被删除的arp表项转发的数据报文暂时中断转发。技术实现要素:本申请提供了arp表项刷新方法和装置,以防止大量数据报文传输时因为网络设备主动发送的arp报文会被淹没而导致arp表项被删除。本申请提供的技术方案包括:一种arp表项刷新方法,该方法应用于网络设备,包括:接收数据报文,所述数据报文携带源ip地址以及源mac地址;若从本网络设备至所述数据报文的源设备之间的路由是直连路由,则在本地arp表中查找到与所述源ip地址、源mac地址匹配的第一arp表项,所述源设备为所述源ip地址对应的设备;更新所述第一arp表项的表项生成时间戳,所述表项生成时间戳是生成所述第一arp表项的时间戳。一种arp表项刷新装置,该装置应用于网络设备,包括:接收单元,用于接收数据报文,所述数据报文携带源ip地址以及源mac地址;表项匹配单元,用于当从本网络设备至所述数据报文的源设备之间的路由是直连路由时,在本地arp表中查找到与所述源ip地址、源mac地址匹配的第一arp表项,所述源设备为所述源ip地址对应的设备;表项刷新单元,用于更新所述第一arp表项的表项生成时间戳,所述表项生成时间戳是生成所述第一arp表项的时间戳。由以上技术方案可以看出,本申请中,依据接收的数据报文的源ip地址、源mac地址也可以动态刷新与数据报文的源ip地址、源mac地址匹配的arp表项,这样,即使网络设备主动发送的arp报文被淹没,也会基于接收的数据报文的源ip地址、源mac地址刷新与数据报文的源ip地址、源mac地址匹配的arp表项,防止大量数据报文传输时因为网络设备主动发送的arp报文会被淹没而导致arp表项被删除,避免数据报文转发中断。附图说明此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。图1为本申请提供的方法流程图;图2为本申请提供的实施例1应用组网图;图3为本申请提供的非直连路由时的arp表项刷新流程图;图4为本申请提供的实施例2应用组网图;图5为本申请提供的装置结构图;图6为本申请提供的图5所示装置的硬件结构示意图。具体实施方式在现有arp应用中,网络设备记录的arp表项的刷新(具体是指arp表项的表项生成时间戳更新)依赖于网络设备在主动发送arp请求报文之后收到的arp应答报文,但是,如
背景技术
最后一段描述,当网络中有大量数据报文传输时,网络设备主动发送的arp报文可能会被淹没,这就会导致网络设备在发送arp请求报文之后的设定时间内不能收到arp应答报文,进而导致arp表项不能被刷新,在老化时间到达时会被删除,引起依赖被删除的arp表项转发的数据报文暂时中断转发。为了防止大量数据报文传输时因为网络设备主动发送的arp报文会被淹没而导致arp表项被删除,本申请提供了图1所示的流程。参见图1,图1为本申请提供的方法流程图。该流程应用于网络设备,这里的网络设备泛指路由器、三层交换机等设备。如图1所示,该流程可包括以下步骤:步骤101,接收数据报文,所述数据报文携带源ip地址以及源mac地址。步骤102,若从本网络设备至所述数据报文的源设备之间的路由是直连路由,则在本地arp表中查找到与所述源ip地址、源mac地址匹配的第一arp表项。这里,所述数据报文的源设备是指所述源ip地址对应的设备。作为一个实施例,本申请中,从本网络设备至所述数据报文的源设备的路由是否为直连路由可通过以下方式确定:在本地路由表中查找目的地址为所述源ip地址的路由,若查找到的路由的下一跳为所述数据报文的源ip地址,则确定从本网络设备至所述源设备之间的路由是直连路由,否则,确定从本网络设备至所述源设备之间的路由是非直连路由。在路由协议中,所谓直连路由是网络设备本地接口所连接的子网的路由。直连路由是由链路层协议发现的,一般指去往网络设备的接口地址所在网段的路径,该路径信息不需要网络管理员维护,也不需要网络设备通过某种算法进行计算获得,只要该接口处于活动状态(active),网络设备就会把通向该网段的路由信息填写到路由表中去,直连路由无法使路由器获取与其不直接相连的路由信息。至于非直连路由,下文会描述,这里暂不赘述。当本网络设备至所述源设备之间的路由是直连路由时,如步骤101所述,网络设备会以所述源ip地址、源mac地址为关键字在本地arp表中查找包含该关键字的arp表项,该查找到的arp表项记为上述的第一arp表项。步骤103,更新所述第一arp表项的表项生成时间戳,所述表项生成时间戳是生成所述第一arp表项的时间戳。作为一个实施例,本申请中,更新所述第一arp表项的表项生成时间戳可为:将所述第一arp表项的表项生成时间戳更新为当前时间戳。一旦更新所述第一arp表项的表项生成时间戳,则第一arp表项就从更新后的表项生成时间戳(当前时间戳)开始老化,这相当于刷新第一arp表项。至此,完成图1所示流程。通过图1所示流程可以看出,在本申请中,依据接收的数据报文的源ip地址、源mac地址也可以动态刷新与数据报文的源ip地址、源mac地址匹配的arp表项,这样,即使网络设备主动发送的arp报文被淹没,也会基于接收的数据报文的源ip地址、源mac地址刷新与数据报文的源ip地址、源mac地址匹配的arp表项,避免arp表项因为网络设备在发送arp请求报文之后的设定时间内不能收到arp应答报文而不能被刷新,防止数据报文转发中断。需要说明的是,在申请中,arp表项刷新是一种软件行为。如此,当网络设备为基于软件转发数据报文的设备比如低端路由器等时,网络设备在转发数据报文的过程中就可以完成arp表项的刷新(具体为arp表项的表项生成时间戳的更新)。而当网络设备为基于硬件芯片转发的设备比如三层交换机等时,需要由硬件芯片和cpu相互配合完成arp表项的刷新(具体为arp表项的表项生成时间戳的更新),下文通过一个具体实施例进行描述:参见图2,图2为本申请提供的实施例1应用组网图。在图2中,网络设备200为基于硬件芯片转发的设备,这里的硬件芯片可为网络处理器(np)。网络设备200还包括:cpu。在图2中,网络设备200本地记录了与主机(host)201对应的arp表项(记为arp表项2_1)。arp表项2_1是网络设备200基于host201发出的报文比如arp请求报文学习得到的,具体可包括:host201的ip地址10.152.8.150,host201的mac地址0001-ff34-5678。如图2所示,网络设备200本地接口port10(图2未示出)接收来自host201发向host202的数据报文(记为报文200_a)。报文200_a的源ip地址为host201的ip地址10.152.8.150,源mac地址为host201的mac地址0001-ff34-5678。网络设备200本地硬件芯片np检查本地接入控制列表(acl)中存在与报文200_a的源ip地址、源mac地址匹配的acl表项,则复制一份报文200_a。为便于描述,这里将复制得到的报文记为报文200_b。在本实施例中,acl可由用户依据网络设备200本地记录的arp表指定,也可由网络设备200中的软件比如cpu依据网络设备200本地记录的arp表动态生成,本实施例并不具体限定。需要说明的是,在本实施例中,200_b是要发送至cpu的,具体见下文描述。为减少大量报文对cpu的冲击,本实施例中,网络设备200本地硬件芯片np可以以指定的采样速率采样待进行复制的报文,比如每隔10000个匹配acl的数据报文复制一份匹配acl的数据报文。网络设备200本地硬件芯片np在本地路由表中找到用于转发报文200_a的路由表项,并依据查找到的路由表项转发报文200_a。作为一个实施例,这里的路由表可为转发信息数据库(fib:forwardinginformationbase),路由表项相应为fib表项。网络设备200本地硬件芯片np将报文200_b发送给cpu。cpu发现本地路由表中从本设备到达报文200_a的源设备host201的路由表项的下一跳为报文200_a的源设备host201,认为本网络设备200与源设备host201直连,则在本地arp表中查找到与报文200_a的源ip地址10.152.8.150、源mac地址0001-ff34-5678匹配的arp表项2_1,更新arp表项2_1的表项生成时间戳为当前时间戳。至此,arp表项2_1从当前时间戳开始重新老化,直至老化时间结束。至此,完成实施例1的描述。以上以本网络设备至数据报文的源ip地址的路由为直连路由为例进行了描述,下面对从本网络设备至所述数据报文的源ip地址的路由为非直连路由时的情况进行描述。这里,非直连路由分为静态路由(static)和动态路由(dynamic)。其中,静态路由是由网络规划者根据网络拓扑,使用命令在网络设备上配置的路由信息,这些静态路由信息指导报文发送,静态路由方式也不需要网络设备进行计算,但是它完全依赖于网络规划者,当网络规模较大或网络拓扑经常发生改变时,网络管理员需要做的工作将会非常复杂并且容易产生错误。动态路由是网络设备按照路由协议自动计算的路由信息,适应网络拓扑结构的变化。这里的路由协议比如为自治系统(as:autonomoussystem)内部网关协议有开放式最短路径优先(ospf:openshortestpathfirst)协议、寻路信息协议(rip:routinginformationprotocol)等。在本申请中,动态路由关联的arp表项(路由下一跳的ip地址为arp表项中的ip地址)不依赖于数据报文刷新,而静态路由关联的arp表项(路由下一跳的ip地址为arp表项中的ip地址),其表项属性设置了静态路由引用属性,在表项状态为待删除状态时依赖于数据报文刷新。这里,静态路由关联的arp表项的表项状态为待删除状态,具体见下文描述。下面描述静态路由关联的arp表项(路由下一跳的ip地址为arp表项中的ip地址)在表项状态为待删除状态时如何依赖于数据报文刷新:结合图1所示的步骤101,若步骤102中,从本网络设备至所述源设备之间的路由是非直连路由,则如图3所示,该方法可进一步包括以下步骤:步骤301,在本地arp表中查找到与所述数据报文的源mac地址匹配的第二arp表项。这里,第二arp表项只是为便于描述而进行的命名,并非用于限定。步骤302,若所述第二arp表项的表项属性为静态路由引用属性且所述第二arp表项的表项状态被设置为待删除状态,则更新所述第二arp表项的表项生成时间戳。这里,第二arp表项的表项属性为静态路由引用属性,则意味着下一跳ip地址为第二arp表项中ip地址的路由为静态路由。其中,所述第二arp表项的表项状态被设置为待删除状态是在所述第二arp表项的老化时间到达时所述第二arp表项的表项生成时间戳还未被更新的前提下执行的。需要说明的是,在步骤302中,即使所述第二arp表项的表项属性为静态路由引用属性,若所述第二arp表项的表项状态未被设置为待删除状态(比如为正常状态),此时是不更新第二arp表项的表项生成时间戳的。通过图3可以看出,当从本网络设备至数据报文的源ip地址的路由是非直连路由时,若与所述数据报文的源mac地址匹配的第二arp表项的表项属性为静态路由引用属性且所述第二arp表项的表项状态被设置为待删除状态,则更新所述第二arp表项的表项生成时间戳,这实现了静态路由对应的arp表项也能依据数据报文进行刷新(具体为arp表项的表项生成时间戳的更新)。在本申请中,对于静态路由关联的任一arp表项(包括上述第二arp表项,以第二arp表项为例描述),均采用了延迟老化的方式延迟老化,具体是:当监测到本地记录的第二arp表项的老化时间到达,且第二arp表项的表项生成时间戳还未被更新,则维持第二arp表项(可继续使用),并将第二arp表项的表项状态设置为待删除状态。这里,第二arp表项的表项生成时间戳还未被更新是指:在第二arp表项的老化时间到达之前发出的arp请求报文后,还未收到arp应答报文。在本申请中,网络设备在将第二arp表项的表项状态设置为待删除状态后的预定时间内发送arp请求报文,这里可定时发送arp请求报文,所述arp请求报文的目的ip地址为所述第二arp表项中的ip地址,目的mac地址为所述第二arp表项中的mac地址;若在所述预定时间内收到所述arp请求报文的arp应答报文,所述arp应答报文的发送端ip地址为所述第二arp表项中的ip地址,发送端mac地址为所述第二arp表项中的mac地址,则更新所述第二arp表项的表项生成时间戳,并将所述第二arp表项的表项状态从待删除状态更新为正常状态,否则,在所述预定时间结束时,删除所述第二arp表项。在本申请中,对于动态路由关联的arp表项(记为第三arp表项),是依赖于路由协议报文刷新的,具体为:网络设备接收路由协议报文;这里的路由协议报文为邻居设备发送的;在本地arp表中查找到与所述路由协议报文的源ip地址和源mac地址匹配的第三arp表项;更新所述第三arp表项的表项生成时间戳。这里,作为一个实施例,更新所述第三arp表项的表项生成时间戳可为:将所述第三arp表项的表项生成时间戳更新为当前时间戳。一旦更新所述第三arp表项的表项生成时间戳,则第三arp表项就从更新后的表项生成时间戳(当前时间戳)开始老化,这相当于刷新第三arp表项。以上对非直连路由时如何刷新arp表项进行了描述,下面通过一个实施例举例描述:参见图4,图4为本申请提供的实施例2应用组网图。在图4中,网络设备402作为host400的接入网关,网络设备401与host400非直连。对于网络设备401来说,达到host400的数据报文需要经过以下路由到达host400:网络设备401->网络设备402->host400。网络设备401本地不存在host400的arp表项,存在相邻设备即网络设备402的arp表项(记为arp表项4_2)。arp表项4_2包括的ip地址为网络设备402的ip地址2.2.2.20,mac地址为网络设备402的mac地址0001-ff34-0001。表1示出了arp表项4_2:ip地址mac地址2.2.2.200001-ff34-0001表1网络设备401存在到达host400的路由表项(记为路由表项4_0)。路由表项4_0的ip地址为host400的ip地址10.152.8.150,下一跳为网络设备402的ip地址2.2.2.20。表2示出了路由表项4_0:ip地址下一跳10.152.8.1502.2.2.20表2网络设备401到达host400的路由(记为路由1_0)有可能是网络设备402通过路由协议发布给网络设备401的,也有可能是配置在网络设备401的。下面分别描述:1):路由1_0是网络设备402通过路由协议发布给网络设备401的:在本申请中,网络设备402通过路由协议报文定期发布路由1_0给网络设备401,路由协议报文的源ip地址为网络设备402的ip地址2.2.2.20,源mac地址为网络设备402的mac地址0001-ff34-0001。当网络设备401收到路由协议报文时,在本地arp表中查找到与所述路由协议报文的源ip地址2.2.2.20和源mac地址0001-ff34-0001匹配的arp表项4_2;更新arp表项4_2的表项生成时间戳为当前时间戳。至此,arp表项4_2从当前时间戳开始重新老化,直至老化时间结束。2):路由1_0是配置在网络设备401的:路由1_0配置在网络设备401,则网络设备402不会通过路由协议报文发布路由1_0给网络设备401,在此种情况下,本实施例中,会先查找到路由1_0关联的arp表项4_2(arp表项4_2的ip地址为路由1_0的下一跳),将arp表项4_2的表项属性设置为静态路由引用属性。之后,在arp表项4_2的老化时间到达之前(比如前1分钟),网络设备401会发送arp请求报文,若网络设备401在arp表项4_2的老化时间到达时还未收到arp请求报文的arp应答报文,则网络设备401并不删除arp表项4_2,而是延迟arp表项4_2的老化,允许arp表项4_2可继续使用,只不过需要将arp表项4_2的表项状态设置为待删除状态。在arp表项4_2的表项状态设置为待删除状态后,若网络设备401收到一数据报文,数据报文的源mac地址为网络设备402的mac地址0001-ff34-0001,网络设备401发现与数据报文匹配的arp表项4_2的表项状态被设置为待删除状态,则更新arp表项4_2的表项生成时间戳。在本申请中,在arp表项4_2的表项状态设置为待删除状态后的预定时间内,网络设备401定时发送arp请求报文,等待应答;若在上述预定时间内收到arp应答报文,则更新arp表项4_2的表项生成时间戳,并将arp表项4_2的表项状态从待删除状态更新为正常状态。而若在上述预定时间内未收到arp应答报文,则删除arp表项4_2。至此,完成本申请实施例的描述。以上对本申请提供的方法进行了描述,下面对本申请提供的装置进行描述:参见图5,图5为本申请提供的装置结构图。该装置应用于网络设备,包括:接收单元,用于接收数据报文,所述数据报文携带源ip地址以及源mac地址;表项匹配单元,用于当从本网络设备至所述数据报文的源设备之间的路由是直连路由时,在本地arp表中查找到与所述源ip地址、源mac地址匹配的第一arp表项,所述源设备为所述源ip地址对应的设备;表项刷新单元,用于更新所述第一arp表项的表项生成时间戳,所述表项生成时间戳是生成所述第一arp表项的时间戳。作为一个实施例,所述表项匹配单元进一步在从本网络设备至所述数据报文的源设备之间的路由是非直连路由时,在本地arp表中查找到与所述源mac地址匹配的第二arp表项,若所述第二arp表项的表项属性为静态路由引用属性且所述第二arp表项的表项状态被设置为待删除状态,则更新所述第二arp表项的表项生成时间戳。作为一个实施例,所述表项刷新单元进一步当监测到本地记录的第二arp表项的老化时间到达,且第二arp表项的表项生成时间戳还未被更新,则维持第二arp表项,并将第二arp表项的表项状态设置为待删除状态。作为一个实施例,所述表项刷新单元进一步在所述第二arp表项的表项状态设置为待删除状态后的预定时间内发送arp请求报文,所述arp请求报文的目的ip地址为所述第二arp表项中的ip地址,目的mac地址为所述第二arp表项中的mac地址;若在所述预定时间内收到所述arp请求报文的arp应答报文,所述arp应答报文的发送端ip地址为所述第二arp表项中的ip地址,发送端mac地址为所述第二arp表项中的mac地址,则更新所述第二arp表项的表项生成时间戳,并将所述第二arp表项的表项状态从待删除状态更新为正常状态,否则,在所述预定时间结束时,删除所述第二arp表项。作为一个实施例,所述接收单元进一步接收路由协议报文;所述表项匹配单元进一步在本地arp表中查找到与所述路由协议报文的源ip地址和源mac地址匹配的第三arp表项;所述表项刷新单元进一步更新所述第三arp表项的表项生成时间戳。至此,完成图5所示的装置结构图。参见图6,图6为本申请提供的图5所示装置的硬件结构示意图。如图6所示,该硬件结构可包括处理器、存储有机器可执行指令的机器可读存储介质。处理器与机器可读存储介质可经由系统总线通信。机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,处理器通过加载并执行机器可读存储介质存储的机器可执行指令,能够实现上述arp表项刷新方法。本申请还提供了一种包括机器可执行指令的机器可读存储介质,例如,其存储有机器可执行指令。所述机器可执行指令在被处理器调用和执行时,促使上述处理器实现上述arp表项刷新方法。本文中提到的机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是易失存储器、非易失性存储器或者类似的存储介质。具体地,机器可读存储介质可以是ram(radomaccessmemory,随机存取存储器)、闪存、存储驱动器、固态硬盘、任何类型的存储盘,或者类似的存储介质,或者它们的组合。需要说明的是,在本申请中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1