在互联网中对去向移动节点的流量实行直接路由的方法

文档序号:7594001阅读:232来源:国知局
专利名称:在互联网中对去向移动节点的流量实行直接路由的方法
技术领域
本发明涉及一种网络和通信领域,主要是一种在互联网中对去向移动节点的流量实行直接路由的方法。该方法能在IP网中对移动节点(和移动网络)的流量直接路由、并使移动节点(和移动网络)能在保持已有TCP连接的条件下移动,可以用来取代由RFC2002等现行标准定义的方法,目的在于减轻因移动而引起的流量并简化其过程、从而提高网络的效率。
背景介绍移动设备的无线上网,包括通过802.11手段上网和通过GPRS及CDMA(即所谓2.5G和3G)手段上网,有着极大的市场潜力和发展前景。由于因特网是基于IP技术的,移动上网的主流技术也将是基于IP(包括IPv4和IPv6)的,所以一般称之为“移动IP(Mobile IP)”。移动IP实际上包含着两种移动上网技术。一种是针对单个设备的移动(如笔记本电脑、手机、PDA等等)。另一种是针对整个子网的移动(例如在铁路列车上)。对于前者,IETF已经发布了RFC2002等若干标准。而后者,也已经有人向IETF提交了若干提案(Draft),目前还在讨论之中。不过,这些RFC和提案所描述的技术实际上大同小异,其基本思路都没有脱离由RFC2002所描述和定义的方法。这个基本思路的特征是1.一个移动节点(Mobile Node,缩写为MN)进入一个“外地”网中时,应向当地的“代理”(称为“外地代理”,即Foreign Agent,缩写为FA,一般是其网关中的一个模块)登记取得一个在当地的“看护地址”(Care-of Address),并通过它向“家乡”网中的“家乡代理”(Home Agent,缩写为HA)登记,以绑定其静态的“家乡地址”和动态的看护地址。这个看护地址一般是FA的地址,但也可以是专门分配给MN的地址,称为“共存看护地址(Co-located Care-of Address)”。在登记的过程中还可结合身份认证、授权、记帐(合在一起称为AAA)等与安全和管理有关的功能。
2.当移动节点MN要穿越因特网访问另一个节点CN(是Correspondent Node的缩写,通常是个网站),特别是需要进行“面向连接”的通信(例如对Web网页的访问以及Email的收发)时,其上行(从MN到CN)的IP包流量直接以CN为目标,由因特网加以直接路由。
3.但是,由CN下行的流量、即从CN到MN的IP包流量却以MN的家乡代理为目标,先发送到MN的家乡代理HA,再由HA采用“隧道”技术根据看护地址转发给MN当前所在网络的外地代理FA,最后到达MN;也可以采用“隧道”技术转发给MN(如果用的是共存看护地址)。总之,看护地址代表着隧道的终点。所谓“隧道”技术是指将一个IP包封装在另一个IP包中,也称IP-in-IP。这里,被封装的IP包以MN本身的地址为目标,而外层的IP包以看护地址为目标。总而言之,下行流量的路由是间接的,是经过家乡代理中转的。
注意这里所说的地址都是指IP公网地址,所以用FA的地址为移动节点的看护地址可以节省对公网地址资源的占用。
不难看出,上列的第1、2两项是合理的,而第三项却不合理。打个比方来说,这就好像一个杭州人跑到武汉,在武汉向北京订了一车货,而北京需要把货先发到杭州,再由杭州转运到武汉。如果这还不够戏剧性的话,那么不妨假定是跑到天津而不是武汉。显而易见,这是不合理的。考虑到用户在上网时一般都是下行流量远大于上行流量(如网页和文件的下载,视频点播就更不用说了),由此而引起网络资源的浪费显然不可忽视。如果能使下行流量也和上行流量一样可以直接路由而无需经过家乡代理中转(但是开始通信时可以经过家乡代理认证授权),那就既可以节约许多网络资源,又可以简化整个过程,而本发明的目的和效果正在于此。本发明之所以名为“直接路由”,就是这个意思。
可是,下行流量之所以须由家乡代理中转实在是出于无奈。这里有两个深层的原因。
首先,IP包头中只有两个地址位段,即“目标地址”和“源地址”。上行发送时以CN的地址为目标地址,以MN当前的看护地址、即“Care-of Address”为源地址,这是很自然的。按理说,逆向的下行发送只要互换目标地址和源地址就可以了。可是事情没有这么简单,因为MN可能已经移动到另一个网络中了,其看护地址可能已经变化。那么就以MN本身的地址为源地址呢?那也不行,因为沿途的路由器并不知道MN此刻在哪里,它们路由表中的信息多半会把下行流量引导到MN的“家乡”去。尽管这些路由表中的信息可以并且也确实会动态得倒修改,但是这种动态修改的频度很低,远远赶不上移动节点漫游的速度。
更为重要的是,多数应用层的网络规程都是“面向连接”的,即基于TCP(而不是UDP)的。这样的规程要求先在通信的两端建立起“TCP连接”,就好像在讲话之前先要拨通电话一样。一个TCP连接有两个端点,每个端点由一个IP地址和一个“端口号”确定。这样,4个元素,即两个IP地址和两个端口号,就唯一地确定了一个TCP连接。而载运着数据的TCP报文,则就封装在IP包中。这样的IP包既有个IP头,里面有双方的IP地址;又有个TCP头,里面有双方的端口号。一台主机或一个网站可能同时存在几十个、几百个、甚至更多的TCP连接,每当接受到一个属于TCP的IP包时,就得靠这些信息找到其所属的TCP连接(表现为一个数据结构、或“对象”)。可是,如果MN在整个通信过程(例如下载一个文件)的中途改变了看护地址,从而改变了IP包中的源地址,对方就无法确定其属于哪一个TCP连接了。显然,这里的问题在于建立TCP连接时使用的源地址不应随时间而变。而MN的“家乡地址”恰恰就是不变的。出于这样的考虑,RFC2002规定上行IP包中的源地址用的是MN的家乡地址。这样,CN互换目标地址和源地址以后,下行流量就发送到MN的家乡代理哪儿去了。
本发明的实质就在于在保持与现有技术兼容的前提下,在上行流量中提供两个源地址;一个是MN的家乡地址,用于建立和标识TCP连接;另一个是MN当前的暂用地址,作为“回信地址”用于下行流量的路由,从而达到直接路由下行流量的目的。
可是,IP包头中只有一个源地址位段,怎样提供第二个源地址呢?这可以通过增加可选项的办法解决。这是因为,无论IP包头中还是TCP报头中都允许定义和使用可选项,只要在有关规程中定义了具体的可选项及其处理方法,实现了这些方法并使用这些新增可选项的装置和设备就可以具备新的功能;而不认识这些新增可选项的装置和设备,则会忽略其存在而仍按原来的方式运行。
进一步,如果结合本人的另一项发明“在互联网中按路径寻址和路由的方法”,将本发明中的两个源地址改成两个源端路径描述,则还可以用来解决对移动网络(而不仅仅是移动设备)的流量直接路由。

发明内容
针对现有技术的缺陷,本发明提供了一种在互联网中对去向移动节点的流量实行直接路由的方法,具体说是在移动IP网中对下行流量直接路由的方法,使以移动节点为目标的流量无需经过其家乡代理转发。该方法对现有IP和TCP规程改变很小,并与之完全兼容。
本发明采用的技术方案是为TCP头部定义一种新的可选项“家乡地址”,并在移动节点请求建立TCP连接的SYN报文中同时提供两个源地址;一个是用于IP包头中源地址位段的“回信地址”,供对方及沿途的路由器用于回程(下行)流量的路由;另一个是作为可选项的固定不变的“家乡地址”,供对方用来建立和标识TCP连接。建立了TCP连接以后,移动节点发送给对方的上行流量中的每个报文中都带有“家乡地址”可选项,而对方则以“家乡地址”(而不是“回信地址”)作为确定报文所属TCP连接的依据(之一)。相比之下,在传统的TCP/IP(包括RFC2002所定义的“移动IP”)中,“回信地址”与用来建立TCP连接的地址总是相同的,而在本发明中则把他们区分开了。同样的道理,由于TCP连接的端点是IP地址和端口号的组合,还为TCP头部定义了另一种新的可选项“家乡端口号”。还要说明,只要MN采用内网地址,由于网关的NAT功能,IP报在进入公网时的源地址总是网关公网地址,相当于前述的看护地址。此后,每当移动节点移动进入一个新的网络、并取得在该网络中的临时地址以后,只要为已经建立的每个TCP连接向对方发送一个(带有“家乡地址”可选项的)报文,让对方及时获知回信地址的变化即可。概括地说,就是“以家乡地址标识TCP连接,以回信地址决定路由”。如果说原来IP包头及TCP报头中一共只提供两个地址(源和目标),因而是“双地址模式”,那么本发明采用的是“三地址模式”。其结果,则是解决了现有移动IP规程因间接路由、即由家乡代理通过隧道转发下行流量而引起的资源浪费问题。
值得注意的是,即使对方不支持本发明采用的技术方案,也只是忽略可选项“家乡地址”的存在;此时因IP包头中的源地址位段仍为正确的回信地址,因而对方仍会直接将下行流量发送到移动节点所在的子网,只是不能实现在保留TCP连接条件下的移动。
另一方面,在本发明的方法中,移动节点总是使用通过DHCP临时取得的内网地址,因而不需要为其分配公网地址。在移动节点的数量很大(例如手机)时,这一点的意义很大。
所以,本发明最显著的优点是在对现有移动IP规程改动很小的条件下解决了直接路由的问题,对下行流量的路由实行了优化,它有下列优点● 与现有移动IP规程完全兼容,可以实现最平滑的过渡,也可与现有移动IP规程并存。
● 如果通信的双方都支持新的可选项,则可简化通信的流程,无论其软件实现还是硬件实现都比现有移动IP规程容易(例如不再需要通过隧道,向家乡代理的登记也可简化)。
● 移动节点总是使用通过DHCP临时取得的内网地址,不需要为其分配公网地址。


图1是本发明所采用技术方案的示意图。
具体实施例方式
下面结合附图和实施例对本发明的实施作进一步说明。
实施例1假定有个内网挂接在公网上,其网关地址为202.10.32.1,网关中带有HA模块,因而具有HA的功能。移动设备MN本是该内网中的一个节点,其内网地址为192.168.32.8。现在,MN因旅行来到了无线网中基站a1的覆盖范围中。基站a1就像内网(intranet)中的二层交换机,它的上面有个网关A。网关A,连同若干相当于交换机的基站,以及这些基站覆盖下的诸多移动节点,就构成了一个无线网,结构上等同于一个通过网关A挂接在公网上的内网。假定网关A的公网地址为101.3.22.8。其余的网关B、C、D等等也是一样。这里所谓“基站”并不非得是GPRS或CDMA的基站,也可以是802.11的无线AP(“访问点”),物理层的实现不在本发明的考虑范围内。参见图1所示,其中○表示路由器、网关、或固定节点。
●表示基站或无线AP,虚线表示其覆盖范围。
■表示具有无线上网功能的移动节点。
现在MN开启了电源。
首先MN需要向A申请一个当地的内网地址,具体可以通过DHCP解决,这也不在本发明的考虑范围内。假定由DHCP分配的地址为10.3.4.15。
接着,MN应向其“家乡代理(Home Agent)”HA、即网关202.10.32.1登记报告行踪。MN发送的信息中含有其当前在当地的内网地址,以及能表示其身份的信息、例如在“家乡”时的内网地址或MAC地址,还应提供一些用于认证的信息。由于网关A的NAT处理,HA实际上还能知道MN当前所在的子网,因为当相应的IP包离开网关A时其源地址就变成了该网关的公网地址101.3.22.8。只要MN出门在外,就应该每过一段时间或每当改变地址时就向家乡代理报告行踪。不过,这样做是出于管理目的,是为了实施认证、授权、及计费,而与下行流量的路由无关。
然后MN开始要访问地址为123.4.5.36的网站CN,为此MN需要与CN建立起一个TCP连接。每当MN需要穿越公网与某个目标建立TCP连接时,首先需要向HA提出申请,要求HA(实际上是其NAT模块)为其分配一个“家乡”源端口号。
有了由HA分配的源端口号以后,MN就可以发起与CN的TCP连接了。根据TCP规程,MN首先应向CN发送一个SYN报文。按原有的规程,MN应将123.4.5.36作为目标地址,以10.3.4.15为源地址。在报文经过网关A时,其NAT模块将把源地址10.3.4.15更换成网关本身的地址101.3.22.8,并将由MN生成的源端口号更换成由NAT模块分配的端口号,这就是普通的NAT转换。但是,如果仅仅是这样,则所建立的TCP连接是固定以101.3.22.8、即无线网A为一端的,当MN移动到B时这个TCP连接就会断开。现在,按照本发明的方法,MN把HA的地址202.10.32.1和由HA分配的源端口号作为“家乡地址”和“家乡端口号”可选项附加在SYN报文的TCP报头中,而网关A并不会触及这些可选项。这样,只要CN也按本发明的方法处理,所建立的TCP连接在逻辑上就是以MN的家乡网为一端了。不管MN移动到哪一个网中,其家乡网总是固定的,所以建立起来的TCP连接不会因移动而断开。不过,这一对{地址,端口号}只是用来建立和标识TCP连接的,由CN发回MN的流量仍按常规(用上行的源地址和源端口号作为下行的目标地址和目标端口号)发回无线网A的网关,再由网关逆向NAT并转发给MN。也就是说,下行的流量是直接路由到MN、而不是经由其家乡代理HA中转的。
这里之所以需要由家乡代理HA分配一个端口号是为了防止发生冲突。要是光从建立和标识TCP连接的角度看,由MN自己指定一个源端口号SP也未尝不可。但是那样一来TCP连接的一端就是{MN的家乡地址,SP};如果此后恰好从MN的家乡网络也来了一个建立TCP连接的请求,并且源端口号又恰好是SP,那就有冲突了。而由HA分配源端口号就排除了这样的可能。实际上这是在模拟HA的NAT操作,因为如果此时MN还在家乡网中,并且也是要求建立与CN的TCP连接,那么MN将使用其内网地址为源地址,并产生一个端口号,经网关HA的NAT操作就变换成了HA的公网地址和由HA分配的端口号。所以,也可以把MN所建立的TCP连接看作是由其在家乡网中的逻辑镜像所建立的虚拟TCP连接,但是被映射、或者说重定向到了位于外地网中的物理的MN身上。
如果CN不支持本发明的方法,那也不要紧,它会忽略不认识的可选项,仍能建立起以无线网A为一端的TCP连接,后果只是MN不能在保持此TCP连接的条件下移动到另一个网中。
建立了TCP连接后,上行和下行TCP报文中都带有“家乡地址”和“家乡端口号”可选项,双方都以这两个可选项的值(连同CN一端的地址和端口号)为依据找到相应的TCP连接,但是却总是以上行流量的源地址和源端口号作为下行流量的目标地址和目标端口号。
当MN移动进入无线网B时,MN同样先请求分配一个内网地址,并向HA登记更换其临时地址。接着,由于已经有一个TCP连接存在,MN需要在此TCP连接上向对方发送一个ACK报文,或者数据报文(如果正好有数据要发送的话)。同样,无线网B的网关也会实施NAT变换,改变TCP头中的源端口号位段和IP头中的源地址位段。对方(在这里仍是CN)在收到载运着这个TCP报文的IP包时,就根据其源地址和源端口号位段改变该TCP连接的下行目标地址和目标端口号。
载运着TCP报文的UDP包可能会在路上丢失,所以在发出第一个ACK报文或数据报文以后MN应开启一个定时器,以便每隔一会儿(例如10毫秒或20毫秒)就重发一个ACK报文,直到收到由对方发来的第一个报文为止。收到了第一个下行报文,就说明地址的改变已经为对方所认知。
有多个TCP连接存在时的操作可依此类推。
由于每当移动进入新的网络时都要向HA登记更换其临时地址,HA就总是能根据MN在家乡网中的地址发现MN当前所在的子网和内网地址。这样,如果有必要,就可以通过隧道向MN发送信息(例如实时发送通知,VoIP呼叫等等)。
由此可见,采用了本发明的方法以后,移动设备不需要公网地址就能在无线网中漫游,而且对下行流量直接路由、而不需要经由移动设备的家乡代理转发。
在上面的叙述中我们假定家乡代理HA和网关是合为一体的,但是即使二者独立存在也不改变本发明的实质。
另一方面,在上面的叙述中MN使用的是内网地址,但是MN也可以使用其原有的公网地址,具体只要用其公网地址作为家乡地址,并自行生成家乡端口号,再让网关对虽然源地址是公网地址但又带有家乡地址可选项的IP包也实施NAT(传统上对源地址是公网地址的包是不作NAT变换的),将包的源地址改成其自身的地址,就行了。当然,对逆向的包也要作逆向的NAT。所以这只是本发明的方法的一个特例。
为帮助理解,表1给出IP包及其载运的TCP报文的示意图 表1 IP包及其载运的TCP报文如果TCP报头长度大于5,即20字节,就说明报头中还有着一个或几个可选项,其格式可因具体的可选项而异。
作为一种实施方案,家乡地址可选项的格式如下

可选项一共占8个字节。第一个字节为可选项代码,这里选择了128。第二个字节为可选项长度,其数值为8,表示8个字节。接着两个字节保留不用,使32位的家乡地址与长字边界对齐。
家乡端口号的格式则为(其意义自明)

现将本发明的实施具体说明如下1.在TCP规程的报头可选项中增加两个新的可选项“家乡地址”和“家乡端口号”,格式参照原有的其他可选项。可选项的具体格式属于实施细节,并不影响本发明(作为方法)的实质。
● 也可以把“家乡地址”可选项加在IP包头中,但是考虑到IP包头中最多只有40字节可以用于可选项,而本人的另一项发明已经在IP包头中增加了两个可选项,因此以加在TCP报头中为宜。另一方面,“家乡地址”可选项的作用只与TCP连接有关,从逻辑上讲也应该加在TCP报头中。不果把可选项加在什么地方只是实施细节而并不影响本发明(作为方法)的实质。
2.每一个移动设备均须记住(存储)其家乡代理HA的公网地址。此外还需要记住一些能向HA表明其身份的信息,例如它在家乡(固定)网中的内网地址,或MAC地址等等。前者(HA的公网地址)为本发明所述方法之必须,后者只是出于管理的需要。此外,出于身份认证的需要,可能还须记住更多有关的信息(如口令等等),但是具体细节与本发明的实质无关。
3.当一个移动设备MN新进入一个无线网A时,首先应通过DHCP要求分配一个在当地的内网地址。具体的操作是常规操作,并不属于本发明的范围。
4.MN向其家乡代理(网关)HA登记,登记报文中至少应提供MN在当地分配到的内网地址,还可以附带提供MN在家乡网中的内网地址、MAC地址、以及身份认证所需的信息。登记报文的具体格式及附带信息的多少属于实施细节,并不影响本发明(作为方法)的实质。
5.家乡代理HA在接收到MN的登记请求时,从IP包头的源地址位段可以知道MN当前所在网关的公网地址。HA可以进行一些与身份认证、授权、计费有关的操作,然后加以确认。
6.每当MN需要穿越因特网与某节点CN建立TCP连接时,须先向家乡代理HA发送一个端口号请求(报文)。HA在收到报文后应调用其NAT模块为MN分配一个端口号HP,并通过应答报文将端口号HP发送给MN。分配端口号以后,CN便将MN的家乡地址、回信地址、以及所分配的端口号相绑定。端口号请求报文及其应答报文的具体格式属于实施细节,并不影响本发明(作为方法)的实质。
7.在MN发往CN的SYN报文、即(建立TCP)连接请求报文中,以及相应的IP包中,以CN的公网地址为目标地址,以MN在当地的内网地址为源地址,并以由MN产生的端口号LP为源端口号。同时,MN在TCP报头中加入“家乡地址”和“家乡端口号”两个可选项,其中“家乡地址”为HA的公网地址、“家乡端口号”为由HA分配得到的端口号HP。这里LP和HP分别为“当地端口号”和“家乡端口号”的缩写。
8.当地网关A对报文实施常规的NAT操作,把IP包中的源地址换成它的公网地址、即“回信地址”,把源端口号LP换成由它分配的端口号、即“回信端口号”。这些操作是NAT的基本功能,并不属于本发明的范围。
9.CN在接收到SYN报文后记下IP包头中的源地址和TCP报头中的源端口号,作为逆向流量的目标地址和目标端口号,这就是“回信地址”和“回信端口号”。
10.但是,只要TCP报头中有“家乡地址”和“家乡端口号”可选项存在,CN就用这两个可选项的值作为建立TCP连接的参数。进一步,CN在接收到别的TCP报文时,只要TCP报头中有“家乡地址”和“家乡端口号”可选项存在,也一律以这两个可选项的值,连同目标地址(CN的公网地址)和目标端口号(由CN在建立TCP连接时产生),作为TCP连接的标识,即唯一确定报文所属TCP连接的依据。
● 也可以再定义一个“TCP连接号”可选项,而让CN为新建的TCP连接分配一个“TCP连接号”作为唯一标识。“TCP连接号”可选项的本质只是把“家乡地址”和“家乡端口号”两个可选项合并、压缩成一个,这并不改变本发明将TCP连接与回信地址相分离的实质。
11.如有必要,CN可以在建立TCP连接前通过RADIUS一类的规程向HA核实MN的“家乡地址”、“回信地址”、以及“家乡端口号”的有效性,或获得授权(例如关于付费的承诺)。若得不到HA的确认可以拒绝建立、或予以关闭。
12.由于CN在发往MN的TCP报文中以网关A的公网地址为目标地址,以网关A分配的端口号为目标端口号,并带有(由MN提供的)“家乡地址”和“家乡端口号”可选项。载运着这些TCP报文的IP包将被直接路由到网关A,并在哪里被逆向NAT和转发到MN。这是常规的IP路由和NAT转换,并不属于本发明的范围。
13.建立了TCP连接以后,凡由MN发往CN的TCP报头中均带有“家乡地址”和“家乡端口号”可选项。
14.每当MN移动进入新的网络B时,首先要求分配一个在当地的内网地址。然后向家乡网关HA登记临时地址的变动。HA经过认证以后将TCP连接的“家乡地址”和“家乡端口号”与MN新的地址和端口号相绑定。
15.MN移动进入新的网络B、并取得新的内网地址后,须向CN发送一个ACK报文,或ACK标志为1的数据报文(如果恰好有上行数据的话),报文的TCP报头中同样带有“家乡地址”和“家乡端口号”可选项。
16.同时,MN须设置一个定时器(例如10毫秒或20毫秒),只要尚未收到来自CN(经由网络B)的TCP报文,就需要周期地重发ACK报文或ACK标志为1的数据报文,直到收到来自CN(经由网络B)的第一个TCP报文。
17.CN在接收到来自MN的报文并检测到临时地址的变化时,应向其家乡代理HA核实,看由“家乡地址”和“家乡端口号”所唯一确定的TCP连接是否已跟新的回信地址和端口号绑定。若得到HA的认可即应更改用于逆向流量的目标地址和目标端口号(见第9项)。之所以要核实是为防止TCP连接被“劫持”。
18.MN应定时向HA报告由HA分配的哪一些端口号还在使用中。HA应回收已不再使用的端口号。
19.作为本方法的一个特例,如果MN原来使用公网地址,也可以继续使用公网地址。具体只要用其公网地址作为家乡地址,并自行生成家乡端口号,再让网关对虽然源地址是公网地址、但又带有家乡地址可选项的IP包也实施NAT,并对逆向的包也作逆向NAT。之所以要让网关对其实施地址转换,是因为网关的地址是静态的,便于对下行流量直接路由;而MN的公网地址,则由于MN在移动而难以实现对下行流量直接路由。
上面的第1项说明了本发明对TCP规程的扩充。第6、7、9、10、13、15、16、17、18诸项为本发明的实质所在。说明了采用本发明所述方法以后移动设备如何发起对目标网站的访问、目标网站如何应对、以及二者如何进行面向连接的通信。其余各项或为帮助读者理解而加的说明(如第8项和第12项),或为一些应有的附加(如第3、4、5项)和可能的补充(如第12项),旨在使采用了本发明所述方法以后在整体上更为完整。第14项则实际上就是第3、4项,第19项则描述了本方法的一个特例,即移动节点使用公网地址时的方法。
需要特别指出的是作为一种具体的实现,这里的一些细节并不是唯一的,而可以有所变化,但是细节的不同并不影响本发明的实质。
下面进一步给出有关算法的伪代码描述。
MN进入无线网输入本节点家乡代理HA的公网地址,本节点在家乡网中的身份信息。
启动条件开启电源时若物理层检测到处于某个无线网络(基站或AP的覆盖范围)中时。或者当物理层检测到已移动进入了一个新的网络(基站或AP的覆盖范围)而需要切换时。
算法发出DHCP请求,要求分配在当地的内网地址;等待DHCP响应;LA=由DHCP服务器分配的内网地址;根据DHCP返回的信息判断并纪录是否处于家乡网络;if(不在家乡网络中){向HA发送登记报文,参数包括LA以及本节点在家乡网中的身份信息;等待HA响应,若超过预定的等待时间就重发登记报文;}/*结束*/MN要求与CN建立TCP连接输入本节点家乡代理HA的公网地址,本节点在当地网中的内网地址LA。
“家乡端口号”请求序号,初值为0。
启动条件
需要经过公网访问某个网站CN,因而需要建立与CN的TCP连接时。
算法if(本节点处于家乡网){常规TCP/IP操作;}else/*移动到了外地*/{递增“家乡端口号”请求序号;向HA发出家乡端口号请求报文,参数包括LA和请求序号;等待HA响应,若超过预定的等待时间就重发请求报文;HP=由HP分配的家乡端口号;准备SYN报文;IP包头中的目标地址位段=CN的公网地址;IP包头中的源地址位段=本节点在当地网中的内网地址LA;TCP报头中的目标端口号=具体应用的端口号(例如HTTP为);TCP报头中的源端口号=本地生成的端口号;TCP报头中的“家乡地址”可选项=家乡代理HA的公网地址;TCP报头中的“家乡端口号”可选项=HP;向CN发送SYN包文;常规的后续TCP/IP操作;}/*结束*/MN收到TCP报文输入已经建立的TCP连接。
启动条件接收到载有TCP报文的IP包时。
算法目标地址DA=IP包头中的源地址;以{家乡地址,家乡端口号;对方地址;对方端口号}为参数寻找已建立TCP连接的纪录;if(找到)/*连接已建立*/{常规的TCP操作;if(需要回应)调用“CN发送TCP报文”向对方发送数据或控制报文。
}else/*连接尚未建立*/{if(是SYN报文)/*请求建立TCP连接*/{MN在内网中,故不接受外来TCP连接请求;}else if(已请求建立TCP连接,但尚未完成建立连接){if(是ACK报文 并且DA==对方地址){/*TCP连接建立成功*/纪录该TCP连接,包括家乡地址和家乡端口号可选项;TCP连接的目标端口号=对方返回的源端口号;常规的后续TCP操作;}}/*结束*/MN向CN发送TCP报文输入本节点家乡代理HA的公网地址,本节点在当地网中的内网地址LA。
已经建立的TCP连接,包括连接的两个端口号HP(由家乡代理分配)和DP(建立TCP连接时由CN分配)启动条件需要通过已经建立的TCP连接向CN发送数据报文或控制报文时。
算法if(本节点处于家乡网){常规TCP/IP操作;}else/*移动到了外地*/{设置IP包头及TCP报文头;IP包头中的目标地址位段=CN的公网地址;IP包头中的源地址位段=本节点在当地网中的内网地址LA;TCP报头中的目标端口号=建立TCP连接时由CN分配的端口号DP;TCP报头中的源端口号=建立TCP连接时由本地生成的端口号;TCP报头中的“家乡地址”可选项=家乡代理HA的公网地址;TCP报头中的“家乡端口号”可选项=建立TCP连接时使用的HP;If(有数据要发送)将数据拷贝到报文中;发送报文常规的后续TCP/IP操作;}/*结束*/MN报告家乡端口号的使用情况输入本节点家乡代理HA的公网地址,本节点在家乡网中的身份信息。
已由HA分配并尚在使用中的家乡端口号清单。
启动条件
关闭某个TCP连接时。或者每过一定的时间(例如5分钟)。
算法发出DHCP请求,要求分配在当地的内网地址;等待DHCP响应;LA=由DHCP服务器分配的内网地址;根据DHCP返回的信息判断并纪录是否处于家乡网络;CN收到TCP报文输入已经建立的TCP连接。
启动条件接收到载有TCP报文的IP包时。
算法if(TCP报头中带有家乡地址和家乡端口号可选项)/*对方是移动节点*/{if(是SYN报文)/*请求建立TCP连接*/{向MN的家乡代理HA核实(MN的家乡地址、端口号、和回信地址是否已登记);if(核实无误){为TCP连接生成一个端口号DP以{MN的家乡地址,MN的家乡端口号;CN的地址,DP}为参数建立TCP连接;记录该TCP连接的各项参数,包括MN的回信地址和源端口号;调用“CN发送TCP报文”向对方发送ACK报文;}else{不予理睬;
}}else/*TCP连接已经建立*/{以{MN的家乡地址,MN的家乡端口号;CN的地址,DP}为参数找到已建立TCP连接的各项参数;if(MN的回信地址和源端口号有变化){向MN的家乡代理HA核实(MN的家乡地址和回信地址是否已登记);if(核实无误){记录该TCP连接的各项新参数,包括MN新的回信地址和源端口号;}else{不予理睬并报错;}}常规的TCP操作;if(需要回应)调用“CN发送TCP报文”向对方发送数据或控制报文。
}}else/*对方是固定节点*/{常规的TCP操作;}/*结束*/
CN发送TCP报文输入已经建立的TCP连接。
启动条件需要通过已经建立的TCP连接向对方发送数据报文或控制报文时。
算法if(TCP连接中的家乡地址和家乡端口号空白) /*对方是固定节点*/{常规TCP/IP操作;}else/*对方是移动节点*/{设置IP包头及TCP报文头;IP包头中的目标地址位段=来自MN的IP包头中的源地址;IP包头中的源地址位段=本节点(CN)的地址;TCP报头中的目标端口号=来自MN的TCP报头中的源端口号;TCP报头中的源端口号=建立TCP连接时由CN生成的端口号;TCP报头中的“家乡地址”可选项=来自MN的家乡代理可选项;TCP报头中的“家乡端口号”可选项=来自MN的家乡端口号可选项;If(有数据要发送)将数据拷贝到报文中;发送报文常规的后续TCP/IP操作;}/*结束*/这些算法可以通过软件实现,也可以通过集成电路芯片(或芯片组)以硬件形式实现。具体的实现形式与手段并不改变本发明在IP网络中按路径寻址的实质。此外,实际实现时还可对这些算法加以优化,这同样也不改变本发明的实质。
实施例2采用家乡地址和家乡端口号的本质在于使建立的TCP连接有个静态的标识,不致因为节点的移动而失去确定已有TCP连接的能力,其根源在于TCP规程用{源地址,源端口号;目标地址,目标端口号}唯一地确定一个TCP连接。因此,作为上述方法的一个简化版,也可以不要家乡地址和家乡端口号,而改成让CN为建立的TCP连接产生一个“TCP连接标识号”,并将标识号作为TCP报头可选项随同上、下行TCP报文发送即可。也就是说,MN与CN之间的通信仍采用“双地址模式”,但是用“TCP连接标识号”来唯一确定TCP连接,并将“TCP连接标识号”定义为TCP报头可选项。这样也能达到对去向移动节点的下行流量直接路由的目的,但是也有缺点,特别是CN缺少了找MN的家乡代理验证的可能。为了解决这个问题,移动节点MN在请求建立TCP连接时仍应提供其家乡地址,使CN可以向移动节点的家乡代理验证。
前面的表1给出IP包及其载运的TCP报文的示意图如果用TCP连接标识号可选项的话,其格式同家乡端口号可选项,只是代码改成130,而最后两个字节为16位的连接标识号。

作为本方法的一个简化版本,只在TCP规程的报头可选项中增加一个新的可选项“TCP连接标识号”。凡是移动节点发出的TCP报文和发往移动节点的TCP报文均在TCP报头中带上“TCP连接标识号”可选项,在TCP连接尚未建立前其值为0,建立TCP连接时由CN生成一个(对于CN)唯一的标识号,TCP连接建立以后则以此作为“TCP连接标识号”可选项的值。在通信中,CN以此可选项的值作为唯一确定TCP连接的依据,MN则以对方地址和可选项的值共同作为唯一确定TCP连接的依据。用这个方法也能达到对去向移动节点的下行流量直接路由的目的。
下面是简化版有关算法的伪代码描述。
MN进入无线网(简)输入本节点家乡代理HA的公网地址,本节点在家乡网中的身份信息。
启动条件开启电源时若物理层检测到处于某个无线网络(基站或AP的覆盖范围)中时。或者当物理层检测到已移动进入了一个新的网络(基站或AP的覆盖范围)而需要切换时。
算法发出DHCP请求,要求分配在当地的内网地址;等待DHCP响应;LA=由DHCP服务器分配的内网地址;
/*结束*/MN要求与CN建立TCP连接(简)输入本节点在当地网中的内网地址LA。
启动条件需要经过公网访问某个网站CN,因而需要建立与CN的TCP连接时。
算法if(本节点处于家乡网){常规TCP/IP操作;}else/*移动到了外地*/{准备SYN报文;IP包头中的目标地址位段=CN的公网地址;IP包头中的源地址位段=本节点在当地网中的内网地址LA;TCP报头中的目标端口号=具体应用的端口号(例如HTTP为);TCP报头中的源端口号=本地生成的端口号;TCP报头中的“TCP连接标识号”可选项=0;向CN发送SYN包文;常规的后续TCP/IP操作;}/*结束*/MN收到TCP报文(简)输入已建立TCP连接的纪录。
启动条件接收到载有TCP报文的IP包时。
算法对方地址=IP包头中的源地址;以{对方地址,TCP连接标识号}为参数寻找已建立TCP连接的纪录;if(找到)/*连接已建立*/{常规的TCP操作;if(需要回应)调用“CN发送TCP报文”向对方发送数据或控制报文。
}else/*连接尚未建立*/{if(是SYN报文)/*请求建立TCP连接*/{MN在内网中,故不接受外来TCP连接请求;}else if(已请求建立TCP连接,但尚未完成建立连接){if(是ACK报文 并且DA==对方地址){/*TCP连接建立成功*/纪录该TCP连接,包括TCP连接标识号可选项;TCP连接的目标端口号=对方返回的源端口号;常规的后续TCP操作;}}/*结束*/MN向CN发送TCP报文(简)输入本节点在当地网中的内网地址LA。
已经建立的TCP连接,包括“TCP连接标识号”。
启动条件需要通过已经建立的TCP连接向CN发送数据报文或控制报文时。
算法if(本节点处于家乡网){常规TCP/IP操作;}else/*移动到了外地*/{设置IP包头及TCP报文头;IP包头中的目标地址位段=CN的公网地址;IP包头中的源地址位段=本节点在当地网中的内网地址LA;TCP报头中的目标端口号=建立TCP连接时由CN分配的端口号DP;TCP报头中的源端口号=建立TCP连接时由本地生成的端口号;TCP报头中的“TCP连接标识号”可选项=由CN分配的TCP连接标识号;If(有数据要发送)将数据拷贝到报文中;发送报文常规的后续TCP/IP操作;}/*结束*/CN收到TCP报文(简)输入本节点在当地网中的内网地址LA。
已经建立的TCP连接,包括“TCP连接标识号”。
启动条件接收到载有TCP报文的IP包时。
算法
if(TCP报头中带有TCP连接标识号可选项)/*对方是移动节点*/{if(是SYN报文)/*请求建立TCP连接*/{为TCP连接生成一个端口号DP;为TCP连接生成一个连接标识号;以{报文的源地址,报文的源端口号;CN的地址,DP,连接标识号}为参数建立TCP连接;记录该TCP连接的各项参数;调用“CN发送TCP报文(简)”向对方发送ACK报文;}else/*TCP连接已经建立*/{以连接标识号为参数找到已建立TCP连接的各项参数;常规的TCP操作;if(需要回应)调用“CN发送TCP报文(简)”向对方发送数据或控制报文。
}}else /*对方是固定节点*/{常规的TCP操作;}/*结束*/CN发送TCP报文(简)输入已经建立的TCP连接,包括“TCP连接标识号”。
启动条件需要通过已经建立的TCP连接向对方发送数据报文或控制报文时。
算法if(TCP连接标识号空白)/*对方是固定节点*/{常规TCP/IP操作;}else /*对方是移动节点*/{设置IP包头及TCP报文头;IP包头中的目标地址位段=来自MN的IP包头中的源地址;IP包头中的源地址位段=本节点(CN)的地址;TCP报头中的目标端口号=来自MN的TCP报头中的源端口号;TCP报头中的源端口号=建立TCP连接时由CN生成的端口号;TCP报头中的“TCP连接标识号”可选项=TCP连接的标识号;If(有数据要发送)将数据拷贝到报文中;发送报文常规的后续TCP/IP操作;}/*结束*/同样,这些算法可以通过软件实现,也可以通过集成电路芯片(或芯片组)以硬件形式实现。具体的实现形式与手段并不改变本发明在IP网络中按路径寻址的实质。
权利要求
1.一种在互联网中对去向移动节点的流量实行直接路由的方法,其特征是1)在TCP规程的报头可选项中增加两个新的可选项“家乡地址”和“家乡端口号”;2)移动节点MN要求与目标网站CN建立TCP连接时应在SYN报文中提供“家乡地址”和“家乡端口号”可选项;3)目标网站以“家乡地址”和“家乡端口号”作为TCP连接的一端,用于TCP连接的建立和标识;但是仍按移动节点提供的源地址和源端口号向移动节点发送载有TCP报文的IP包;4)TCP连接建立以后,移动节点在发向目标网站、属于该连接的数据报文和控制报文中均提供“家乡地址”和“家乡端口号”可选项。
2.根据权利要求1所述的在互联网中对去向移动节点的流量实行直接路由的方法,其特征是1)当移动设备进入一个无线网时,首先通过DHCP获取当地的内网地址;2)然后向其家乡代理登记。
3.根据权利要求1所述的在互联网中对去向移动节点的流量实行直接路由的方法,其特征是1)移动节点用其家乡代理的公网地址为家乡地址;2)移动节点要求与目标网站建立TCP连接时先向家乡代理分配家乡端口号。
4.根据权利要求3所述的在互联网中对去向移动节点的流量实行直接路由的方法,其特征是目标网站CN在接收到来自移动节点的TCP连接请求后根据移动节点提供的家乡地址和家乡端口号向其家乡代理核实,并根据核实的结果决定是否建立或关闭TCP连接。
5.根据权利要求3所述的在互联网中对去向移动节点的流量实行直接路由的方法,其特征是目标网站CN在检测到TCP连接的回信地址发生变化时根据移动节点的家乡地址向其家乡代理询问移动节点的地址更改是否经过登记,并根据询问的结果决定是否改变TCP连接的回信地址。
6.根据权利要求3所述的在互联网中对去向移动节点的流量实行直接路由的方法,其特征是目标网站在接收到来自移动节点的TCP连接请求后根据移动节点提供的家乡地址向其家乡代理询问移动节点对该目标网站的访问是否经过授权,并根据询问的结果决定是否建立或关闭TCP连接。
7.根据权利要求1所述在互联网中对去向移动节点的流量实行直接路由的方法,其特征是1)移动节点使用固定的公网地址;2)用移动节点的公网地址作为家乡地址,并由移动节点自行生成家乡端口号;3)当地网关对源地址是公网地址、但又带有家乡地址可选项的IP包也实施NAT,并对逆向的包也作逆向NAT。
8.一种互联网中对去向移动节点的流量实行直接路由的方法,其特征是1)仅在TCP规程的报头可选项中增加一个新的可选项“TCP连接标识号”;2)凡是移动节点发出的TCP报文和发往移动节点的TCP报文均在TCP报头中带上“TCP连接标识号”可选项,在TCP连接尚未建立前其值为0;3)立TCP连接时由目标节点生成一个对于目标节点唯一的标识号,通过“TCP连接标识号”可选项返回给移动节点;4)TCP连接建立以后,目标节点以“TCP连接标识号”可选项的值唯一确定一个TCP连接,移动节点以目标节点的地址和“TCP连接标识号”可选项的值唯一确定一个TCP连接。
全文摘要
本发明涉及一种在互联网中对去向移动节点的流量实行直接路由的方法,其特征是在TCP规程的报头可选项中增加两个新的可选项“家乡地址”和“家乡端口号”;移动节点MN要求与目标网站CN建立TCP连接时应在SYN报文中提供“家乡地址”和“家乡端口号”可选项;目标网站以“家乡地址”和“家乡端口号”作为TCP连接的一端,用于TCP连接的建立和标识;TCP连接建立以后,移动节点在发向目标网站、属于该连接的数据报文和控制报文中均提供“家乡地址”和“家乡端口号”可选项。本发明有下列优点与现有移动IP规程完全兼容,可以实现最平滑的过渡,也可与现有移动IP规程并存。移动节点总是使用通过DHCP临时取得的内网地址,不需要为其分配公网地址。
文档编号H04L29/06GK1588910SQ20041005358
公开日2005年3月2日 申请日期2004年8月10日 优先权日2004年8月10日
发明者毛德操 申请人:毛德操
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1