一种探测下一跳mac地址的方法

文档序号:7655055阅读:1651来源:国知局
专利名称:一种探测下一跳mac地址的方法
技术领域
本发明涉及计算机网络领域,特别涉及计算机网络领域中网络路由的实现。
技术背景在说明书附图1中描述了一个常见的网络应用环境,用户在与因特网连接时, 首先通过一个路由器连接到网关上,然后经由网关实现与因特网的连接。由此可见, 路由设备在网络数据通信中必不可少,而基于网络处理器或者ASIC (Application Specific Intergrated Circuits)的路由器是一种常见的网络路由设备。如图2所 示,它按逻辑可划分为控制平面和数据平面两部分。其中,控制平面负责维护非实 时的协议处理操作,如运行路由协议、网络管理等;数据平面负责对数据报文进行 转发操作。 一般来说,控制平面的非实时操作由通用CPU执行;而数据平面,尤其 是负责高速数据转发部分,则运行在网络处理器或者ASIC上。在路由器中,路由器根据自身存储的路由表进行数据转发,路由表由各个路由 表项组成, 一般来说,每个路由表项至少应当包括以下字段前缀、下一跳MAC 地址、接口。利用路由表实现路由转发的基本操作过程如下当路由器收到IP报文后,根据目的IP地址查询路由表(常见的路由査询算法为最长前缀匹配算法),如 果査到匹配的路由表项并且该路由表项的内容表明为非本机路由,则根据路由表项中的下一跳MAC地址对IP报文中的以太网首部进行重新封装,然后从路由表项的接 口字段所表示的接口发送IP报文。要完成上述的路由转发过程,首先需要控制平面将路由协议产生的路由下发至 数据平面,形成数据平面的路由表,从而使得网络处理器能够根据数据平面的路由 表获得路由信息。但对于控制平面的某些路由条目(如缺省路由),最开始配置时只 配置了下一跳网关的IPv6地址,没有对应的下一跳MAC地址。而从上述的路由转 发过程可知,在转发数据报文时,只有获得下一瑕夂MAC地址才能够对报文进行封 装、转发。因此,在实现路由转发操作前, 一般的实现方法如下1、在路由器的数据平面接收到IP报文后,査询路由表,如果路由表正常,则 进行正常的数据转发操作,但如果在路由表中所査询到的下一跳网关的二层信息不完全,则将IP报文发送到控制平面;2、 控制平面缓存该IP报文,并向下一跳网关发送邻居请求报文;3、 下一跳网关收到邻居请求报文后,回复邻居应答报文;4、 路由器的控制平面根据邻居应答报文中可得到下一跳MAC地址,形成一条 完整的路由表项后,再将完整的路由表项发送到数据平面,由数据平面完成路由查 询、数据转发等后续工作。上述获取下一跳MAC地址的操作被称为控制平面被动学习过程。这种方法的 缺点在于,在被动学习MAC地址的过程中,数据平面的网络处理器需要向控制平 面的CPU发送大量的报文,直到被动学习过程结束,控制平面向数据平面返回完整 的路由表项,这一操作会耗费控制平面中的CPU资源,影响路由器的执行效率。发明内容本发明的目的是克服现有的下一跳MAC地址被动学习方法在被动学习过程中 需要向路由器发送大量的报文,耗费CPU资源,影响路由器执行效率的缺陷,从而 提供一种高效的下一跳MAC地址探测方法。为了实现上述目的,本发明提供了一种探测下一跳MAC地址的方法,包括以 下步骤步骤l)、路由器在配置网络路由时,探测到路由表中的路由表项不具备下一跳 MAC地址信息;步骤2)、路由器的控制平面主动构造一个邻居请求报文,并发送到互联网中与 路由器相连接的下一跳网关上;步骤3)、下一跳网关接收到所述的邻居请求报文后,向所述路由器回复邻居公 告报文;步骤4)、路由器接收到所述的邻居公告报文后,根据所述的邻居报文将路由表 项中的下一跳MAC地址信息填写完整,并向数据平面中的路由表下发路由表项。上述技术方案中,当路由器没有接收到所述的邻居公告报文时,重新发送邻居 请求报文,直至所述的路由器收到所述的邻居公告报文或重新发送邻居请求报文的 次数超过一个阈值。上述技术方案中,在所述的邻居请求报文中,IPv6首部的目的IPv6地址字段 为下一跳网关对应的请求节点组播地址,在邻居请求消息首部的目标地址字段为下 一跳网关的IPv6地址。上述技术方案中,在所述的邻居公告报文中,邻居公告消息首部的目标地址字段为下一跳网关的IPv6地址,目标链路层地址字段为下一跳网关的MAC地址。 所述的阈值可以取值为3。 本发明的优点在于本发明通过发送邻居请求报文主动探测网络路由的下一跳MAC地址,减小了路 由器控制平面CPU的消耗,提高了路由器的效率。


图1为一个常见的网络应用环境的示意图; 图2为路由器按逻辑划分的示意图;图3为本发明的探测下一跳MAC地址的方法的流程图。
具体实施方式
下面结合附图和具体实施方式
对本发明作进一步详细描述本发明可应用于任何基于网络处理器或者ASIC的硬件路由器。下面以网络处理器为例,结合附图3,介绍本发明方法的一个最佳实施例步骤IO、路由器在转发IP报文前,首先配置网络路由,在配置过程中,检查 路由表中的路由表项是否具备下一跳MAC地址信息,若路由表中的路由表项不具 备下一跳MAC地址信息,则执行下一步,否则按照正常下发路由的方法执行。步骤20、路由器的控制平面主动构造一个邻居请求NS (Neighbour Solicitation)报文,并发送到互联网中与路由器相连接的下一跳网关上;同时还 要设定一个重发次数,并初始化该重发次数为0;在本步骤中,所采用的NS报文格式与RFC2461中定义的一致,在NS报文中, IPv6首部的目的IPv6地址字段为该下一跳网关对应的请求节点组播地址 (Solicited-node Multicast Address),另外,在NS消息首部中,目标地址(Target Address)字段为下一跳网关的IPv6地址;步骤30、下一跳网关接收到邻居请求报文后,向路由器回复邻居公告NA (Neighbour Advertisement)报文;在NA消息首部中,目标地址(Target Address) 字段为下一跳网关的IPv6地址,在目标链路层地址(Target link-layer Address) 字段为下一跳网关的MAC地址。步骤40、判断路由器是否收到了邻居公告报文,若收到,则根据邻居公告NA 报文将路由表项中的下一跳MAC地址信息填写完整,并向数据平面中的路由表下 发该路由表项,然后执行步骤70;若没有收到,则执行下一步;步骤50、重新向下一跳网关发送NS报文;步骤60、将重发次数值加l,若当前的重发次数高于一个预先设定的阈值,则 标注网络路由不可达,并且不向数据平面的路由表下发相应的路由表项,否则,重 新执行步骤40;例如,假设在本实施例中,所设定的阀值为3次,则当前的重发次 数到达3次,就可标注网络路由不可达。步骤70、路由器的控制平面完成下发路由表项操作后,路由器数据平面的网络 处理器就可以根据该路由表项对相应的IP报文进行数据转发,而不再将IP报文上 送控制平面的CPU。最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管 参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明 的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均 应涵盖在本发明的权利要求范围当中。
权利要求
1、一种探测下一跳MAC地址的方法,包括以下步骤步骤1)、路由器在配置网络路由时,探测到路由表中的路由表项不具备下一跳MAC地址信息;步骤2)、路由器的控制平面主动构造一个邻居请求报文,并发送到互联网中与路由器相连接的下一跳网关上;步骤3)、下一跳网关接收到所述的邻居请求报文后,向所述路由器回复邻居公告报文;步骤4)、路由器接收到所述的邻居公告报文后,根据所述的邻居报文将路由表项中的下一跳MAC地址信息填写完整,并向数据平面中的路由表下发路由表项。
2、 根据权利要求1所述的探测下一跳MAC地址的方法,其特征在于,当路由 器没有接收到所述的邻居公告报文时,重新发送邻居请求报文,直至所述的路由器 收到所述的邻居公告报文或重新发送邻居请求报文的次数超过一个阈值。
3、 根据权利要求1或2所述的探测下一跳MAC地址的方法,其特征在于,在 所述的邻居请求报文中,IPv6首部的目的IPv6地址字段为下一跳网关对应的请求 节点组播地址,在邻居请求消息首部的目标地址字段为下一跳网关的IPv6地址。
4、 根据权利要求1或2所述的探测下一跳MAC地址的方法,其特征在于,在 所述的邻居公告报文中,邻居公告消息首部的目标地址字段为下一跳网关的IPv6 地址,目标链路层地址字段为下一跳网关的MAC地址。
5、 根据权利要求2所述的探测下一跳MAC地址的方法,其特征在于,所述的 阈值为3。
全文摘要
本发明公开了一种探测下一跳MAC地址的方法,包括路由器在配置网络路由时,探测到路由表中的路由表项不具备下一跳MAC地址信息;路由器的控制平面主动构造一个邻居请求报文,并发送到互联网中与路由器相连接的下一跳网关上;下一跳网关接收到邻居请求报文后,向路由器回复邻居公告报文;路由器根据邻居报文将路由表项中的下一跳MAC地址信息填写完整,并向数据平面中的路由表下发路由表项。本发明通过发送邻居请求报文主动探测网络路由的下一跳MAC地址,减小了路由器控制平面CPU的消耗,提高了路由器的效率。
文档编号H04L12/66GK101330447SQ20071011766
公开日2008年12月24日 申请日期2007年6月21日 优先权日2007年6月21日
发明者辉 唐, 鼎 唐, 涛 林, 赵志军 申请人:中国科学院声学研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1