地址解析方法及装置与流程

文档序号:14179208阅读:486来源:国知局
地址解析方法及装置与流程

本申请涉及通信技术领域,尤其涉及一种地址解析方法及装置。



背景技术:

在互联网协议第6版(internetprotocolversion6,ipv6)网络中,地址解析是指根据节点的ipv6地址,获取节点的链路层地址。在地址解析过程中,源节点以组播的方式发送携带目标节点的ipv6地址的邻居请求(neighborsolicitation,ns)报文。这样,其他节点可以根据自身的ipv6地址,确定自身是否是该ns报文对应的目标节点。目标节点在接收到ns报文后会向源节点发送邻居通告(neighboradvertisement,na)报文,该na报文中携带目标节点的链路层地址。这样,源节点完成对目标节点的地址解析,从而源节点可以根据目标节点的链路层地址,向目标节点转发数据报文。

目前,分布式转发设备一般包括主主控处理单元(mainprocessingunit,mpu)、从mpu以及线路处理单元(lineprocessingunit,lpu)。在地址解析的过程中,由分布式转发设备的主mpu负责处理邻居设备发送的ns报文。

但是,在分布式转发设备的主mpu故障后,从mpu需要一段时间才能切换为主mpu。在这段时间中,从mpu不能对邻居设备的ns报文进行处理。这导致邻居设备不能获取到该分布式转发设备的链路层地址或邻居设备认为分布式转发设备不可达,进而无法将数据报文转发给该分布式转发设备。



技术实现要素:

本申请提供一种地址解析方法及装置,用于解决现有技术中分布式转发设备在主从切换过程中不能响应邻居设备发送的ns报文的问题。

为达到上述目的,本申请采用如下技术方案:

第一方面,本申请提供一种地址解析方法,所述方法应用于分布式转发设备,所述分布式转发设备包括mpu和lpu,所述lpu存储有本地表项,所述本地表项用于记录分布式转发设备的ipv6地址以及对应的链路层地址,所述方法包括:

lpu接收第一ns报文,所述第一ns报文为邻居设备发送的ns报文;

若所述第一ns报文携带的目标地址是所述分布式转发设备的ipv6地址,lpu向邻居设备发送响应于所述第一ns报文的na报文,所述na报文携带有与目标地址对应的链路层地址。

这样,在分布式转发设备中,由lpu负责响应邻居设备发送的ns报文,从而即使分布式转发设备发生主从切换,邻居设备也能根据lpu返回的na报文,获取到该分布式转发设备的链路层地址,从而邻居设备能够向分布式转发设备发送数据报文。

第二方面,本申请实施例提供一种lpu,所述lpu存储有本地表项,所述本地表项用于记录分布式转发设备的ipv6地址以及对应的链路层地址,所述lpu包括:

接收模块,用于接收第一ns报文,所述第一ns报文为邻居设备发送的ns报文;

发送模块,用于在所述第一ns报文携带的目标地址是所述分布式转发设备的ipv6地址的情况下,向邻居设备发送响应于所述第一ns报文的na报文,所述na报文携带有与目标地址对应的链路层地址。

第三方面,本申请提供一种lpu,所述lpu包括:处理器、收发器和存储器。其中,存储器存储有一个或多个程序,一个或多个程序包括计算机可执行指令,当该lpu运行时,处理器执行该存储器存储的该计算机可执行指令,以使该lpu执行第一方面及其各种可选的实现方式中任意之一所述的地址解析方法。

第四方面,本申请提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当lpu执行该指令时,该lpu执行上述第一方面及其各种可选的实现方式中任意之一所述的地址解析方法。

其中,上述第二方面至第四方面对应的有益效果,可参见第一方面的相关描述,在此不再赘述。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍。

图1为本申请实施例提供的一种分布式转发设备的架构图;

图2为本申请实施例提供的一种地址解析方法的流程图;

图3为本申请实施例提供的另一种地址解析方法的流程图;

图4为本申请实施例提供的一种lpu的结构示意图;

图5为本申请实施例提供的另一种lpu的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。

如图1所示,分布式转发设备包括mpu和lpu。mpu又可分为主mpu和从mpu。主mpu用于负责学习创建lpu转发数据报文所依赖的各种转发信息如路由表,邻接表等。从mpu是主mpu的备份,用于在主mpu故障的情况下,替代主mpu工作。lpu用于负责转发数据报文。上述分布式转发设备一般为分布式路由器或分布式交换机。

如图2所示,本申请实施例提供一种地址解析方法,所述方法应用于图1所示的分布式转发设备中,所述方法包括:

101、lpu接收第一ns报文。

其中,所述第一ns报文为邻居设备发送的ns报文。

102、lpu检测所述第一ns报文携带的目标地址是否是所述分布式转发设备的ipv6地址。

值得说明的是,lpu存储有本地表项,所述本地表项用于记录分布式转发设备的ipv6地址以及对应的链路层地址。另外,为了提高查询效率,lpu对其存储的本地表项采用基于接口和基于ip的两级哈希(hash)链表进行管理。

一种可选的实现方式中,在接收到第一ns报文后,lpu遍历其存储的本地表项。若存在一个本地表项中记录的ipv6地址与所述第一ns报文携带的目标地址相同,则lpu确定所述第一ns报文携带的目标地址是所述分布式转发设备的ipv6地址,从而lpu执行下述步骤103。若任意一个本地表项中记录的ipv6地址均不同于所述第一ns报文携带的目标地址,则lpu确定所述第一ns报文携带的目标地址不是所述分布式转发设备的ipv6地址,因此lpu不对所述第一ns报文进行处理,或者lpu将所述第一ns报文上传至mpu,以便于mpu再次检测所述第一ns报文携带的目标地址是否是所述分布式转发设备的ipv6地址。

103、lpu向邻居设备发送响应于所述第一ns报文的na报文。

其中,所述响应于所述第一ns报文的na报文携带有与目标地址对应的链路层地址。

一种可选的实现方式中,lpu根据所述第一ns报文携带的目标地址,从本地表项中查找出对应的链路层地址。然后,lpu以该链路层地址构建na报文,并将该na报文发送给邻居设备。

这样,由lpu负责响应邻居设备发送的ns报文,从而即使分布式转发设备发生主从切换,也能保证邻居设备获取到该分布式转发设备的链路层地址,使得邻居设备能够向分布式转发设备发送数据报文。

如图3所示,本申请实施例提供另一种地址解析方法,所述方法包括:

201、在lpu转发数据报文时,若lpu未存储数据报文携带的目的地址对应的邻居表项,则lpu根据数据报文携带的目的地址创建第二ns报文。

其中,所述第二ns报文为lpu发送的ns报文。

lpu存储有邻居表项,所述邻居表项包括邻居设备的ipv6地址和链路层地址。另外,为了提高查询效率,lpu对其存储的邻居表项采用radix树进行管理。

202、lpu以组播的方式发送第二ns报文。

可选的,lpu创建临时表项以缓存所述数据报文。所述临时表项包括:所述数据报文携带的目的地址、发送时间和发送次数,所述发送时间为lpu下一次发送所述第二ns报文的时间,所述发送次数为lpu发送所述第二ns报文的次数。

另外,为了便于对临时表项进行管理,lpu可将所述临时表项添加到未解析链表中。

可选的,在发送第二ns报文后,lpu定时遍历未解析链表上的临时表项,判断临时表项是否超时,所述临时表项超时为系统时间到达所述临时表项携带的发送时间。若所述临时表项超时,lpu判断所述临时表项携带的发送次数是否大于预设次数。若所述发送次数大于预设次数,说明该数据报文携带的目的地址不存在,因此lpu删除所述临时表项,并删除所述缓存的数据报文。若所述发送次数小于等于预设次数,lpu重新发送第二ns报文。

203、lpu接收到响应于所述第二ns报文的na报文。

若网络中某个邻居设备的ipv6地址与所述数据报文携带的目的地址相同,则这个邻居设备会向lpu发送响应于所述第二ns报文的na报文。从而,lpu能够接受到响应与所述第二ns报文的na报文。这样,lpu完成对邻居设备的地址解析过程。

204、lpu根据响应于所述第二ns报文的na报文携带的邻居设备的链路层地址,发送所述数据报文。

可选的,lpu将邻居设备的链路层地址写入临时表项中。这样,该临时表项相当于邻居表项。之后,lpu将该临时表项从未解析链表上删除,添加到用于管理邻居表项的radix树上。

值得说明的是,对于配置不高的分布式转发设备来说,由lpu负责处理地址解析过程,可以减轻mpu的负荷,从而避免mpu负荷过重出现故障。

为了保证分布式转发设备与邻近设备之间的正常通信,lpu在接收到第一ns报文之后,若所述第一ns报文携带的邻居设备的ipv6地址和链路层地址未存在对应的邻居表项,lpu创建邻居表项。或者,在接收到响应于所述第二ns报文的na报文之后,lpu创建邻居表项。

可选的,lpu在创建邻居表项后,向mpu发送邻居表项创建通知,所述邻居表项创建通知用于指示mpu创建邻居表项。

可选的,若lpu更新邻居表项的状态,则lpu向mpu发送邻居表项状态更新通知,所述邻居表项状态更新通知用于指示mpu更新邻居表项的状态。

值得说明的是,邻居表项的状态包括:学习状态(incomplete)、邻居可达状态(reachable)、陈旧状态(stale)、延迟状态(delay)和探测状态(probe)。

可选的,若lpu更新邻居表项中的链路层地址,则lpu向mpu发送邻居表项链路层地址更新通知,所述邻居表项链路层地址更新通知用于指示mpu更新邻居表项中的链路层地址。

另外,为了保证lpu上存储的本地表项与mpu上存储的本地表项一致,在mpu修改本地表项后,mpu会向lpu发送同步消息。这种情况下,lpu接收mpu下发的同步消息,所述同步消息用于指示lpu对本地表项执行同步操作,所述同步操作包括:更新本地表项、删除本地表项或者创建本地表项。然后,lpu根据所述同步消息,对本地表项执行同步操作。在成功地对本地表项执行同步操作后,lpu向mpu返回同步成功消息,所述同步成功消息用于表示lpu对本地表项执行同步操作成功。

值得说明的是,在上述lpu与mpu进行表项同步的过程中,lpu和mpu采用相同的消息格式,该消息格式包括以下字段:目标id、邻居表项的状态(或本地表项的状态)、邻居表项的链路层地址(或本地表项的链路层地址)、接口索引值、接口所在虚拟路由网络路由转发实例(virtualprivatenetworkroutingandforwardinginstance,vrf)值、邻居表项的ipv6地址(或本地表项的ipv6地址)。其中,目标id为mpu或lpu对应的卡槽号,即目标id用于指示消息发往哪个mpu或者哪个lpu。

另外,为了不影响lpu的转发性能,由lpu的主核负责上述lpu与mpu之间的表项同步过程。

本申请实施例可以根据上述方法示例对lpu进行功能模块或者功能单元的划分,例如,可以对应各个功能划分各个功能模块或者功能单元,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块或者功能单元的形式实现。其中,本申请实施例中对模块或者单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

如图4所示,本申请实施例提供一种lpu,所述lpu存储有本地表项,所述本地表项用于记录分布式转发设备的ipv6地址以及对应的链路层地址,所述lpu包括:接收模块11、发送模块12以及处理模块13。

接收模块11,用于接收第一ns报文,所述第一ns报文为邻居设备发送的ns报文。

发送模块12,用于在所述第一ns报文携带的目标地址是所述分布式转发设备的ipv6地址的情况下,向邻居设备发送响应于所述第一ns报文的na报文,所述na报文携带有与目标地址对应的链路层地址。

一种可选的实现方式中,所述处理模块13,用于在lpu转发数据报文时,lpu未存储数据报文携带的目的地址对应的邻居表项的情况下,根据数据报文携带的目的地址创建第二ns报文;其中,所述邻居表项包括邻居设备的ipv6地址和链路层地址,所述第二ns报文为lpu发送的ns报文。所述发送模块12,用于以组播的方式发送第二ns报文。所述接收模块11,用于接收响应于所述第二ns报文的na报文。所述发送模块12,还用于根据响应于所述第二ns报文的na报文携带的邻居设备的链路层地址,发送所述数据报文。

一种可选的实现方式中,所述处理模块13,用于创建临时表项以缓存所述数据报文,所述临时表项包括:发送时间和发送次数,所述发送时间为lpu下一次发送所述第二ns报文的时间,所述发送次数为lpu发送所述第二ns报文的次数;判断所述临时表项是否超时,所述临时表项超时为系统时间到达所述临时表项携带的发送时间;在所述临时表项超时的情况下,判断所述临时表项携带的发送次数是否大于预设次数;在所述发送次数大于预设次数的情况下,删除所述临时表项。所述发送模块12,用于在所述发送次数小于等于预设次数的情况下,重新发送第二ns报文。

一种可选的实现方式中,所述处理模块13,用于在第一ns报文携带的邻居设备的ipv6地址和链路层地址未存在对应的邻居表项的情况下,创建邻居表项;或者,在接收模块接收到响应于第二ns报文的na报文之后,创建邻居表项。所述发送模块12,用于在所述处理模块创建邻居表项后,向mpu发送邻居表项创建通知,所述邻居表项创建通知用于指示mpu创建邻居表项。所述发送模块12,用于在所述处理模块更新邻居表项的状态后,向mpu发送邻居表项状态更新通知,所述邻居表项状态更新通知用于指示mpu更新邻居表项的状态;或者,在所述处理模块更新邻居表项中的链路层地址后,向mpu发送邻居表项链路层地址更新通知,所述邻居表项链路层地址更新通知用于指示mpu更新邻居表项中的链路层地址。

一种可选的实现方式中,所述接收模块11,用于接收mpu下发的同步消息,所述同步消息用于指示lpu对本地表项执行同步操作,所述同步操作包括:更新本地表项、删除本地表项或者创建本地表项。所述处理模块13,用于根据所述同步消息,对本地表项执行同步操作。所述发送模块12,用于向mpu返回同步成功消息,所述同步成功消息用于表示lpu对本地表项执行同步操作成功。

在采用集成的单元的情况下,图5示出了上述实施例中所涉及的lpu的一种可能的结构示意图。所述lpu包括:处理单元21。所述处理单元21用于执行上述处理模块13执行的步骤,和/或用于执行本文所描述的技术的其它过程。所述转发设备还可以包括通信单元22、存储单元23和总线24。其中,所述通信模块22用于执行上述接收模块11和发送模块12执行的步骤,所述通信单元22还用于支持转发设备与其他设备的通信。存储单元23用于存储转发设备的程序代码和数据。

其中,上述处理单元21可以是转发设备中的处理器或控制器,该处理器或控制器可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。该处理器或控制器可以是中央处理器,通用处理器,数字信号处理器,专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合等。

通信单元22可以是转发设备中的收发器、收发电路或系统接口等。

存储单元23可以是转发设备中的存储器等,该存储器可以包括易失性存储器,例如随机存取存储器;该存储器也可以包括非易失性存储器,例如只读存储器,快闪存储器,硬盘或固态硬盘;该存储器还可以包括上述种类的存储器的组合。

总线24可以是扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。总线24可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

本说明书中的各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。

本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序加载到计算机上被计算机执行时,使计算机执行上述地址解析方法。

其中,计算机可读存储介质,例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(randomaccessmemory,ram)、只读存储器(read-onlymemory,rom)、可擦式可编程只读存储器(erasableprogrammablereadonlymemory,eprom)、光纤、便携式紧凑磁盘只读存储器(compactdiscread-onlymemory,cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1