一种解决映射关系失效的方法
技术领域
本发明涉及一种有效解决映射关系失效的方法,属于网络技术领域。
背景技术
在传统的TCP/IP体系结构中,IP地址既代表网络节点在网络中的位置,又代表网络节点在网络中的身份。IP地址的这种语义上的双重属性,导致传统互联网在可扩展性、安全性、移动性等方面存在重大缺陷。
为此,以将IP地址的身份属性和位置属性分别用身份标识和位置标识表示为特征的身份与位置分离思想应运而生。
比如:CISCO公司提出的位置与身份分离协议[Locator/ID SeparationProtocol(LISP),see http://tools.ietf.org/pdf/draft-ietf-lisp-09.pdf]、一体化网络体系(中国专利ZL200510134579.1)都采用了身份与位置分离的思想。
在采用身份与位置分离的网络中,必须将一个网络节点的身份标识对应的位置标识向映射系统注册,以便该网络节点能够被其他网络节点访问。
如图1所示,节点A通过接入路由器AR1接入网络,其映射关系(A,AR1)必须向映射系统注册,如图1中1)所示。
类似地,节点B通过接入路由器AR2接入网络,其映射关系(B,AR2)必须向映射系统注册,如图1中2)所示。
当节点B从接入网2移动到接入网3之后,节点B通过接入路由器AR3接入网络。此时,必须向映射系统更新节点B的新映射关系为(B,AR3),如图1中3)所示,以便送给节点B的分组能够被准确送往接入网3;否则,发给节点B的分组将被网络转发给接入网2,从而不能送达节点B。
如图2所示,不在一个接入网的两个网络节点A与B的通信过程通常包括:
步骤1)节点A向节点B发送数据,数据包的源标识为节点A的身份标识,数据包的目的标识为节点B的身份标识;
步骤2)接入路由器AR1收到从节点A发来的数据包后,向映射系统查询得到节点B的身份标识对应的位置标识。为避免重复查询,接入路由器AR1将节点B的映射关系存入本地缓存。
步骤3)接入路由器AR1对从节点A来的数据包封装一个报头。报头的目的位置标识为节点B的位置标识,报头的源位置标识为接入路由器AR1的位置标识。
步骤4)接入路由器AR1把封装后的数据包转发到核心网中,核心网利用节点B的位置标识将该数据包转发给接入路由器AR2;
步骤5)接入路由器AR2对收到的数据包解封装,并将节点A对应的映射关系(A,AR1)存入本地缓存,以避免节点B向节点A发送分组时向映射系统查询节点A的映射关系。
步骤6)接入路由器AR2将数据包交付给节点B。
从上述过程中,节点A的接入路由器AR1缓存了节点B的映射关系(B,AR2)。通常,为了节省缓存空间,接入路由器为每一个映射条目设置一个最大缓存时间T秒。当某个映射条目的缓存时间超过该最大缓存时间T时,接入路由器就会将该映射条目移除。
然而,当节点B从接入网络2移动到接入网络3的时候,节点B的映射关系改变为(B,AR3)。如果这种改变是在节点A和节点B的通信过程中发生的,接入路由器AR1处缓存的节点B的映射关系通常能够被及时更新。然而,如果这种改变是在节点A和节点B的通信结束之后发生,则接入路由器AR1处缓存的节点B的映射关系很难被及时更新。如果此时有另外一个通过接入路由器AR1接入网络的节点C发送分组给节点B,分组仍将被发送给接入网1而不是接入网2,从而导致分组丢失。
图3示出了发明人的关于跳数受限的转发链方法。
在图3中,假定节点B先通过AR1接入网络,随后依次移动到AR2、AR3、AR4所在的接入网并分别通过AR2、AR3、AR4接入网络。在该方案中,假定AR1为链头。当节点B从AR1移动到AR2时,AR1为节点B维护一个指针,指向AR2,如图3中(2)所示。类似地,当节点B从AR2移动到AR3时,AR2也为节点B维护一个指针,指向AR3,如图3中(3)所示。这样,从AR1开始,直到AR3,形成了一个转发链,其长度为2跳。如果规定该链的长度大于2,则上述过程可以一直持续,直到链的长度大于一个事先约定的长度h时终止。在上述移动过程中,从节点A去往节点B的分组一直从对端节点A的接入路由器AR0发送给AR1。然后,再沿着该转发链一直到达节点B当前的接入路由器。这样,在节点B的移动过程中,AR0处维护的节点B的映射关系一直保持为(B,AR1)不变,从而能够一定程度上解决映射关系失效的问题。
假定h=2,则当图3中节点B从AR3移动到AR4时,由于链的长度已经超过事先设定的链长2,必须对接入路由器AR0处缓存的节点B的映射条目进行更新。此时,仍然有可能出现不能正常更新甚至无法更新的情形。
另外,从节点A去往节点B的分组是从AR0先送给AR1再沿着转发链逐跳转发到节点B的当前接入路由器,而不是由AR0直接送给节点B的当前接入路由器。也即分组转发存在所谓的“三角路由”,从而增大了端对端的时延并加大了网络带宽的消耗。
为此,发明人提出了改进方案,与原方案中转发链的长度受限于最大长度h不同,在改进方案中,转发链的长度不受限制。因而,从节点A发往节点B的分组总是被接入路由器AR0发往节点B的初始接入路由器AR1。这样,接入路由器AR0处缓存的节点B的映射关系就可以始终保持为(B,AR1)而不用更新,从而解决了映射关系失效的问题。
与原方案类似,在改进方案中,去往节点B的分组总是被先送往节点B的初始接入路由器,然后,沿着转发链转发,直至到达节点B的当前接入路由器。这样,除非节点B的当前接入路由器是其初始接入路由器,去往节点B的分组始终会经历三角路由,从而大大增加通信时延并浪费带宽。
发明内容
本发明的目的是提供一种解决映射关系失效的方法,其能够有效解决由于移动导致的各种映射关系失效。该方法在保证终端正常通信的基础上,能够适时更新接入路由器处缓存的映射条目,从而不但能够有效解决映射关系失效的问题,而且能够克服现有技术方案中存在的三角路由等问题。
为此,本发明提供了一种解决映射关系失效的方法,当移动节点从一个接入路由器AR1移动到另一个接入路由器AR2时,接入路由器AR1为该移动节点设立一个指针,指向接入路由器AR2,其特征在于,
适时更新对端接入路由器处缓存的映射条目,该移动节点的接入路由器采用如下过程转发去往该移动节点分组:
1)查询该移动节点是否正通过该接入路由器接入网络,如果不是,进入步骤2);否则,该接入路由器为该移动节点的当前接入路由器,进入步骤3);
2)查询本地是否为该移动节点的身份标识维护了一个指针,如果是,将该分组转发给该指针指向的下一个接入路由器;否则,丢弃该分组;
3)查询该接入路由器的本地映射表,看是否缓存了该移动节点的身份标识对应的映射关系,如果有,直接将分组发送给该移动节点;否则,向分组源对应的接入路由器通告该移动节点的身份标识对应的映射关系,
当分组源的接入路由器收到该通告后,更新该移动节点对应的映射关系,之后,便将分组直接发送给该移动节点的当前接入路由器,从而避免三角路由,以节省网络资源。
优选地,接入路由器AR1在为该移动节点设立指针的同时,为该指针设置一个定时器,并将该定时器的初始值设置为该移动节点的映射关系允许的缓存时间T+s秒,s是一个非负数,当该定时器到时之后,接入路由器即将该移动节点对应的指针删除,从而节省缓存空间。
优选地,s为10。
优选地,让该移动节点的当前接入路由器知道其通信对端的映射关系,如果网络是以封装的方式转发分组,将该分组中的目的位置标识改写为下一个接入路由器的位置标识,然后,将分组发送给该下一个接入路由器,这样,当下一个接入路由器收到该分组的时候,根据分组中的源身份标识和源位置标识确定通信对端的映射关系。
优选地,如果一个接入路由器为该移动节点存有一个指针但并不是该移动节点的当前接入路由器,则该接入路由器并不向分组源的接入路由器发送映射更新通告,从而避免了通告过期的映射关系。
优选地,移动节点的当前接入路由器在收到去往该移动节点的分组但是又没有缓存分组源的映射关系时,将分组源的映射关系存入本地缓存,并向分组源的接入路由器通告该移动节点的最新映射关系。
根据本发明,为指针设立计时器,并在计时器到时之后将指针删除,从而可以避免由指针形成的转发链过长。这样不但能够缩短分组转发时延,而且能够节省网络资源。
根据本发明,移动节点的当前接入路由器在收到去往该移动节点的分组之后,更新该分组源的接入路由器处缓存的该移动节点的映射关系。这样,如果该分组源继续向该移动节点发送分组,这些分组可以从该分组源的接入路由器直接发送给该移动节点的当前接入路由器,从而避免了三角路由,进一步缩短分组转发时延并节省网络资源。
根据本发明,如果一个接入路由器为该移动节点存有一个指针但并不是该移动节点的当前接入路由器,则该接入路由器并不向分组源的接入路由器发送映射更新通告,从而避免了通告过期的映射关系。
附图说明
图1是身份与位置分离网络中映射关系注册示意图。
图2是身份与位置分离网络中的通信过程示意图。
图3是发明人研发思想的示意图。
图4是实施例一的示意图。
图5是实施例二的示意图。
具体实施方式
下面通过实施例,进一步说明本发明的用法及其有益效果。
实施例一
在图4中,假定节点B为移动节点,节点A为移动节点B的通信对端。节点A的接入路由器为AR0;移动节点B最初通过接入路由器AR1接入网络,随后相继通过接入路由器AR2,AR3,...,ARk接入网络。
当移动节点从接入路由器AR1移动到接入路由器AR2的时候,接入路由器AR1为移动节点B设置一个指针,使其指向接入路由器AR2,并为该指针设置计时器“时钟1”,如图4(a)所示。类似地,当移动节点B移动到接入路由器AR3的时候,接入路由器AR2为移动节点B设置一个指针,使其指向接入路由器AR3,并为该指针设置计时器“时钟2”,如图4(b)所示。同样,当移动节点B移动到接入路由器AR4的时候,接入路由器AR3为移动节点B设置一个指针,使其指向接入路由器AR4,并为该指针设置计时器“时钟3”,如图4(c)所示。这一过程一直持续,直至移动节点B移动到接入路由器ARk。在上述过程中,接入路由器AR2,AR3,...,ARk分别向映射系统为移动节点B注册映射关系(B,AR2),(B,AR3),...,(B,ARk)。
此时,假定接入路由器AR0收到了节点A向移动节点B发送的分组并且假定AR0缓存着移动节点B的映射关系(B,AR1)。由于接入路由器AR0能够从本地缓存中找到移动节点B的映射关系,它直接将去往B的分组通过封装的方式发送给AR1,如图4中(1)所示。
当接入路由器AR1收到去往移动节点B的分组之后,发现移动节点B当前没有通过它接入网络。于是查询本地是否维护了移动节点B的指针。当接入路由器AR1发现本地维护了移动节点B的指针之后,将其收到的分组的目的位置标识替换成AR2的位置标识,然后,将分组发往AR2,如图4中(2)所示。由于接入路由器AR1发现本地维护着移动节点B的指针,进而知道自己不是移动节点B的当前接入路由器,因而并不向分组源的接入路由器(也即AR0)发送映射更新。
类似地,当接入路由器AR2收到去往移动节点B的分组后,也发现移动节点B当前没有通过它接入网络。通过查询,发现本地维护了移动节点B的指针,表明移动节点从接入路由器AR2移动到了AR3。于是,将分组中的目的位置标识替换为AR3的位置标识,然后,将分组发往AR3,如图4中(3)所示。同样,由于接入路由器AR2发现本地维护着移动节点B的指针,知道自己不是移动节点B的当前接入路由器,因而也不向分组源的接入路由器(也即AR0)发送映射更新。
这一过程一直持续,直到分组被发送给接入路由器ARk。当接入路由器ARk收到去往移动节点B的分组后,发现移动节点B正通过它接入网络。于是,接入路由器ARk查询本地映射表,看本地是否缓存着节点A的映射关系。如果缓存的映射关系不是(A,AR0)或者没有缓存节点A的映射关系,接入路由器ARk将节点A的映射关系更新为(或者存为)映射关系(A,AR0)。然后,ARk向接入路由器AR0通告移动节点B的映射关系(B,ARk),如图4中(4)所示。最后,接入路由器ARk将去往移动节点B的分组直接发送给移动节点B。
当接入路由器AR0收到从接入路由器ARk发来的移动节点B的映射关系(B,ARk)后,将移动节点B的映射关系更新为(B,ARk)。之后,将从节点A发往移动节点B的分组直接发往接入路由器ARk,如图4中(5)所示。这样,既避免了三角路由,又节省了网络资源。
当接入路由器AR1,AR2,...,ARk-1中维护的移动节点B的指针的计时器过期之后,分别将移动节点B的指针移除。
实施例二
本发明不仅可以如实施例一所示的方式使用,而且可以其他方式使用。如图5所示,在本实施例中,网络中有若干个移动管理域。在每个移动管理域内,每个移动节点都有一个本地锚点。对不同的移动节点,其本地锚点可能不同。当某个移动节点(如图5中移动节点B)在该移动管理域内的不同接入路由器(如图5中接入路由器AR2和AR3)之间移动的时候,各个接入路由器向其本地锚点汇报自己是该移动节点的当前接入路由器,如图5中(1)和(3)所示。当其本地锚点第一次发现某个移动节点接入该移动管理域时,向映射系统注册该移动节点的映射关系,并使得该映射关系指向该锚点。在图5中,移动节点B的本地锚点AR4向映射系统注册移动节点B的映射关系(B,AR4),如图5中(2)所示。
然而,当移动节点在不同移动管理域之间移动的时候,可以采用本发明提出的方法来有效解决映射关系的失效问题。如图5中,当移动节点B通过接入路由器AR5接入网络时,接入路由器AR5向移动节点B在该移动管理域的锚点AR6汇报自己是移动节点B的当前接入路由器,如图5中(4)所示。锚点AR6收到该汇报后,发现是移动节点B第一次进入该移动管理域,向映射系统注册映射关系(B,AR6),如图5中(5)所示。
当锚点AR4知晓移动节点B的新锚点为AR6时,为移动节点B设置一个指针,指向锚点AR6,并为该指针设置一个计时器。
此时假定节点A的接入路由器AR1为移动节点B缓存的映射关系是(B,AR4)并且收到了节点A发给移动节点B的分组。则AR1会将分组首先发给AR4。AR4收到该分组后,由于为移动节点B维护了指向AR6的指针,将分组发送给AR6。AR6收到分组后,发现自己是移动节点B的当前锚点,于是,向AR1为移动节点B通告映射关系(B,AR6),并将分组转发给移动节点B的当前接入路由器AR5。AR5再将分组直接发送给移动节点B。当AR1收到从AR6发来的移动节点B的映射关系(B,AR6)后,将移动节点B的映射关系更新为(B,AR6),随后将去往移动节点B的分组直接发送给移动节点B的当前锚点AR6。
根据本发明,解决映射关系失效的方法涉及移动节点、对端节点、移动节点的接入路由器、对端节点的接入路由器,映射系统等实体。
本发明的最大特点在于充分利用接入路由器为映射条目设置的缓存时间T。与现有技术方案类似,当移动节点从一个接入路由器AR1移动到另一个接入路由器AR2时,接入路由器AR1为该移动节点设立一个指针,指向接入路由器AR2。与现有技术方案不同的是,当接入路由器AR2发现该移动节点通过自己接入网络的时候,向映射系统注册移动节点的映射关系。
另外,在本发明中,接入路由器AR1在为该移动节点设立指针的同时,为该指针设置一个定时器,并将该定时器的初始值设置为该移动节点的映射关系允许的缓存时间T+s秒,其中,s是一个非负数如10。
当该定时器到时之后,接入路由器即将该移动节点对应的指针删除,从而节省缓存空间。
为了适时更新对端接入路由器处缓存的映射条目,该移动节点的接入路由器采用如下过程转发去往该移动节点分组:
1)首先,查询该移动节点是否正通过该接入路由器接入网络。如果不是,进入第2)步;否则,进入第3)步;
2)查询本地是否为该移动节点的身份标识维护了一个指针。如果是,将该分组转发给该指针指向的下一个接入路由器;否则,丢弃该分组。
3)查询该接入路由器的本地映射表,看是否缓存了该移动节点的身份标识对应的映射关系。如果有,直接将分组发送给该移动节点;否则,向分组源对应的接入路由器通告该移动节点的身份标识对应的映射关系。
当分组源的接入路由器收到该通告后,更新该移动节点对应的映射关系。之后,便将分组直接发送给该移动节点的当前接入路由器,从而避免三角路由,以节省网络资源。
在上述过程中,为了让该移动节点的当前接入路由器知道其通信对端的映射关系,可以有多种办法。比如:如果网络是以封装的方式转发分组,可以将该分组中的目的位置标识改写为下一个接入路由器的位置标识,然后将分组发送给该下一个接入路由器。这样,当下一个接入路由器收到该分组的时候,它就能够根据分组中的源身份标识和源位置标识确定通信对端的映射关系。
另外,如果一个接入路由器为该移动节点存有一个指针但并不是该移动节点的当前接入路由器,则该接入路由器并不向分组源的接入路由器发送映射更新通告,从而避免了通告过期的映射关系。
在上述方法中,一个指针的定时器的初始值只要大于T即可完成本发明的目的,但是有可能增加转发链的长度。
根据本发明,当移动节点从一个接入路由器A移动到另外一个接入路由器B时,为该移动节点设置一个指针,使其指向接入路由器B。同时,接入路由器B向映射系统注册该移动节点的映射关系,使得该映射关系指向接入路由器B。
根据本发明,在设置指针的同时,为该指针设一个定时器;
根据本发明,将该定时器的初始值设置为T+s,其中,T为移动节点的映射关系的缓存时间,s为一个比较小的正整数,比如10。
根据本发明,移动节点的当前接入路由器在收到去往该移动节点的分组但是又没有缓存分组源的映射关系时,将分组源的映射关系存入本地缓存,并向分组源的接入路由器通告该移动节点的最新映射关系。
根据本发明,如果一个接入路由器为该移动节点存有一个指针但并不是该移动节点的当前接入路由器,则该接入路由器并不向分组源的接入路由器发送映射更新通告,从而避免通告过期的映射关系。