在互联网中按路径寻址和路由的方法

文档序号:7593935阅读:230来源:国知局
专利名称:在互联网中按路径寻址和路由的方法
技术领域
本发明涉及一种网络和通信领域,主要是一种在互联网中按路径寻址和路由的方法,这种在互联网中采用按路径(而不仅仅是地址)寻址和路由的方法,目的在于妥善解决IP地址容量不足的问题。
背景介绍现在的互联网是建立在IP规程(即“协议”)第四版、即IPv4基础上的,这个规程已经经历了数十年的考验,各种技术已相当成熟,并表现出极强的生命力。但是人们早就认识到IPv4有个缺点,那就是它的地址(即IP地址)是32位的,因而地址的容量不够大,或者说地址空间太小。
凡是要入网、并要求在网内可以被寻址的机器和设备,都需要向互联网的管理部门、或者手中握有IP地址的运行商申请分配IP地址。分配得到的IP地址都是全球范围内唯一的,因而不会与别的机器冲突。实际上,正因为IP地址是唯一的,它才是可以被寻址的,以此地址为目的地(目标)的IP包才是“可路由”的。但是,一个IP地址既经分配,一般而言它就被“耗用”了。32位地址空间的容量大约是45亿个地址,在互联网发展的初期这已是天文数字,但是人们很快就意识到这个空间其实不大,不久就会被耗尽。
由于发达国家早就开始发展互联网,早就介入IP地址的瓜分,所以问题相对而言还不那么突出。可是对于作为后来者的发展中国家,这个问题就比较突出了。据称中国已有网民一亿以上,而分配给中国的IP地址不足三千万。至于发展得更晚的国家和地区,问题就更严重了。事实上,即使在美国,IP地址存量不足的问题也已经引起了高度的重视。
迄今为止,人们试图从两个方向、通过两条不同的技术路线来解决或缓解这个问题。
一条路线是另起炉灶,定义了一个新版(第六版)的IP协议IPv6,在这个协议里把IP地址的长度改成128位,使地址空间变得如此之大而在可预见的将来不至于被耗尽。可是,地址长度的改变意味着信息“包”头格式的改变,而且IPv6与IPv4的区别还不仅仅在于地址长度和“包”头的格式,这使得从IPv4到IPv6的迁移困难重重而且耗资巨大。对此,思科公司副总裁Tony Bates说得好“从IPv4到IPv6的迁移,具有革命性的难度,但并不是革命性的突破“。之所以这么说是因为除地址空间大小以外,事实上IPv6能做到的事(如QoS等等)IPv4几乎都能做到,而IPv4不能做到的事(如安全等等)则IPv6其实也不能做到。正因为这样,IPv6的提出已有十年以上了,却至今还是说的多、干的少。而且,迄今IPv6尚未经受在大规模网络环境下的实用考验,这也使得人们格外小心谨慎。
另一条路线是加以改良,从IP地址中划出了一些地址作为“私网地址”(或“内网地址”,在本文中“私网”和“内网”两个术语意义相同、可以互换),这些地址不需要申请,可以自由选用。当然,私网地址不可能是全球唯一的,所以在“公网”中是“不可寻址”的(所谓“可寻址”就是可以唯一确定地找到目标),因而是“不可路由”的(所谓“可路由”就是在每个岔口都能确定往哪儿走),公网中的路由器对以私网地址为目标的IP包不予转发。因此私网地址只能用在具体的“内网”中,只有在那里它才是唯一的、互不冲突的。不过,对于用在内网中的路由器(或“三层交换机”),私网地址也是“可路由”的。由于私网地址的使用,互联网的典型结构形态逐渐变成在公网上搭挂了很多内网(私网),每个内网通过一个(或几个)“网关”路由器接入公网。由于网关挂在公网上,它必须有个公网地址,而网关以内的所有“节点”,则都可以使用私网地址。另一方面,由于私网地址在公网上是不可路由的,当内网中的节点需要穿越公网进行通信时,就不能使用其自身的地址,而只好暂时借用网关的公网地址,此种技术称为“网络地址转换”、即NAT。私网地址的使用和NAT技术的发展大大缓解了IP地址不够分配的问题,但并没有从根本上解决问题,人们预测再过三几年IPv4的公网地址就真要耗尽了。再说,NAT的应用也存在着许多局限。另一方面,虽然在内网中可以使用私网地址,但是当内网的规模很大时私网地址也有耗尽的问题,因为现下的私网结构在逻辑上都是平面(单层)的,而不是多层的。所以,继续按原样使用IPv4也终非长久之机。
那么有没有一种方法,使得在IPv4的框架内,只对IPv4作细微的扩充就能解决IP地址不够分配的问题呢?本发明就提供了这样一种方法。
对IPv4进行深入的分析与思考,就可以发现IPv4采用的是单纯的按地址寻址(与路径无关,或者说与节点的位置无关)。正因为是单纯的按地址寻址,各节点的地址就必须唯一,这就有了地址被耗尽的问题。另一方面,正因为私网地址并非全球唯一,就在公网中不可路由。进一步,正因为私网地址在同一个内网中必须唯一,就也会有耗尽的问题。所以,问题出在单纯按地址寻址。只要地址的长度是固定的(如32位),就总会被耗尽,除非地址的长度远远超过实际需要。而超过实际需要的地址长度,则使每个包的长度不必要地加长,既增加了网络传输的负担,也增加了沿途各路由器处理的负担。
然而,如果是按路径寻址,那就不要求地址的唯一性了。这是因为地址只是路径中的一部分,路径实际上说明了目标的位置。所以,即使地址相同,只要路径是唯一的就可以了。举例说明之地址“123号”当然只在一个很小的范围内有唯一性、因而只在一个很小的范围内可寻址;但是“中山路123号”就在整个城市中有唯一性了;而“杭州中山路123号”就是全球唯一的了。实际上,“杭州中山路123号”既是一个全球唯一的地址,同时又说明了一条路径,即先到杭州(火车站),再到中山路,再到123号。从杭州(火车站)到目的地的路径可能不只一条,但是最短路径却只有一条,如果我们把“路径”理解为最短的“法定”路径,那就是唯一的了。之所以如此,是因为“杭州”是唯一的,而“中山路123号”在杭州内部又是唯一的,这里“杭州”既相当于“世界”这个“公网”中的一个公网地址,又代表着一个私网;而“中山路”既是这个私网中的一个私网地址,又代表着一个下一层次的私网,“123号”则是下一层私网中的一个私网地址。同样的道理,如果我们在IP包的头部包含该IP包在网中(从公网到私网、到目标节点)能走的一段最短路径,那么只要第一个(公网)地址是唯一的,而且后续的私网地址在其各自所在的私网中也是唯一的,就可以用这段路径唯一地确定一个目标节点。另一个例子是计算机文件系统的结构。如果把所有的文件都存放在同一个目录下,形成一种单层的“平面”结构,那么所有文件的文件名都必须是唯一的。可是,如果把文件分别存储于多层的目录中,那就只须路径名唯一就可以了。例如“客户往来/南北装修/协议书.doc”和“客户往来/黎明水电/客户往来/协议书.doc”,虽然文件名都是“协议书.doc”,但是他们存在于不同的目录中,有着不同的路径名,就不会互相混淆。
由此可见,只要在关于地址的说明中包含足够的路径信息,就可以用私网地址作为访问的目标和源,而且私网地址可以在多层的内网中递归使用,从而实际上不再受地址空间容量的限制。

发明内容
针对现有技术的缺陷,本发明提供了一种在互联网中按路径寻址和路由的方法。该方法对现有IPv4规程改变最小,并且在与IPv4完全兼容的条件下解决了IP地址容量不足的问题。
本发明采用的技术方案是这种在互联网中按路径寻址和路由的方法,在IP包的头部以可选项的方式提供具有唯一性的对节点在内网中的位置/路径的描述,即由一个公网地址开头、后随一个或几个私网地址(或一个或几个私网地址、后随一个公网地址)的地址序列;并以此作为寻址的依据,使采用内网地址的节点成为在互联网内可以寻址,并使以这些节点为目标的IP包在互联网内可以路由。其效果是解决了IPv4的地址不够使用的问题。
由于本发明是在对现有IPv4规程改动最小且完全兼容的条件下解决了地址容量不足的问题,与IPv6相比,它有下列优点● 与现有IPv4完全兼容,可以实现最平滑的过渡,也可与IPv4并存。
● 充分利用和继承IPv4业已成熟的技术。
● 公网中的路由器等基础设施完全无需变动,因而在最大程度上保护了运行商原有的的投资。
● 需要改变的设备集中于具体内网,有利于逐步过渡。
● 无论软件实现还是硬件实现都比IPv6容易,可以大大降低有关设备的造价。
● 地址描述的长度不固定,完全按需要确定,可以排除不必要的开销。
● 内网地址都是局部的,无需申请分配,易于管理。
还应指出,虽然上述的实现方案是针对IPv4的,但是本发明的实质、即按路径(而不仅仅是单个地址)寻址、是完全可以运用到其它网络规程上的。


图1是用来说明本发明的在IPv4网络中按路径寻址和路由的示意图。
具体实施例方式
下面结合附图和实施例对本发明的实施作进一步介绍实施例先考虑对于一个假想目标的地址描述101.202.10.11 192.168.100.31 10.40.120.3 192.168.100.31这段路径是由四个IP地址构成的地址序列。其中的第一个IP地址101.202.10.11是个公网地址,属于某个ISP(网络服务提供商),代表着进入这个ISP的内网的网关。第二个地址192.168.100.31是这个内网中的私网地址,代表着这个ISP的一个大客户,假定为“阳光小区”。而阳光小区自己又有个内网,192.168.100.31就是其网关在ISP内网中的地址。第三个地址10.40.120.3又是个私网地址,代表着阳光小区中的一个住户,是该住户的家庭网关在小区内网中的地址。最后,第四个地址192.168.100.31是这个家庭内网中的一个私网地址,也许是一台电冰箱的IP地址。注意第四个地址和第二个地址都是192.168.100.31,但是由于它们在路径中的位置不同,由不同的网关(路由器)加以处理,所以不会混淆。换言之,相同的内网地址可以递归使用,这就使地址容量可以灵活地动态加以扩充。这样,使用这个路径,就可以从外部通过互联网穿透三层网关访问这个家庭的电冰箱,例如远程设置其温度。进一步,要是电冰箱内部有许多需要独立加以访问的部件,还可以再把整个电冰箱作为一个内网,为每一个部件都指定一个内网地址,使访问其部件时的目标地址描述变成由五个IP地址构成的路径。
对于目标地址是这样,对于源地址也是一样,只是IP包在走过这段路径时的方向相反。
总而言之,由于私网地址可以递归重用,而路径的长度可以按需要改变,地址容量就不再成为问题。而且,私网地址完全可以由所在网络的管理员(例如小区内网的管理员)自行决定而无需申请,新节点的加入和撤消就变成了纯粹的内部事务,十分灵活。此外,在传统的IPv4网络中,由于内网地址在公网中不可路由,从外部一般是不能主动发起访问内网节点的(NAT一般只能用于由内网节点发起的会话)。而现在,采用了按路径寻址以后,这个障碍也就不再存在。
图1是一张按路径寻址的示意图,图中的“IP云状”就是人们日常所说“因特网”或“公网”的主体部分。公网中的每一个节点都有公网地址,一般都是路由器。画在云状边界线上的节点称为“边沿(edge)节点”,边沿节点连接着用户节点,这些节点也都有公网地址。用户节点可以是一台普通的计算机,也可以是个进入私网的“网关”,实际上是一种特殊(不同于云状中所用)的路由器。我们在这里的所谓“公网”,则是指IP云状和直接与云状相连的节点的总和。显然,这些节点都有公网地址。
私网中也可以使用路由器,但不同于公网中的路由器,因为公网路由器拒绝使用私网地址,而私网路由器则接受私网地址并加以路由。而所谓“三层交换机”则相当于私网路由器。
某些私网路由器的地址也可以不出现在路径描述中,那样的话与其直接相连的各“子网”就处于同一层次中。在同一层次中每个节点的(私网)地址必须是唯一的。所以,当路径描述中含有多个私网地址时,除最后(或最前)一个以外,中间的每一个私网地址都代表着一个用来分层的路由器、即“网关”。私网中同样的物理连接可以因路径描述的不同而形成不同的逻辑结构,即不同的层次结构。所以其地址出现在路径描述中的路由器都起着网关的作用。如果路径描述中只有一个私网地址(以及一个公网地址),那就表示私网中所有的节点都在同一层次中,目前大家在用的就是此种私网结构。当然,那样就不能递归使用私网地址了。显然,含有多个私网地址的路径描述代表着更为一般的结构形态,而只含一个私网地址的路径描述所代表的是一种特例。但是,私网的层次如何划分,具体路由器是否出现在路径描述中,以及路径描述的长度,这些都不影响按路径寻址的实质。
假定在图1左侧私网中的源节点10.40.18.2发出一个IP包,其目标是右侧下方的192.168.100.31(均系私网地址),则● 源端路径段,即IP包进入公网之前的路径,如图中的上向箭头所示,其描述为“156.3.27.86192.168.3.45 10.40.18.2”。该路径段的起点就是源节点10.40.18.2,终点就是左侧的顶层网关156.3.27.86,IP包传递的方向是由下而上。这里除终点以外的地址都是私网地址。作为特例,如果源节点本身就在公网中(有公网地址)就不存在源端路径段,而只有一个“源地址”。
● 公网路径段,IP包进入公网以后,其路径(所走过的路线)一般是不确定的,由公网中的诸多路由器动态形成。
● 目标端路径段,即IP包进入目标一侧私网以后的一段路径(见右侧),其描述为“101.202.10.11192.168.100.31 10.40.120.3 192.168.100.31”,如图中的下向箭头所示。该路径段的起点就是右侧的顶层网关101.202.10.11,终点就是目标节点192.168.100.31,IP包传递的方向是由上而下。作为特例,如果目标节点本身就在公网中(有公网地址)就不存在目标端路径段,而只有一个“目标地址”。
这三段路径合在一起,就构成了整个路径。在传统的IPv4中,公网路径段一般只表现为两个端点的IP(公网)地址,即源地址和目标地址,而其余两个路径段是不存在的。本发明的实质就体现在把对于源端路径段和目标端路径段的描述加进了IPv4。由于这两个路径段的存在,对源节点和目标节点的说明就从原IPv4和(新)IPv6固定长度的地址变成了可变长度的路径段描述。而采用可变长度的好处一方面是便于扩充,另一方面是(在没有必要时)不会造成浪费。
然而,在不显著改变IPv4包头格式的前提下,怎样才能容纳下这些路径信息呢?这其实不难,因为IPv4本来就允许在包头中使用一些可选项。为说明这一点,我们先看一下IPv4包头的结构,如表1所示

表1IP包的头部至少由4个32位“长字”构成,即20字节。这4个长字划分成许多位段,我们这里关心的有● 版本号,IPv4的版本号为4,IPv6的版本号为6。IPv6的头部结构与IPv4的不同,但是第一个长字的第一个位段都是版本号。
● 头部长度,一般是5,表示5个长字(20个字节)。如果大于5就表示在头部和所载运的数据之间还有可选项。
● 总长度,包的总长度,包括头部和数据。
● IP源地址和IP目标地址,各32位。在公网中只能用公网地址。
如果头部长度大于5,就说明包头中(IP目标地址的后面)还有着一个或几个可选项,其格式一般如表2所示

表2其中的第一个长字包含着操作代码,长度,指针等位段。其中● 操作代码,说明本可选项的作用和用途,IPv4定义了数十种不同的可选项。例如,“时戳(timestamp)”可选项要求沿途各路由器在该可选项中留下时间标记。不过具体的路由器不一定支持所有的可选项,遇到不认识或不支持的可选项就会跳过(不作为)。
● 长度,表示本可选项的实际长度。根据包头的长度和已经处理的可选项的长度,就可以知道包头中是否还有别的可选项及其位置(如果有的话)。
● 指针,当可选项中的数据不止一个长字时,就要让指针指向本可选项中的当前数据项(长字)。
IPv4所定义的可选项之一是“源路径(Source Route)”,意为“由源节点规定的路径”。如上所述,IP包进入公网以后,其路径(所走过的路线)一般是不确定的,由公网中的诸多路由器动态形成。但是,在IPv4中,具体IP包的源端可以通过使用“源路径”可选项指定其在公网中的路径,这就是“源路径(SourceRoute)”可选项(实际上有两个,即“严格源路径”和“宽松源路径”),用于由IP包的源节点为其预先规定一条路径,其格式为操作码(源路径的代码是137)+路径长度+当前指针(共32位)
“第一跳”IP(公网)地址,(32位)“第二跳”IP(公网)地址,(32位).....
显然,这与我们要载运的路径信息是很相似的,只不过源路径选项中的IP地址全都是公网地址而不允许有内网地址,这些信息的使用者是公网中的路由器。而我们要载运的路径信息则是以一个公网地址开头,后随若干个内网地址,这些信息的使用者则是各层内网的网关。还有,源路径选项中的信息是与整个公网路径的全程相联系的,而我们要载运的路径信息则只与路径的两端,即从源节点出发进入公网之前的一段路径,以及穿过公网、进入第一层内网之后的一段路径。
为此,我们只要为IPv4再定义两个可选项,例如“源端路径段”和“目标端路径段”就行了。甚至,直接用“源路径”选择项(扩充其定义,使其包含源端内网地址段、公网地址段、以及目标端内网地址段三部分)也无不可。另一方面,如果在某些具体的包中没有使用这些新的选项(或扩充),就仍与现有的IPv4相同,而不造成任何损害。反之,如果IP包中使用了这些新的选项(或扩充),而沿途内网中的网关尚不支持这些选项,则只是这些IP包不能穿透网关到达内网中的目标节点,也跟现有IPv4的行为特性相同(此时一般仍可通过NAT进行通信)。
为提高网关(路由器)的处理效率,还可以规定● 只要带有“源端路径段”可选项,就必须是包头中的第一个可选项。
● 只要带有“目标端路径段”可选项,就必须是包头中的第一或第二个可选项(视源端路径段可选项是否存在)。
不过这并不涉及本发明按路径寻址和路由的本质。
采用了这种方法以后,尽管在源和目标两段路径中都可能含有私网地址,但是一旦IP包进入公网、以及在公网中穿行的过程中,其头部的源地址和目标地址都必定是公网地址,与传统的IPv4相同,所以公网中的路由器只要按原来的规则加以路由,忽略新增加的可选项(对这些路由器而言是“未知”可选项)就行了。事实上,RFC-1812中的4.2.2.6节对于“未知”可选项就是这么规定的。换言之,对公网中的路由器无需加以升级,需要升级的只是私网中的各层网关。这既有利于本项技术的采用,又在最大程度上保护了原有的投资。
由于所有的改变都是在IPv4的框架和规程中实现的,而本发明所述方法在实现方式上体现为对IPv4的某种扩充,我们不妨把采用了本发明所述方法以后的IPv4称为IPv4+。
采用了IPv4+以后,在极端的情况下,一个国家只要有上几个公网地址,甚至仅仅一个公网地址就可以了。因为整个国家的互联网可以是一个由多层私网构成的体系,这个体系内部全都使用可以自行分配的私网地址,只是这个体系的“门户”才必须有个公网地址。
现将本发明的实施具体说明如下1.在IPv4规程的包头可选项中增加两个新的可选项“源端路径段”和“目标端路径段”,格式与原有的“源路径”可选项相同。
● 也可以直接利用“源路径”可选项,但是那样对原来的定义略有改变,并且会加重沿途路由器处理的复杂性。定义新的可选项,利用已有的可选项,或修改已有可选项的定义都不改变本发明按路径寻址的实质。
● 也可以合并成一个可选项,但是那样也会加重沿途路由器处理的复杂性。同样,如何定义可选项也不改变本发明按路径寻址的实质。
2.组网时,从公网开始,第一层私网通过网关(路由器)接入公网,并为第一层私网内各节点分配一个私网地址。第一层私网可以分成一个或多个子网,这些子网都处在同一个层次上。第一层私网的网关(路由器)在公网中有个公网地址。
3.如有必要,可以再将第二层私网通过网关(路由器)接入第一层私网,并为第二层私网内各节点分配一个私网地址。第二层私网也可以分成一个或多个子网,这些子网都处在同一个层次上。第二层私网的网关(路由器)在第一层私网中有个(第一层)私网地址。相邻私网应采用不同的子网地址。下类推,对私网的层数没有限制。
4.对于各层私网中的每个节点,根据“生成树”的原理确定一个以第一层私网网关(路由器)的公网接入点为起点的最短路径(段),路径中的每个节点(每一跳的目标)都是一个网关(路由器)。每个这样的路径(段)都是以第一层私网网关(路由器)的公网地址开头,后随0个或数个内网地址的IP地址序列,每个序列都唯一地确定着网中的一个节点。如果内网地址的个数为0,就说明这是个可以在公网中直接寻址的节点,因而可以不使用路径描述、而只是使用其公网地址。这样得到的既是具体节点的“目标端路径段描述”,也是其“源端路径段描述”。
5.向一个节点发送IP包时,要把目标节点的IP地址序列填写在IP包的头部,具体方法为● 如果序列中内网地址的个数为0(只有一个公网地址),就将公网地址填写在目标地址位段,不需要加可选项,此时的IP包头与现行IPv4的完全一样。
● 如果序列中内网地址的个数非0,就将该序列的第一个地址、即公网地址填写在目标地址位段,同时须在报头中添加一个“目标端路径段”可选项。可选项中包含目标节点的整个IP地址序列,并使“当前指针”指向第一项、即序列中的公网地址。可选项中的“路径长度”也须按实际长度填写。
6.如果源节点是个内网节点,则IP包头中还应带有“源端路径段”可选项,方法同上,只是把本节点的(私网)地址、即最后一个地址填写在源地址位段(而非目标地址位段),并使“当前指针”指向最后一项,而把源端路径段中(由下而上)的下一个地址填写在目标地址位段。此外,只要包头中带有源端路径段可选项,就必须同时带有目标端路径段;即使目标地址只是个公网地址,也应加上只有一个公网地址的目标端路径段可选项。这是因为在多层内网中进行路由时需要借用包头中的目标地址位段。
● 当目标地址是个公网地址、源节点是个内网节点时,也可以不加目标端路径段可选项,而让源端的各层网关都将IP包向上一层“默认网关”转发,直至进入公网,但不逐层改变目标地址位段(见第8项)。不过那样反而使网关的算法复杂化,概念也不够清晰。这样的细节并不改变本发明按路径寻址的实质。
7.对于源自内网节点的IP包,如果其源端路径段可选项的指针尚未指向该序列中(最上层的)的第一个地址,就说明尚未进入公网。此时沿途的内网网关需要比对其“目标端路径段”地址序列和“源端路径段”序列,如果部分重合、并且重合部分的最后一个地址正是本网关的地址,就说明目标节点与源节点都源自本网关所在的那一层内网,因而不应该将此IP包向上送入公网,而应该从本节点开始进行内网中的路由/转发。此时应使源端路径段可选项的指针指向该序列中(最上层的)的第一个地址,并使“目标端路径段”可选项中的指针直接指向其在本层内网中的下一跳目标(装成已穿越公网来到了目标端),并将该地址填写在包头中的目标地址位段,然后以此为目标加以路由和转发。
8.否则(若两个序列没有重合的部分)进一步检查包头中的“源端路径段”可选项,把可选项中的“当前指针”往上推进,使其指向上一项、即序列中的前一个IP地址,并把这个地址填写在包头中的目标地址位段,就好像换一个标签一样,然后以此为目标加以路由和转发,使其抵达下一跳的目标。余类推。
9.当IP包到达源端的顶层网关时,如果带有“源端路径段”可选项,则使其“当前指针”指向序列中(最上层的)的第一个IP地址(这个地址应该与网关的公网地址相符)。将此地址填写在包头中的源地址位段,并将目标端路径段可选项中的第一个IP地址(应为公网地址)填写在包头中的目标地址位段,然后以此为目标加以路由和转发。
10.公网中的路由器各自按IP包中的目标地址位段(公网地址)转发,而忽视包头中的“目标端路径段”可选项和“源端路径段”可选项,最后把IP包送达目标端顶层私网的网关(路由器),在此期间IP包中的目标地址位段并不改变。
11.目标侧顶层私网的网关(路由器)检查包头中的“目标端路径段”可选项,把可选项中的“当前指针”往下推进,使其指向下一项、即序列中的第一个内网地址,并把这个地址填写在包头中的目标地址位段,就好像换一个标签一样,然后以此为目标加以路由和转发,使其抵达下一跳的目标。余类推。
12.当IP包到达目标节点时,如果带有“目标端路径段”可选项,则其“当前指针”应已指向序列中的最后一个IP地址,这个地址应该与目标节点的地址相符。
13.IP包到达目标节点后,目标节点检查IP包头中是否带有源端路径段可选项。如有就将其复制下来作为对方的目标端路径段可选项,供反向发送IP包时使用。否则将包头中的源地址复制下来,供反向发送IP包时用作目标地址。
14.总而言之,当这样的IP包处于源端或是目标端的各层内网中时,其包头的目标地址位段都带有内网地址(除在源端内网中的最后一跳外),路径中的每个网关在转发此类IP包时都要根据“目标端路径段”可选项的内容改变包头中的目标地址位段。而当处于公网中时,则其包头的目标地址位段都带有公网地址,并且不会改变。包头的源地址位段则在进入公网之前带有源节点的内网地址,进入公网后改成源端顶层网关的公网地址,此后不再改变。
上面的第一项说明了本发明对IPv4所作的扩充。第二、三、四项说明了采用本发明所述方法以后如何组网,以及如何确定一个具体节点的路径描述。这四项是本发明的实质所在,其余各项则为实施细则。
第五和第六项说明一个节点(可以是用作客户端、服务器、路由器、防火墙、网关等等的通用或专用计算机、或任何带有IP网络通信能力的其它装置和设备)在需要向别的节点发送IP包时如何设置包头中的有关信息。第七项至第九项说明源端内网的网关应该怎样处理和转发带有路径信息(可选项)的IP包。第十项说明公网路由器如何对待这样的IP包。第十一和第十二项说明目标端内网的网关应该怎样处理和转发这样的IP包。第十三项则说明一个终端节点在接收到这样的IP包以后的处理方法。最后,第十四项是个总结,这也是实质性的。
需要特别指出的是作为一种具体的实现,这里的一些细节并不是唯一的,而可以有所变化,但是细节的不同并不影响本发明的实质。
下面进一步给出有关算法的伪代码描述。
发送IP包输入目标端路径段描述,数据缓冲区指针及数据长度,用作“草稿”的20字节“基本包头”缓冲区。
算法源端路径段描述=本节点的路径段描述;if(源端路径段长度>1){根据源端路径段描述构建源端路径段选择项;根据目标端路径段描述构建目标端路径段选择项;将本节点的IP地址填写到基本包头中的源地址位段;目标地址=目标端路径段描述中的第一个地址(必是公网地址);将目标地址填写到基本包头中的目标地址位段;}else /*无源端路径段选择项*/{将本节点的IP地址填写到基本包头中的源地址位段;if(目标端路径段长度>1){根据目标端路径段描述构建目标端路径段选择项;}目标地址=目标端路径段描述中的第一个地址(必是公网地址);
将目标地址填写到基本包头中的目标地址位段;}包头长度=20字节+源端路径段选择项长度(如果有的话)+目标端路径段选择项长度(如果有的话);根据包头长度设置基本包头中的“包头长度”位段;把基本包头中的版本号位段设置成4;基本包头中其他位段的设置与传统IPv4相同;根据包头长度和数据长度分配IP包缓冲区。
将基本包头、源端路径段选择项、目标端路径段选择项、以及数据复制到IP包缓冲区中;将IP包缓冲区交付链路层发送;/*结束*/接收IP包输入IP包缓冲区指针及包的长度。
算法检查包头中的版本号位段;if(版本号==4){包头长度=包头中的“包头长度”位段;if(包头长度>5) /*有可选项*/{if(第一个可选项是源端路径段)/*源端路径段必须是第一个可选项*/{源端路径段描述=源端路径段可选项;if(下一个可选项是目标端路径段){目标端路径段描述=目标端路径段可选项;}
else{报错;/*只要有源端路径段就必有目标端路径段*/}if(源端路径段可选项中的指针不指向第一个地址){/*尚未进入公网*/比较源端路径段描述和目标端路径段描述;if(有公共部分并且(公共部分的最后一个地址与本节点地址相符)){转发IP包。/*见后*/}}}else /*无源端路径段可选项*/if(第一个可选项是目标端路径段){目标端路径段描述=目标端路径段可选项;}if(包头中的目标地址与本节点地址相符 并且(无目标端路径段可选项或目标端路径段可选项中的指针指向最后一个地址)){对方路径段描述=源端路径段描述;/*供反向发送IP包时使用*/该IP包以本节点为目标,递交给应用层或上一层网络规程;}else
{转发IP包。/*见后*/}}else/*无可选项*/{传统IPv4的处理。
}}else /*不是IPv4*/{其它规程(如IPv6)的处理;}/*结束*/转发IP包输入IP包缓冲区指针及包的长度,源端路径段描述,目标端路径段描述。
算法检查源端路径可选项中的指针;if(无源端路径段可选项或(源端路径段可选项中的指针指向第一个地址并且该地址!=本节点地址)){/*已穿越公网到达目标端*/if(无目标端路径段可选项){传统IPv4的处理;}else
{if(目标端路径段可选项中的指针所指==本节点地址){/*本节点在路径描述中,因而是网关*/使目标端路径段可选项中的指针指向下一个地址;将这个地址填写入包头中的目标地址位段;}else{/*本节点不在路径描述中,因而是普通路由器*/传统IPv4内网路由或三层交换;}}}else /*尚未进入公网,还在源端*/{比较源端路径段描述和目标端路径段描述;if(有公共部分并且(公共部分的最后一个地址与本节点地址相符)){使源端路径段可选项中的指针指向第一个地址;/*装作已经穿越公网*/在目标端路径段可选项中找到本节点的地址;使目标端路径段可选项中的指针指向本节点的地址;/*装作已经路由到了本节点*/}if(源端路径段可选项中的指针指向第一个地址){
/*本节点是源端顶层网关*/将本节点的公网地址填写入包头中的源地址位段;使目标端路径段可选项中的指针指向第一个地址;将这个地址填写入包头中的目标地址位段;}else /*并非顶层网关*/{if(目标端路径段可选项中的指针所指==本节点地址){/*本节点在路径描述中,因而是网关*/使目标端路径段可选项中的指针指向上一个地址;将这个地址填写入包头中的目标地址位段;}else{/*本节点不在路径描述中,因而是普通路由器*/传统IPv4内网路由或三层交换;}}}根据包头中的目标地址位段进行路由;/*查路由表*/发送IP包;/*结束*/这些算法可以通过软件实现,也可以通过集成电路芯片(或芯片组)以硬件形式实现。具体的实现形式与手段并不改变本发明在IP网络中按路径寻址的实质。此外,实际实现时还可对这些算法加以优化,这同样也不改变本发明的实质。
权利要求
1.一种在互联网中按路径寻址和路由的方法,其特征是在IP包的头部提供具有唯一性的对节点在内网中的位置/路径的描述,即由一个公网地址开头后随一个或几个私网地址、或若干私网地址后随一个公网地址的地址序列,并以此作为寻址的依据,使采用内网地址的节点成为在互联网内可以寻址,并使以这些节点为目标的IP包在互联网内可以路由。
2.根据权利要求1所述的在互联网中按路径寻址和路由的方法,其特征是1)、在IPv4规程的包头可选项中增加两个新的可选项“源地址路径段”和“目标地址路径段”,格式与原有的“源路径”可选项相同;2)、组网时,从公网开始,第一层私网通过网关接入公网,并为第一层私网内各节点分配一个私网地址;第一层私网可以分成一个或多个子网,这些子网都处在同一个层次上,第一层私网的网关在公网中有个公网地址;3)、将第二层私网通过网关接入第一层私网,并为第二层私网内各节点分配一个私网地址,第二层私网也可以分成一个或多个子网,这些子网都处在同一个层次上;第二层私网的网关在第一层私网中有个第一层私网地址;第二层私网和第一层私网应采用不同的子网地址;下类推,对私网的层数没有限制;4)、对于各层私网中的每个节点,根据“生成树”的原理确定一个以第一层私网网关的公网接入点为起点的最短路径,路径中的每个节点,即每一跳的目标都是一个网关;每个这样的路径都是以第一层私网网关的公网地址开头,后随0个或数个内网地址的IP地址序列,每个序列都唯一地确定着网中的一个节点;如果内网地址的个数为0,就说明这是个可以在公网中直接寻址的节点;这样得到的是具体节点的路径描述,既用作目标端路径描述,也用作源端路径描述;5)、向一个节点发送IP包时,要把目标节点的IP地址序列填写在IP包的头部,具体方法为●如果序列中内网地址的个数为0,就将公网地址填写在目标地址位段,而不需要加可选项。此时的IP包头与现行IPv4的完全一样;●如果序列中内网地址的个数非0,就须在报头中添加一个“目标地址路径段”可选项;6)、如果源节点是个内网节点,则IP包头中还应带有“源端路径段”可选项。
3.根据权利要求2所述的在互联网中按路径寻址和路由的方法,其特征是1)、对于源自内网节点的IP包,如果其源端路径段可选项的指针尚未指向该序列中的(顶层)第一个地址,就说明IP包尚未进入公网,沿途的各层内网网关应比对其“目标端路径段”地址序列和“源端路径段”序列;如果部分重合、并且重合部分的最后一个地址正是本网关的地址,就说明目标节点与源节点都源自本网关所在的那一层内网,因而不应该将此IP包向上送入公网,而应该从本节点开始进行内网中的路由/转发;此时应使源端路径段可选项的指针指向该序列中的第一个地址,并使“目标端路径段”可选项中的指针直接指向其在本层内网中的下一跳目标,并将该地址填写在包头中的目标地址位段,然后加以转发;2)、否则,若两个序列没有重合的部分,则进一步检查包头中的“源端路径段”可选项,把可选项中的“当前指针”向上推进到指向上一项、即序列中的前一个IP地址,并把这个地址填写在包头中的目标地址位段,就好像换一个标签一样,然后加以路由/转发,使其抵达下一跳的目标,余类推;3)、当IP包到达源端的项层网关时,如果带有“源端路径段”可选项,则使其“当前指针”指向序列中的第一个IP地址,这个地址应该与网关的公网地址相符;将此地址填写在包头中的源地址位段,并将目标端路径段可选项中的第一个IP地址,应为公网地址,填写在包头中的目标地址位段,然后加以路由/转发;4)、目标端项层私网的网关检查包头中的“目标端路径段”可选项,把可选项中的“当前指针”向下推进到指向下一项、即序列中的第一个内网地址,并把这个地址填写在包头中的目标地址位段,就好像换一个标签一样,然后加以路由/转发,使其抵达下一跳的目标,余类推;5)、当IP包到达目标节点时,如果带有“目标端路径段”可选项,则其“当前指针”应已指向序列中的最后一个IP地址,这个地址应该与目标节点的地址相符;6)、IP包到达目标节点后,目标节点检查IP包头中是否带有源端路径段可选项,如有就将其复制下来用作对方的目标端路径段可选项,供反向发送IP包时使用,否则将包头中的源地址复制下来,供反向发送IP包时用作目标地址。
全文摘要
本发明涉及一种在互联网中按路径寻址和路由的方法,在IP包的头部以可选项的方式提供具有唯一性的对节点在内网中的位置/路径的描述,即由一个公网地址开头、后随一个或几个私网地址(或一个或几个私网地址、后随一个公网地址)的地址序列;并以此作为寻址的依据,使采用内网地址的节点成为在互联网内可以寻址,并使以这些节点为目标的IP包在互联网内可以路由。本发明的优点1)与现有IPv4完全兼容,可以实现最平滑的过渡,也可与IPv4并存。2)充分利用和继承IPv4业已成熟的技术。3)无论软件实现还是硬件实现都比IPv6容易,可以大大降低有关设备的造价。4)地址描述的长度不固定,完全按需要确定,可以排除不必要的开销。
文档编号H04L29/06GK1588898SQ200410053139
公开日2005年3月2日 申请日期2004年7月26日 优先权日2004年7月26日
发明者毛德操 申请人:毛德操
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1