由IPv4到IPv6网络的基于端口的报文转换实现方法

文档序号:7619471阅读:187来源:国知局
专利名称:由IPv4到IPv6网络的基于端口的报文转换实现方法
技术领域
本发明涉及网络通信技术领域,尤其涉及一种由IPv4到IPv6网络的基于端口的报文转换实现方法。
背景技术
目前,数据网络中以IPv4(互联网协议第四版)技术为主导,随着网络规模的扩大,IPv6(互联网协议第六版)技术以其庞大的地址空间等优势将逐渐取代目前的IPv4技术。然而,由于目前IPv4网络应用范围较广,因此,彻底的取代IPv4网络需要一个长期的过程。在这个长期由IPv4技术向IPv6技术演进的过程中,为了共享网络资源,必须要解决IPv4网络和IPv6互通的问题,也就是使IPv6节点与IPv4节点间可以互访。
为实现IPv4网络与IPv6网络的互通,出现了NAT-PT(Network AddressTranslation-Protocol Translation,网络地址转换-协议转换)技术。
所述的NAT-PT技术的主要原理是在IPv6网络和IPv4网络之间设置网关设备,称为NAT-PT网关。当IPv6网络节点与IPv4网络节点相互通信时,NAT-PT网关将往来的IPv6报文和IPv4报文进行相互转换,以适应对端的IP协议类型。其中,所述的转换包括协议的转换以及IP地址的转换,例如,针对IPv4报文头和IPv6报文头的转换等。
对于由IPv6报文到IPv4报文的转换过程中,IP地址的转换实际上是采用IPv4地址替换IPv6地址;具体为从IPv4地址池中分配临时的IPv4地址来映射IPv6地址。而对于由IPv4报文到IPv6报文的转换过程,则需要用IPv6地址替换IPv4地址;具体为方式为分配专门的IPv6前缀,称为NAT-PT前缀,采用前缀+IPv4地址构成新的IPv6地址来映射原来的IPv4地址。
下面以一个实例描述NAT-PT中对于IP地址转换的过程。
如图1所示,在NAT-PT网关上,分配有IPv4地址池,假设包括的IPv4地址为101.1.1.1到101.1.1.10,用于映射IPv6地址;同时,还分配NAT-PT前缀,假设为3333::0/96,用于映射IPv4地址。在IPv6网络中,节点B和节点A的IPv6地址分别为2001::1,和2001::2;在IPv4网络中,节点C的IPv4地址为132.1.1.1。
基于上述假设,结合图1,当IPv6节点发起向IPv4节点的访问,如IPv6节点B准备与IPv4节点C通信时,则具体的处理过程如下首先节点C的IPv4目的地址需要映射为IPv6目的地址,具体为将节点C的IPv4地址加上前缀,即3333::132.1.1.1;之后,节点B发送IPv6报文,源地址为2001::1,目的地址为3333::132.1.1.1;当报文经过NAT-PT网关时,IPv6目的地址被转换(去掉前缀)为IPv4目的地址132.1.1.1,所述NAT-PT网关还从IPv4地址池分配一个地址(假设为101.1.1.1)来映射IPv6源地址;最后,将IPv6报文转换为IPv4报文,并发送给IPv4节点C。
仍参见图1,当由IPv4节点发起向IPv6节点的访问,例如IPv4节点C准备与IPv6节点B通信时,相应的处理过程如下首先,需要将节点B的IPv6地址映射为IPv4地址,假设将2001::1映射为101.1.1.2,之后,节点C直接使用映射后的IPv4地址101.1.1.2作为目的地址发送IPv4报文;当在报文经过NAT-PT网关时,IPv4报文的源地址被映射为相应的IPv6地址,具体为加上NAT-PT前缀,即为3333::132.1.1.1,同时,IPv4报文的目的地被映射为相应的IPv6目的地址2001::1,然后NAT-PT网关将报文转换为IPv6报文后发送给IPv6节点B。
可以看出,在上述NAT-PT转换过程中,对IPv6地址的映射采用IPv4地址池方式,每当有新的IPv6地址需要映射时,就需要从地址池中分配一个IPv4地址来使用。由于目前IPv4地址资源比较匮乏,通常无法分配到足够大的IPv4地址池,因而,地址池中的地址很容易被耗尽。如果地址池中无空余地址可供分配,则所有IPv6网络和IPv4网络间建立的新的连接将无法被NAT-PT网关正常处理。
为此,NAT-PT协议规定了端口号转换方式,即除了将报文源地址转换外,还要将报文传输层的端口号也进行转换。如图2所示。
假设有两个IPv6报文需要将各自的IPv6源地址映射为IPv4地址,但是可供映射的IPv4地址只有一个,此时可以使用端口号转换方式,将IPv6报文的源端口映射为不同的IPv4端口,这样两个报文经过转换后,虽然IPv4源地址相同,但是分配的IPv4源端口号不同,以此来区分两个报文,该方法被称为端口号转换方式,即PAT(基于端口号的地址转换)。
当IPv6报文需要与IPv4报文通信,由于报文的目的地址采用NAT-PT前缀+IPv4地址形式,可以直接映射为IPv4地址,同时目的端口保持不变。对于源地址源端口,动态的分配源IPv4地址以及分配端口号来进行映射。由于端口号的取值范围为0-65535,因此,理论计算该方法可以使每个IPv4地址同时被复用到65535个映射中,大大提高了IPv4地址的使用效率。
目前,所述的PAT方式主要应用在IPv6发起向IPv4报文转换的过程中,对IPv6源地址的映射时使用,即对IPv6源地址的PAT转换。而对于由IPv4网络节点发起的向IPv6网络节点访问的报文的转换,则PAT技术无法实现针对IPv6网络侧目的地址的端口映射。
NAT-PT协议RFC2766规定了DNS-ALG(域名系统应用层网关)方法,可以用来协助由IPv4发起的向IPv6访问的报文的转换。如图3所示,所述的NAT-PT网关需要支持DNS-ALG功能,即经过的报文如果是包含DNS(域名系统)报文,除对IPv6和IPv4协议报文头互相转换外,还要对DNS报文做转换;其中,IPv6网络中的IPv6 DNS服务器,负责响应IPv6的DNS请求;IPv4网络中的IPv4 DNS服务器,负责响应IPv4的DNS请求。
以IPv4节点C访问IPv6节点B为例首先,节点C发出IPv4的DNS请求用来获得目的节点B的IPv4地址,该请求经过NAT-PT网关时,被改为IPv6的DNS请求,修改后的IPv6 DNS请求发送给IPv6 DNS服务器,得到IPv6DNS回应,包含节点B的IPv6地址,该回应报文经过NAT-PT网关时,被转换为IPv4 DNS回应报文,同时NAT-PT网关从IPv4地址池中分配IPv4地址作为节点B的IPv4地址来替换回应报文中的IPv6地址。节点C收到该DNS回应报文后,可以用该IPv4地址作为目的地址访问节点B。
在上述方法中,NAT-PT网关从IPv4地址池中分配IPv4地址映射目的IPv6地址,然后由DNS报文携带给IPv4源节点,正因为如此,如图4所示,NAT-PT网关无法使用端口号分配方法,因为无法得到正确的需要映射的IPv6目的端口,同时即使可以分配端口号,DNS报文也无法携带相应的端口信息。因此,导致IPv4地址池的地址很快被DNS-ALG耗尽。
目前,还提供了一种从IPv4网络到IPv6的目的地址做IPv4端口映射的方法,该方法是在IPv4网络中的节点向IPv6网络中的节点发起通信时,根据预先人工静态配置的IPv4地址及相应的端口号与IPv6地址及端口号的对应关系进行目的地址转的换处理,并实现所述的IPv4网络中的节点与IPv6网络中的节点间的通信。因此,该方法可以实现通过同一IPv4地址+多个端口号,映射多个IPv6目的地址的服务。但是,该方法无法使用DNS-ALG实现自动的地址端口分配,因而使得实现过程较为繁琐,而且,静态配置的对应关系使得IPv4地址资源无法得到重复应用,使得IPv4地址资源的利用率仍然受到一定的限制。
随着IPv6网络规模的扩大,IPv6地址资源的增加,IPv4设备通过NAT-PT转换访问IPv6资源的需求将大大增加,现有的地址转换方式已经严重的制约了由IPv4网络到IPv6网络的访问应用。

发明内容
鉴于上述现有技术所存在的问题,本发明的目的是提供一种由IPv4到IPv6网络的基于端口的报文转换实现方法,从而使由IPv4到IPv6网络的基于端口的报文转换可以自动实现,并可以进一步提高IPv4地址资源的利用率。
本发明的目的是通过以下技术方案实现的本发明提供了一种由IPv4到IPv6网络的基于端口的报文转换实现方法,包括A、在域名系统DNS报文中携带用于查询端口信息的端口号类型字段;B、IPv4网络中的主机基于所述的DNS报文中的端口号类型字段查询获取IPv6报文的服务端口信息;C、当IPv4网络中的主机向IPv6网络发送的报文经过网络地址协议转换NAT-PT网关时,由NAT-PT网关基于所述的服务端口信息对所述报文进行转换处理,并发送给IPv6网络。
所述的步骤A包括在DNS查询或响应报文中扩展增加端口类型字段。
所述的步骤B包括B1、当IPv4网络中的主机需要访问IPv6网络中的主机服务时,IPv4网络中的主机构造DNS查询报文,报文中包含扩展的端口号类型字段,并指定端口信息;B2、利用所述的DNS查询报文,IPv4网络中的主机可以查询获取到IPv6网络中目的主机的IP地址信息及实际的服务端口信息。
所述的步骤B2包括B21、将所述的DNS查询报文发送到NAT-PT网关后,由NAT-PT网关将对所述DNS查询报文中的IP地址查询问题进行处理,并发送给IPv6网络中的DNS服务器;B22、IPv6网络中的DNS服务器将IPv4网络中的主机查询的目的主机的IP地址信息返回给NAT-PT网关;B23、NAT-PT网关将所述的IPv6主机的IP地址信息和端口号信息进行转换处理,并将其使用的实际的服务端口信息承载于端口类型字段中发送给IPv4主机。
所述的步骤B21具体包括IPv4主机将所述的DNS查询报文经IPv4网络中的DNS服务器或直接发送到NAT-PT网关,之后,由NAT-PT网关将对所述DNS查询报文中的IP地址查询问题进行处理,并发送给IPv6网络中的DNS服务器。
所述的步骤B23包括在NAT-PT网关上检查IPv6主机使用的服务端口信息是否发生变化,如果发生变化,则将其使用的实际的服务端口信息承载于端口类型字段中发送给IPv4主机,否则,不改变端口类型字段中承载的信息。
所述的步骤B23还包括在NAT-PT网关保存IPv4地址和端口号信息与IPv6地址和端口号信息间的映射关系。
所述的步骤C包括IPv4主机使用获得的IPv4地址和端口号信息构造访问IPv6主机的报文;当所述的报文经过NAT-PT网关时,由NAT-PT网关根据报文中IPv4地址和端口号信息,以及保存的对应的IPv6地址和端口号信息对所述报文进行转换处理,转换处理后的报文发送给IPv6网络。
由上述本发明提供的技术方案可以看出,本发明通过扩展DNS报文格式,从而实现在DNS-ALG上自动进行相应的端口信息和IPv4地址的分配,使得由IPv4网络到IPv6网络的基于端口的报文转换过程可以自动实现。而且,由于整个过程为自动实现,而不是静态配置,所以相应的IPv4地址可以在被重复应用,有效提高了IPv4地址资源的利用率。因此,本发是解决了由IPv6网络规模的扩大及IPv6资源的增加,导致的IPv4地址可分配资源紧缺的问题。


图1为IPv4网络与IPv6网络间互通的组网结构示意图1;图2为图1中NAT-PT网关上的地址转换过程示意图;图3为IPv4网络与IPv6网络间互通的组网结构示意图2;图4为图3中NAT-PT网关上的地址转换过程示意图;图5为本发明所述的方法处理过程示意图;图6为图5中的地址端口转换过程示意图。
具体实施例方式
本发明的核心是通过针对DNS协议报文的扩展,实现在NAT-PT网关的DNS-ALG中自动进行端口的分配,这样,既可以利用DNS-ALG实现自动地址转换,同时,也实现了IPv4地址的重复使用,有效地节约IPv4地址资源。
本发明中,主要是针对DNS协议定义的查询报文和查询响应报文进行扩展,下面首先对所述的查询报文和查询响应报文的标准格式进行说明标准DNS协议中定义的查询报文及相应的查询响应报文的格式如表1所示表1

所述报文由12字节长的首部和4个长度可变的字段组成;其中,标识字段由客户程序设置并由服务器返回结果,客户程序根据标识字段记载的信息确定响应报文与查询报文是否匹配。
所述的16bit的标志字段被划分为若干子字段,如表2所示表2

1 41 1 1 1 3 4其中QR为1bit字段0表示查询报文,1表示响应报文;opcode是一个4bit字段通常值为0(表示标准查询),其他值为1(表示反向查询)和2(表示为服务器状态请求);AA是1bit标志表示“授权回答(authoritative answer)”,该名字服务器是授权于该域的;TC是1bit字段表示“可截断的(truncated)”,使用UDP(用户数据报协议)时,它表示当应答的总长度超过512字节时,只返回前512个字节;RD是1bit字段表示“期望递归(recursion desired)”,该比特能在一个查询中设置,并在响应中返回,这个标志告诉名字服务器必须处理这个查询,也称为一个递归查询;RA是1bit字段表示“可用递归”,如果名字服务器支持递归查询,则在响应中将该比特设置为1,随后的3bit字段必须为0;rcode是一个4bit的返回码字段通常的值为0(表示没有差错)和3(表示名字差错)。
所述的DNS查询报文中的问题部分中每个问题的格式如表3所示表3

查询名字段用于记录要查找的名字,是一个或多个标识符的序列。每个标识符以首字节的计数值来说明随后标识符的字节长度,每个名字以最后字节为0结束;以存储域名“gemini.tuc.noao.edu”为例,如表4所示表4

↑↑↑↑↑计数 计数 计数 计数 计数 ;查询类型字段用于记录每个问题对应的查询类型,一共大约有20个不同的类型值;所述的DNS问题和响应的类型值和查询类型值如表5所示表5


DNS响应报文中的资源记录部分DNS报文中最后的三个字段,回答字段、授权字段和附加信息字段,均采用一种称为资源记录RR(Resource Record)的相同格式,所述的资源记录的格式如表6所示表6

域名字段用于记录中资源数据对应的名字。它的格式和前面的查询名字段格式相同;类型字段用于说明RR的类型码,该值和前面介绍的查询类型值是一样的,类通常为1,指Internet数据;生存时间字段是客户程序保留该资源记录的秒数;资源数据长度字段用于说明资源数据的数量。
本发明所述的方法的具体实现方式如图3、图5和图6所示,主要包括以下处理步骤步骤51对上述DNS协议的查询及响应报文进行扩展,增加新的类型值,即端口号类型,从而使得IPv4主机可以通过DNS查询和响应报文获取相应的端口信息;在该步骤中增加的新的类型值,即端口号类型,其值可以设置为30,也可以申请保留类型值;利用该端口号类型值可以查询DNS客户机所需要的服务端口是否有更新,以便于准确获知其使用的相应的端口号信息;所述的端口号类型值可以分别应用于查询报文和响应报文中。
步骤52对DNS查询函数进行扩展,设置相应的构造端口号类型字段的函数,用于构造所需要的报文中的端口号类型字段;IPv4主机的应用程序对DNS服务器的访问是通过DNS解析器实现,所述DNS解析器主要是通过库函数get host by name( )进行访问;所述的库函数的入口参数是主机名字,由应用程序指定,DNS解析器将查询到的IP地址返回给应用程序;为实现端口号更新,将此库函数入口参数增加一个端口号,为应用程序希望访问的服务端口,同时DNS解析器可以向IPv4主机应用程序返回更新的服务端口,以使IPv4主机可以利用新服务端口访问IPv6的DNS服务器。
经过上述配置后,IPv4主机上的应用程序便可以访问IPv6节点的服务,如www(万维网)服务。
步骤53通过所述的扩展DNS查询函数查询域名及服务端口号,即DNS解析器在DNS查询函数中指定待查询的域名和服务端口号;也就是说,IPv4主机的DNS解析器构造DNS查询报文,该查询报文的查询问题中除了对A类型的查询外,还包括上述的扩展类型端口号查询,其中查询类型指定为端口号类型(30),查询名指定为应用程序指定的端口号的字符串,格式采用与域名相同的存储格式,如端口号80表示为2800;步骤54所述构造的DNS查询报文被发往IPv4 DNS Server,由IPv4DNS Server经NAT-PT网关向IPv6 DNS Server发送,或者,直接经过NAT-PT网关发送给IPv6 DNS Server;当通过IPv4 DNS Server向IPv6 DNS Server发送时,IPv4 DNS Server接收到该查询报文按照原来的处理,查找A类型问题的域名,对于新的端口类型的问题,由于不识别类型,可以不作处理,直接向NAT-PT网关发送;步骤55所述的DNS查询报文在发给IPv6DNS Server的过程中,首先需要经过NAT-PT网关,此时,NAT-PT网关中的DNS-ALG会按照RFC 2766的规定将A类型问题修改为AAAA类型,用于请求相应的IPv6地址,对于新增端口类型不作处理;步骤56所述的DNS查询报文被IPv6 DNS Server接收后,则按照原来的处理,查找到AAAA类型问题的域名,并返回DNS应答报文,对于新的端口类型的问题,由于不识别类型,可以不作处理;步骤57所述的DNS查询报文对应的由IPv6DNS返回的DNS应答报文返回过程中经过NAT-PT网关时,DNS-ALG按照RFC 2766的规定将AAAA类型应答记录修改为A类型;对于DNS应答报文中问题部分包含的端口类型,则可以将端口类型问题的查询名中的端口号取出,与应答记录中的IPv6地址一起做IPv4地址+端口转换,并保存映射关系,然后将转换后的IPv4地址替换应答纪录的IPv6地址,将端口信息保存在新建的端口类型的应答纪录中,注意查询名不能使用压缩格式;如果问题部分中不包含端口类型,则对于应答中的IPv6地址到IPv4地址的映射仍然采用RFC 2766的方式做,即没有端口转换;步骤58IPv4主机接收到DNS应答报文,将通过扩展的DNS查询函数返回查询获得的服务的端口信息;具体为检查DNS应答报文中的应答记录是否携带端口类型的纪录,如果不存在,则只返回给应用程序解析到的IPv4地址,否则通过扩展的DNS查询函数也返回解析到的服务的端口;步骤59IPv4主机应用程序使用解析到的IPv4地址和服务的端口访问所需的服务,即访问IPv6主机的IPv4报文中目的地址和目的端口使用解析到的地址和服务端口信息;步骤510当该IPv4报文经过NAT-PT网关时,NAT-PT会根据IPv4目的地址+端口号信息查找保存的映射表,找到对应的IPv6地址+端口号信息,并据此将IPv4报文转换为IPv6报文,发送给目的IPv6主机,从而实现了基于端口的地址转换处理。
从上述过程可以看同出,本发明的实现可以保证在NAT-PT网关上可以自动为由IPv4到IPv6的报文进行基于端口信息的地址转换处理,如图6所示,从而提高了IPv4地址的利用率。
在本发明中,考虑到需要与现有的相关处理方式兼容,在本发明的实施过程中还需要注意以下问题。
1,对于不支持扩展DNS的客户机和服务器,可以忽略端口号类型。
2,对于不带端口号类型问题纪录的DNS报文,NAT-PT网关的DNS-ALG按照RFC 2766的规定处理。
即本发明的方法向前兼容,支持原有方法的设备不受影响。
3,应用程序只需要对第一个主动发起到服务端口的访问采用带端口号类型的DNS请求,后续的连接NAT-PT网关会根据来自IPv6侧的报文端口信息完成正常的端口号转换。
4,作为可选方式,DNS客户机和服务器检索和维护本地域名Cache时,考虑增加IP地址+端口。
5,本发明同样可以适用于IPv4的NAT应用中。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。
权利要求
1.一种由IPv4到IPv6网络的基于端口的报文转换实现方法,其特征在于,包括A、在域名系统DNS报文中携带用于查询端口信息的端口号类型字段;B、IPv4网络中的主机基于所述的DNS报文中的端口号类型字段查询获取IPv6报文的服务端口信息;C、当IPv4网络中的主机向IPv6网络发送的报文经过网络地址协议转换NAT-PT网关时,由NAT-PT网关基于所述的服务端口信息对所述报文进行转换处理,并发送给IPv6网络。
2.根据权利要求1所述的由IPv4到IPv6网络的基于端口的报文转换实现方法,其特征在于,所述的步骤A包括在DNS查询或响应报文中扩展增加端口类型字段。
3.根据权利要求1或2所述的由IPv4到IPv6网络的基于端口的报文转换实现方法,其特征在于,所述的步骤B包括B1、当IPv4网络中的主机需要访问IPv6网络中的主机服务时,IPv4网络中的主机构造DNS查询报文,报文中包含扩展的端口号类型字段,并指定端口信息;B2、利用所述的DNS查询报文,IPv4网络中的主机可以查询获取到IPv6网络中目的主机的IP地址信息及实际的服务端口信息。
4.根据权利要求3所述的由IPv4到IPv6网络的基于端口的报文转换实现方法,其特征在于,所述的步骤B2包括B21、将所述的DNS查询报文发送到NAT-PT网关后,由NAT-PT网关将对所述DNS查询报文中的IP地址查询问题进行处理,并发送给IPv6网络中的DNS服务器;B22、IPv6网络中的DNS服务器将IPv4网络中的主机查询的目的主机的IP地址信息返回给NAT-PT网关;B23、NAT-PT网关将所述的IPv6主机的IP地址信息和端口号信息进行转换处理,并将其使用的实际的服务端口信息承载于端口类型字段中发送给IPv4主机。
5.根据权利要求4所述的由IPv4到IPv6网络的基于端口的报文转换的实现方法,其特征在于,所述的步骤B21具体包括IPv4主机将所述的DNS查询报文经IPv4网络中的DNS服务器或直接发送到NAT-PT网关,之后,由NAT-PT网关将对所述DNS查询报文中的IP地址查询问题进行处理,并发送给IPv6网络中的DNS服务器。
6.根据权利要求4所述的由IPv4到IPv6网络的基于端口的报文转换的实现方法,其特征在于,所述的步骤B23包括在NAT-PT网关上检查IPv6主机使用的服务端口信息是否发生变化,如果发生变化,则将其使用的实际的服务端口信息承载于端口类型字段中发送给IPv4主机,否则,不改变端口类型字段中承载的信息。
7.根据权利要求4所述的由IPv4到IPv6网络的基于端口的报文转换的实现方法,其特征在于,所述的步骤B23还包括在NAT-PT网关保存IPv4地址和端口号信息与IPv6地址和端口号信息间的映射关系。
8.根据权利要求3所述的由IPv4到IPv6网络的基于端口的报文转换的实现方法,其特征在于,所述的步骤C包括IPv4主机使用获得的IPv4地址和端口号信息构造访问IPv6主机的报文;当所述的报文经过NAT-PT网关时,由NAT-PT网关根据报文中IPv4地址和端口号信息,以及保存的对应的IPv6地址和端口号信息对所述报文进行转换处理,转换处理后的报文发送给IPv6网络。
全文摘要
本发明涉及一种由IPv4到IPv6网络的基于端口的报文转换实现方法。本发明主要包括首先,在域名系统DNS报文中携带用于查询端口信息的端口号类型字段;之后,IPv4网络中的主机基于所述的DNS报文中的端口号类型字段查询获取IPv6报文的服务端口信息;这样,当DNS报文经过网络地址协议转换NAT-PT网关时,由NAT-PT网关基于所述的服务端口信息对所述DNS报文进行转换处理,并将转换后的端口信息通过DNS报文返回给IPv4网络主机。本发明使得由IPv4网络到IPv6网络的基于端口的报文转换过程可以自动实现。因而,保证了相应的IPv4地址可以在被重复应用,有效提高了IPv4地址资源的利用率。
文档编号H04L29/06GK1885818SQ20051007739
公开日2006年12月27日 申请日期2005年6月23日 优先权日2005年6月23日
发明者梁铷 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1