不同链路层隔离域的邻居发现实现方法

文档序号:7999937阅读:332来源:国知局
专利名称:不同链路层隔离域的邻居发现实现方法
技术领域
本发明涉及通信技术领域,尤其涉及一种IPv6(互联网协议第六版)网络中不同链路层隔离域的邻居发现(ND)实现方法。
背景技术
邻居发现(NDNeighbor Discovery)机制是IPv6(互联网协议第六版)网络的一项基本协议,它包括路由器发现、前缀发现、地址解析和邻居不可达检测、重定向等功能。IPv6的邻居发现协议(以下简称ND协议)与IPv4(互联网协议第四版)的ARP(地址解析协议)、ICMP(网间控制消息协议)中的路由器发现和ICMP重定向相对应,在IPv4中没有规定相应的邻居不可达检测机制和协议,这些功能在ND协议中实现并进行了一定的扩展,ND协议解决了连接在同一条链路上的所有节点之间的互操作问题。
现有技术中IPv6 ND协议由ICMPv6(Internet控制消息协议第六版)消息承载,独立于具体链路层,动态维护链路内其它邻居节点的状态信息。ICMPv6的邻居请求消息和邻居宣告消息用于在链路本地范围(Link-local scope)内获取指定IPv6地址所对应的硬件地址,为发送端节点提供了在链路本地范围内可直接通信的目的端节点的地址解析功能。
目前,出于运营管理方便、减少路由表项、防止用户绕过运营商私下互通、节省IPv6地址的考虑,BAS(宽带接入服务器)设备的接口设置通常采用如下情形在链路本地范围之内,节点之间在网络层面上虽然处于同一网段,但是在链路层面上却是相互隔离的,例如虚拟局域网(VLAN)接入方式下的不同VLAN端口之间的隔离,这样一来,处于某个隔离域中的发送端的邻居请求消息将不能到达处于其它隔离域中的目的端的链路层,因此在这种情形下的地址解析操作必然失败,结果是使得处于不同隔离域的主机之间不能正常通信。

发明内容
本发明所要解决的技术问题是克服现有的邻居发现机制无法在链路层隔离的情况下,将邻居请求消息发送到其它隔离域目的端链路层的不足,提供一种链路层隔离情况下邻居发现的实现方法,从而使得处于不同隔离域的主机之间能够正常通信。
本发明为解决上述技术问题所采用的技术方案为这种不同链路层隔离域的邻居发现实现方法,其特征在于在路由器中设置互联网协议第六版(IPv6)地址、链路层地址和隔离域标签值的绑定关系表,并通过以下步骤实现由链路层接入设备进行隔离的不同隔离域主机之间的通信A、隔离域中的主机发出邻居请求消息查找其它主机的硬件地址;B、链路层接入设备接收该邻居请求消息后,插入该隔离域标签值,将该邻居请求消息传递给路由器;C、路由器对绑定关系表进行查询,若判定目的主机与发出邻居请求消息的主机不在同一个隔离域,则主动响应邻居请求消息,并提供路由器自己的硬件地址;D、发出邻居请求消息的主机收到来自路由器响应的邻居通告消息,向路由器发送目的端是所述目的主机的数据报;E、路由器收到该数据报后,利用路由表中的路由信息将数据报转发给该目的主机。
所述的绑定关系表在路由器中设置与维护,通过路由器学习邻居请求消息来生成,或由路由器主动发起邻居请求查询来生成。
所述的绑定关系表中的每个表项还配置老化时间,所述的老化时间在相关表项添加到绑定关系表时进行初始化。
所述的步骤C中,路由器对绑定关系表进行查询,判定目的主机与发出邻居请求消息的主机是否在同一个隔离域的步骤如下a、路由器从所述的邻居请求消息中解析出源IPv6地址、链路层地址和隔离域标签值以及目标IPv6地址,根据源IPv6地址查询绑定关系表;b、如果查询成功,则对链路层地址和隔离域标签值做一致性检查;若一致,则根据目标IPV6地址查询绑定关系表,进入步骤c;若不一致,则结束路由器当前对邻居请求消息的处理;c、如果根据目标IPv6地址查询绑定关系表成功,则获取隔离域标签值,路由器比较源IPv6地址对应的隔离域标签值和目标IPv6地址对应的隔离域标签值,判定是否处于同一个隔离域。
所述的步骤b中进一步包括,如果根据源IPv6地址查询绑定关系表失败,则在绑定关系表中添加相关表项,并初始化老化时间。
所述的步骤c中进一步包括,如果根据目标IPv6地址查询绑定关系表失败,则路由器主动发出对该目标IPv6地址的邻居请求消息,等待应答,如果接收到邻居宣告消息,则获取隔离域标签值,并在绑定关系表中添加相关表项,初始化老化时间。
如果没有接收到邻居宣告消息,则简单丢弃邻居请求消息,结束路由器当前对邻居请求消息的处理。
所述的步骤C中如果目的主机与发出邻居请求消息的主机在同一个隔离域,则路由器简单丢弃邻居请求消息,结束路由器当前对邻居请求消息的处理。
所述的链路层接入设备与路由器之间的连接采用类链路聚合(Trunk)方式,保证隔离域标签值传递到路由器。
所述的链路层接入设备为局域网交换机。
本发明的有益效果为本发明针对现有的链路本地范围内某些节点在网络层面上虽然处于同一网段,但在链路层面上却是相互隔离所带来的邻居请求消息无法发送到其它隔离域目的端链路层的不足,采用IPv6地址、链路层地址、和隔离域标签来实现链路层隔离的主机之间的邻居发现代理技术,可以很好地解决在同一IPv6子网下、在链路层隔离情况下的不同隔离域的主机之间的互通问题,且不违背运营管理方便、减少路由表项、防止用户绕过运营商私下互通、节省IPv6地址的协议初衷。


图1为本发明邻居发现技术方案拓扑结构图;图2为本发明邻居发现实现流程图。
具体实施例方式
下面根据附图和实施例对本发明作进一步详细说明在链路本地范围之内,某些节点在网络层面上虽然处于同一网段,但是在链路层面上却是相互隔离的,本发明采用具有IPv6邻居发现代理(ND Agent)功能的路由器,具有邻居通告代理功能的路由器可以欺骗发起邻居请求的发送端,使它误以为该路由器就是目的端,使得处于某个隔离域中的发送端感觉到自己的邻居请求消息被处于其它隔离域中的目的端正常接收与处理,并且发送端和目的端之间能够正常通信。
如图1所示为本发明邻居发现技术方案拓扑结构图,其中路由器(Router)具有邻居发现代理(ND Agent)功能,如果隔离域1中的主机发起对隔离域2中的主机的邻居请求,那么该路由器可以欺骗隔离域1中的发送端,使它误以为路由器就是隔离域2中的目的端。
局域网交换机(LanSwitch)是提供链路层接入的设备,可以提供链路层隔离的配置和实现功能。局域网交换机与路由器之间的连接采用类Trunk(链路聚合)方式,以保证隔离域标签值传递到路由器。
PC1、PC2、PC3和PC4都处于路由器的同一接口下的主机,即它们都处于同一IPv6子网,并且PC1和PC2处于隔离域1之中,它们之间的链路层是可以互通的;PC3和PC4处于隔离域2之中,它们之间的链路层是可以互通的,但是PC1、PC2与PC3、PC4之间在链路层面上却是不能互通的。
本发明在路由器中维护绑定关系表,即IPv6地址、链路层地址和隔离域标签值的绑定关系表,该表项通过路由器学习邻居请求消息来生成,另外,该表项也通过路由器主动发起邻居请求查询来生成。绑定关系表的每个表项还配置老化时间,绑定关系表如下表所示

如图2所示为本发明邻居发现实现流程图,本发明的关键在于路由器如何知道需要做代理操作,即邻居发现代理激活技术,以图1中的主机PC1向PC3发起邻居请求为例具体描述实现的步骤1、路由器收到来自主机PC1的查找PC3硬件地址的广播邻居请求消息,主机PC1认为PC3在链路本地范围之中,转步骤2;2、路由器从该邻居请求消息中解析出源IPv6地址、链路层地址和隔离域标签值以及目标IPv6地址,其中隔离域标签是由链路层的接入设备(如本例中的局域网交换机)在转发邻居请求消息时强行添加进去的。路由器断定目标IPv6地址不是本机地址,于是根据源IPv6地址查询绑定关系表1)如果根据源IPv6地址查询绑定关系表成功,则对链路层地址和隔离域标签值做一致性检查,若不一致,则转步骤5;若一致,则转步骤3;2)如果根据源IPv6地址查询绑定关系表失败,则在绑定关系表中添加相关表项,初始化老化时间,并转步骤3;3、路由器根据目标IPv6地址查询绑定关系表1)如果查询成功,获取隔离域标签值,并转步骤4;2)如果查询失败(可能对应的表项已经被老化了或者还没有学习到相关信息),则路由器主动发出对该目标IPv6地址的邻居请求消息,等待应答,如果接收到邻居宣告消息,则获取隔离域标签值,并在绑定关系表中添加相关表项,初始化老化时间,再转步骤4;如果没有接收到邻居宣告消息,则简单丢弃邻居请求消息,并转步骤5;4、路由器比较源IPv6地址对应的隔离域标签值和目标IPv6地址对应的隔离域标签值1)如果相等,说明发起端和目的端在同一个隔离域之中,那么路由器简单丢弃邻居请求消息,并转步骤5;2)如果不相同,说明发起端和目的端在不同的隔离域之中,那么路由器必须做代理操作,即路由器主动响应PC1的邻居请求消息,并提供路由器自己的链路层地址,并转步骤5;5、结束路由器当前对邻居请求消息的处理。
以图1为例,PC1与PC3的第一次互通是通过本发明的ND Agent技术来建立的,具体处理流程如下1)隔离域1中的PC1为了查找PC3的硬件地址,PC1发出广播邻居请求消息,在隔离域1中广播;
2)局域网交换机接收该邻居请求消息,并传递给路由器,同时含有隔离域标签值;3)路由器运用邻居发现代理激活技术,判定出PC1和PC3不在同一个隔离域,于是路由器主动响应PC1的邻居请求消息,并提供路由器自己的硬件地址(不是PC3的硬件地址);4)PC1收到来自路由器的邻居通告消息,此时PC1认为路由器就是PC3;经过上述ND Agent技术处理后,PC1与PC3之间就可以正常互通了,一旦路由器收到目的端是PC3的数据报,路由器利用路由表中关于PC3的路由信息将数据报转发给PC3。这样,本发明解决在同一IPv6子网下、在链路层隔离情况下的不同隔离域的主机之间的互通问题。
权利要求
1.一种不同链路层隔离域的邻居发现实现方法,其特征在于设置互联网协议第六版(IPv6)地址、链路层地址和隔离域标签值的绑定关系表,并通过以下步骤实现由链路层接入设备进行隔离的不同隔离域主机之间的通信A、隔离域中的主机发出邻居请求消息查找其它主机的硬件地址;B、链路层接入设备接收该邻居请求消息后,插入该隔离域标签值,将该邻居请求消息传递给路由器;C、路由器对绑定关系表进行查询,若判定目的主机与发出邻居请求消息的主机不在同一个隔离域,则主动响应邻居请求消息,并提供路由器自己的硬件地址;D、发出邻居请求消息的主机收到来自路由器响应的邻居通告消息,向路由器发送目的端是所述目的主机的数据报;E、路由器收到该数据报后,利用路由表中的路由信息将数据报转发给该目的主机。
2.根据权利要求1所述的不同链路层隔离域的邻居发现实现方法,其特征在于所述的绑定关系表在路由器中设置与维护,通过路由器学习邻居请求消息来生成,或由路由器主动发起邻居请求查询来生成。
3.根据权利要求1所述的不同链路层隔离域的邻居发现实现方法,其特征在于所述的绑定关系表中的每个表项还配置老化时间,所述的老化时间在相关表项添加到绑定关系表时进行初始化。
4.根据权利要求1、2或3所述的不同链路层隔离域的邻居发现实现方法,其特征在于所述的步骤C中,路由器对绑定关系表进行查询,判定目的主机与发出邻居请求消息的主机是否在同一个隔离域的步骤如下a、路由器从所述的邻居请求消息中解析出源IPv6地址、链路层地址和隔离域标签值以及目标IPv6地址,根据源IPv6地址查询绑定关系表;b、如果查询成功,则对链路层地址和隔离域标签值做一致性检查;若一致,则根据目标IPV6地址查询绑定关系表,进入步骤c;若不一致,则结束路由器当前对邻居请求消息的处理;c、如果根据目标IPv6地址查询绑定关系表成功,则获取隔离域标签值,路由器比较源IPv6地址对应的隔离域标签值和目标IPv6地址对应的隔离域标签值,判定是否处于同一个隔离域。
5.根据权利要求4所述的不同链路层隔离域的邻居发现实现方法,其特征在于所述的步骤b中进一步包括,如果根据源IPv6地址查询绑定关系表失败,则在绑定关系表中添加相关表项,并初始化老化时间。
6.根据权利要求4所述的不同链路层隔离域的邻居发现实现方法,其特征在于所述的步骤c中进一步包括,如果根据目标IPv6地址查询绑定关系表失败,则路由器主动发出对该目标IPv6地址的邻居请求消息,等待应答,如果接收到邻居宣告消息,则获取隔离域标签值,并在绑定关系表中添加相关表项,初始化老化时间。
7.根据权利要求6所述的不同链路层隔离域的邻居发现实现方法,其特征在于如果没有接收到邻居宣告消息,则简单丢弃邻居请求消息,结束路由器当前对邻居请求消息的处理。
8.根据权利要求1所述的不同链路层隔离域的邻居发现实现方法,其特征在于所述的步骤C中如果目的主机与发出邻居请求消息的主机在同一个隔离域,则路由器简单丢弃邻居请求消息,结束路由器当前对邻居请求消息的处理。
9.根据权利要求1所述的不同链路层隔离域的邻居发现实现方法,其特征在于所述的链路层接入设备与路由器之间的连接采用类链路聚合(Trunk)方式,保证隔离域标签值传递到路由器。
10.根据权利要求1或9所述的不同链路层隔离域的邻居发现实现方法,其特征在于所述的链路层接入设备为局域网交换机。
全文摘要
一种不同链路层隔离域的邻居发现实现方法,在路由器中设置互联网协议第六版(IPv6)地址、链路层地址和隔离域标签值的绑定关系表,隔离域中的主机发出邻居请求消息查找其它主机的硬件地址;链路层接入设备接收该邻居请求消息后,插入该隔离域标签值,将该邻居请求消息传递给路由器;路由器对绑定关系表进行查询,若判定目的主机与发出邻居请求消息的主机不在同一个隔离域,则主动响应邻居请求消息,并提供路由器自己的硬件地址,欺骗发起邻居请求的发送端,使得通过链路层接入设备进行隔离的不同隔离域主机之间能够正常通信。
文档编号H04Q3/00GK1571423SQ0317839
公开日2005年1月26日 申请日期2003年7月19日 优先权日2003年7月19日
发明者李强, 罗汉军, 雷文阳 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1