CN1525699A - 一种可穿越网络地址翻译的自动隧道的方法 - Google Patents

一种可穿越网络地址翻译的自动隧道的方法 Download PDF

Info

Publication number
CN1525699A
CN1525699A CNA031589731A CN03158973A CN1525699A CN 1525699 A CN1525699 A CN 1525699A CN A031589731 A CNA031589731 A CN A031589731A CN 03158973 A CN03158973 A CN 03158973A CN 1525699 A CN1525699 A CN 1525699A
Authority
CN
China
Prior art keywords
address
client
ipv6
server
nat
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA031589731A
Other languages
English (en)
Other versions
CN1243437C (zh
Inventor
吴贤国
刘敏
张天乐
石晶林
李忠诚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SHANGHAI YINGLIAN SOMATOSENSORY INTELLIGENT TECHNOLOGY CO., LTD.
Original Assignee
Institute of Computing Technology of CAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN 03158973 priority Critical patent/CN1243437C/zh
Publication of CN1525699A publication Critical patent/CN1525699A/zh
Application granted granted Critical
Publication of CN1243437C publication Critical patent/CN1243437C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)
  • Small-Scale Networks (AREA)

Abstract

本发明涉及互联网技术领域,一种可穿越NAT(网络地址翻译)的自动隧道技术,也就是该隧道技术允许隧道主体存在任何类型和任意数量的NAT,它是一种新的IPv4互联网向IPv6互联网过渡时期的隧道技术。目的是为了使NAT域内的IPv6/IPv4双栈节点获得全球端到端IPv6连接。利用该隧道技术NAT域内的IPv6/IPv4双栈节点将通过中间服务器和不在NAT域内的IPv6节点进行通信,对同为NAT域内的IPv6/IPv4双栈节点之间。

Description

一种可穿越网络地址翻译的自动隧道的方法
技术领域
本发明涉及互联网技术领域,特别是一种可穿越NAT(网络地址翻译)的自动隧道方法。该方法利用现有的IPv4网络路由体系传输IPv6数据包,是一种IPv4向IPv6过渡时期的隧道技术,用以实现IPv4向IPv6的过渡。
背景技术
NAT(网络地址翻译)技术是解决IPv4地址不足的一种有效方法,它在中国的部署极其广泛。NAT按映射关系不同可以分为3种类型:“cone”NAT、“Restricted”NAT、“Symmetric”NAT。
NAT收到来自内部网络的数据包时,将数据包的IPv4源地址(私有地址)转换成另一地址(公有地址),我们称该地址为外部地址,将TCP或UDP源端口号转换成另一端口号,我们称该端口号为外部端口,然后向外部网络发送转换后的数据包。并在它维护的转换表中增加源地址、源端口和外部地址、外部端口之间的映射关系。外部网络收到数据包后如果要往回发送数据包,它将外部地址设为数据包的目的地址,将外部端口设为数据包的目的端口。当NAT收到来自外部网络的数据包时,根据转换表中的映射关系将数据包的IPv4目的地址和TCP或UDP目的端口(也就是原来的外部地址和外部端口)转换成源地址和源端口后发送给内部网络。
“cone”NAT中,转换表的映射关系为<源地址,源端口,外部地址,外部端口>。只要来自外部网络的数据包中的<目的地址,目的端口>符合映射关系中的<外部地址,外部端口>,它就将之转化为映射关系中的<源地址,源端口>,然后向内部网络发送该数据包。
“Restricted”NAT中,转换表的映射关系为<源地址,源端口,外部地址,外部端口,目的地址,目的端口>或<源地址,源端口,外部地址,外部端口,目的地址>。如果来自外部网络的数据包的<目的地址、目的端口、源地址、源端口>符合映射关系中的<外部地址,外部端口,目的地址,目的端口>或<外部地址,外部端口,目的地址>,它就将数据包的<目的地址,目的端口>转化为映射关系中的<源地址,源端口>,然后向内部网络发送该数据包。
上述两种NAT,映射关系是一对一,也就是说只要原象<源地址,源端口>不变,映射后的象<外部地址,外部端口>也不变。”Symmetric”NAT不同,它的映射关系是一对多,对于同一个原象<源地址,源端口>,根据数据包不同的目的地址,会被映射成不同的象<外部地址,外部端口>。
NAT在解决IPv4地址不足的同时也破坏了IP协议端到端的特性,而IPv4协议本身在地址分配策略、安全、接入、Qos、移动性等方面存在诸多不足,IPv6就是为解决这些问题而设计的。随着政府和企业对IPv6互联网研究和运行投入的不断增加,IPv4互联网向IPv6互联网的转变势在必行。但这种转变不是一蹴而就的,它需要一个漫长的过程。目前,IETF已经提出了从IPv4过渡到IPv6的3种主要迁移机制:双栈、协议翻译、隧道。
双栈节点同时实现了IPv4和IPv6协议,可以和IPv4或IPv6节点建立通信。节点根据目的IP地址决定采用IPv4还是IPv6协议发送或接收数据包。目前双栈是运行最广泛的迁移机制。但双栈只允许相同IP版本之间的通信。
协议翻译就是将数据包透明的从一种协议翻译成另一种协议。这样使得纯IPv6节点可以和纯IPv4节点之间建立通信,而不需要修改任何软件。最有名的协议翻译机制是NAT-PT。NAT-PT采用SIIT(StatelessIP/ICMP T路由广告nslator)进行协议翻译,当IPv6节点和IPv4节点需要建立通信时,NAT-PT为IPv6节点分配一个临时的IPv4地址,并在会话期间维护IPv4地址和IPv6地址的映射关系。同时它还可以提供应用层网关的功能,执行IPv4和IPv6 DNS请求和应答的翻译。
隧道技术的实质是将IPv6(IPv4)数据包封装在IPv4(IPv6)数据包中,利用已有的IPv4(IPv6)路由体系进行传输,从而解决被不兼容的网络分离的采用相同IP版本的节点之间相互通信的问题。在过渡前期,IPv4网络占主导地位,IPv6网络好比是整个IPv4汪洋中的孤立岛屿,这些岛屿之间的通信可采用IPv6-over-IPv4隧道来实现。过渡后期,IPv6网络占统治地位,类似地,各个孤立IPv4岛屿之间的通信可采用IPv4-over-IPv6隧道来实现。
通常隧道由3部分组成:隧道首节点,对数据包进行封装;隧道尾节点,对数据包进行解封装;隧道主体,实际上是一条IPv6或IPv4路径,将封装后的数据包从隧道首节点传送到隧道尾节点。根据各部分实现方式的不同,隧道技术包括6to4、ISATAP、6over4、Tunnel Broker、DSTM等。
目前绝大部分隧道技术都采用将IPv6数据包封装在IPv4载荷中的方式解决被IPv4网络分离的两个IPv6节点之间通信的问题。但是,这些隧道技术都无法支持NAT域内的IPv6节点和其他IPv6节点之间的通信,也就是说,这些隧道不允许隧道主体上有NAT存在。原因是目前的NAT基本上不允许IPv6-in-IPv4数据包(也就是IPv4头部的协议类型字段为41的数据包)通过。NAT收到IPv6-in-IPv4数据包后,由于不认识而将之丢弃。
发明内容
本发明提出一种可穿越NAT的自动隧道的方法,目的是解决NAT域内的IPv6节点和其他IPv6节点(可以在NAT域内,也可以不是)之间互相通信的问题。
本发明的技术方案:
因此提出了一种将IPv6数据包封装在UDP载荷中的隧道技术,我们称之为“SilkRoad”,相应的,我们称这种隧道为SilkRoad隧道,SilkRoad不受隧道主体上存在任意类型和任意数量的NAT的影响,可将IPv6数据包从隧道首节点传送到隧道尾节点。
SilkRoad隧道定义了3个通信实体,用于实现上述的方法:
1.Silkroad客户端(以下简称客户端),表示NAT域内的IPv6/IPv4双栈节点,支持Silkroad隧道功能,有一个全球单播聚类IPv6地址(我们称之为SilkRoad地址)和一个私有IPv4地址。
2.Silkroad服务器(以下简称服务器),在NAT域外,表示为客户端分配IPv6地址并具有路由功能的IPv6/IPv4双栈节点,支持Silkroad隧道功能,有一个公有IPv4地址,它可以有通向IPv6骨干网的路由,也可以有通向孤立IPv6网络的路由。
3.普通IPv6节点,表示除客户端和服务器以外的其他IPv6节点。
附图说明
图1为服务器分配给客户端的SilkRoad地址格式图。
图2为SilkRoad定义的数据包格式图。
图3为SilkRoad定义的维持包格式图。
图4为SilkRoad的路由体系图。
图5为客户端启动后的初始化配置过程图。
图6为相同链路上客户端之间的通信过程图。
图7为位于不同NAT域客户端之间通信的第一种情况图。
图8为位于不同NAT域客户端之间通信的第二种情况图。
图9为位于不同NAT域客户端之间通信的第三种情况图。
图10为客户端到普通IPv6节点的通信过程图。
图11为普通IPv6节点到客户端的通信过程图。
客户端通信时采用的IPv6地址是一种规定格式的地址,它包括64位的IPv6地址前缀和64位的接口标识符,接口标识符由伪外部端口字段、NAT类型标志位字段、Silkroad地址标志位字段和伪外部地址字段组成,如附图1所示。各部分说明如下:
◆IPv6前缀:
IANA正式分配的全球聚类单播地址前缀或“site-local”地址前缀,不可以是“1ink-local”地址前缀或组播地址前缀。
◆伪外部端口:
外部端口(经NAT映射后的端口)和0xFFFF与或后的16位数值。
SilkRoad客户端启动后向服务器发送一个初始化数据包,该包经过NAT时其UDP端口被映射成一个不同的端口,我们称之为外部端口。服务器从接收到的初始化数据包中获得此端口。考虑到NAT会删除过期的映射关系,客户端(或服务器)将周期性的向NAT发送数据包以维持这种映射关系,所以NAT的转换表中始终保留该映射关系。对外部端口进行与或操作的目的是为了防止某些“自作聪明”的NAT将UDP数据包载荷,即IPv6头部+IPv6载荷中的外部端口进行转化。
◆NAT类型标志位:
长度为2位,用来表示客户端所在NAT的类型。00表示客户端位于“cone”NAT域,10表示客户端位于“Restricted”NAT域,11表示客户端位于“Symmetric”NAT域。
◆Silkroad地址标志位:
长度为14位,设为0,表示该地址是一Silkroad地址。将该字段放在接口标识符中间的目的在于避免和其他地址冲突,因为目前只要不是随机分配的接口标识符,其中间16位都是FFFE。
◆伪外部地址:
外部地址即经NAT映射后的地址和0xFFFFFFFF与或后的32位数值。客户端启动后向服务器发送一个初始化数据包,该包经过NAT时其私有IPv4地址被映射成一个公有IPv4地址,我们称之为外部地址。服务器从接收到的初始化数据包中获得此地址。考虑到NAT会删除过期的映射关系,客户端(或服务器)将周期性的向NAT发送数据包以维持这种映射关系,所以NAT的转换表中始终保留该映射关系。对外部地址进行与或操作的目的是为了防止某些“自作聪明”的NAT将UDP数据包载荷,即IPv6头部+IPv6载荷中的外部端口进行转化。客户端和其他IPv6节点通信时发送或接收的数据包我们称之为Silkroad数据包,它由IPv4头部、UDP头部、IPv6头部以及IPv6载荷组成,如附图2所示。具体说明如下:
●IPv4头部:
源IPv4地址为客户端的IPv4地址(私有地址),目的IPv4地址为服务器的IPv4地址(如果目的地是普通IPv6节点)或对方客户端经NAT映射后的外部地址(如果目的地是另一客户端)。
●UDP头部:
源端口为5188,目的端口为5188(如果目的地是普通IPv6节点)或对方客户端经NAT映射后的外部端口(如果目的地是另一客户端)。
●IPv6头部:
包含源IPv6地址和目的IPv6地址,其中至少有一个是SilkRoad地址。
●IPv6载荷:
由0或若干个IPv6扩展头部,以及上层协议数据单元(PDU)组成。
为了维持NAT中的映射关系,如“cone”NAT的<源地址,源端口,目的地址,目的端口>。客户端需要周期性的向NAT发送数据包,我们称这种数据包为维持包,如附图3所示。在维持包的IPv6头部中,下一跳字段设为59,表示没有IPv6载荷。
Silkroad的路由体系如附图4所示。客户端通过SilkRoad隧道接口发送或接收数据包,SilkRoad隧道接口是一个逻辑接口,它会自动将IPv6数据包封装在UDP载荷中进行发送。同样,Silkroad隧道接口接收到的数据包肯定是一个封装了IPv6报文的UDP数据包。客户端有一个缺省路由(∷/0),它将所有IPv6地址视为同一链路上的地址并使用SilkRoad隧道接口进行转发。缺省路由的下一跳地址为IPv6数据包中的目的地址,下一跳接口为SilkRoad隧道接口。服务器有通向IPv6骨干网以及各孤立IPv6网络的路由,也有通向各客户端的路由。IPv6骨干网以及各孤立IPv6网络中任何一个IPv6节点发送的数据包,只要目的地址前缀是服务器分配给客户端的地址前缀,都将被路由至服务器(图中以地址前缀2001:*/64为例),服务器再通过去往客户端的路由将数据包转发至客户端。同样,客户端可通过服务器和IPv6骨干网以及各孤立IPv6网络中的任何一个IPv6节点实现互访。
客户端每次启动后首先向服务器注册以获得一个SilkRoad地址,这样才能和其他IPv6节点建立通信,这个过程我们称之为客户端的初始化配置,如附图5所示。
客户端的初始化配置通过向服务器发送一系列路由请求报文来完成,服务器以路由广告报文作为响应,路由广告报文中含有客户端被NAT映射后的外部地址和外部端口信息。通过此过程客户端获得一个SilkRoad地址并判断它位于何种NAT域内。
客户端的初始化配置过程如下:
1、客户端向首选的服务器(图中为服务器1)发送一个路由请求报文,报文的源IPv6地址是一个“1ink-local“地址,其F字段值为00。
2、服务器1收到路由请求报文后发送一个路由广告报文作为响应,因为路由请求报文显示客户端位于“cone”NAT域内(F字段设为00),所以它选择一个不同的IPv4地址作为源地址发送路由广告报文,如果客户端能收到此报文,表明客户端确实位于“cone”NAT域内。
3、如果客户端没有收到此路由广告报文,它将再向服务器1发送一个路由请求报文,路由请求报文的源IPv6地址是另一个“link-local“地址,其F字段值为10。
4、服务器1收到路由请求报文后发送一个路由广告报文作为响应,因为路由请求报文显示客户端位于“Restricted”NAT域内,它将以路由请求报文中的目的IPv4地址作为源IPv4地址发送路由广告报文,客户端如果收到此报文,表示它位于一个“Restricted”NAT域内。
5、客户端为了明确是否位于“Symmetric”NAT域内,将再向另一个服务器(图5中为服务器2)发送路由请求报文,服务器2收到路由请求报文后发送一个路由广告报文作为响应。
6、客户端收到此路由广告报文后和原先收到的路由广告报文作比较,如果报文包含的用来构造SilkRoad地址的信息相同,表示NAT的地址端口映射关系是一一对应的。如果不同,表示NAT将相同的内部地址和端口映射成了不同的外部地址和端口,映射关系是一对多,所以客户端认为它位于“Symmetric”NAT域。
根据第2、4或6步收到的路由广告报文,  客户端按如下构造一个SilkRoad地址:
●地址的前64位设置为路由广告报文中的“前缀信息选项”(如2001:***/64)。
●接下去的16位设为路由广告报文中包含的外部端口。
●接下去的2位设为00(如果客户端位于“cone”NAT后)或10(如果客户端位于“Restricted”NAT后)或11(如果客户端位于“Symmetric”NAT后)。
●接下去的14位设为0。
●最后32位设为路由广告报文包含的外部地址。
客户端和其他IPv6节点之间的通信情况分以下3种情况:
一、通信对方是同一链路上的客户端;
对于目的地是相同链路上客户端的数据包,SilkRoad隧道接口采用SilkRoad维持包的交换代替邻居发现的地址决议过程,交换SilkRoad维持包是为了获得通信对方在该链路上的IPv4地址以便可以直接进行通信;
为了判断目的地址所对应的主机是否位于同一链路,客户端会检查它的SilkRoad邻居缓存,每个客户端都会向和它相连的IPv4链路发送SilkRoad维持包以表明它在该链路上的存在,所有收到这些SilkRoad维持包的客户端将包中的SilkRoad地址和IPv4地址放入它的SilkRoad邻居缓存;因此,如果某个目的SilkRoad地址位于SilkRoad邻居缓存,那么该地址对应的主机肯定位于相同的链路上,相同链路上客户端之间的通信如附图6所示。通信过程如下:
1、客户端1,本主机发送一个维持包,其IPv4目的地址为一保留的IPv4多播地址224.0.0.1(由IANA分配)。维持包的IPv6头部的目的IPv6地址为客户端2,目的主机的SilkRoad地址。
2、客户端2收到SilkRoad维持包后判断客户端1的IPv4地址是否属于同一链路、UDP端口是否为5188。若地址端口都得到确认,客户端2向客户端1发送一个维持包作为响应,客户端1收到该包后获得客户端2的IPv4地址(此地址是NAT域内的私有地址)。
3、接着客户端1直接向客户端2发送数据,不需要经过NAT,更不需要经过服务器。
二、通信对方另一NAT域的客户端;
这种情况又可细分为3种情况:
1.本主机位于“cone”NAT域或“Restricted”NAT域,目的主机位于“cone”NAT域
它们之间的通信可以直接进行,如附图7所示。因为“cone”NAT不会对任何源IPv4地址加以限制,所以客户端1可以直接向客户端2发送数据包来创建对方NAT转换表中的地址端口映射关系。若客户端1位于“Restricted”NAT,因为在它向客户端2发送数据后NAT1已经建立了目的地为NAT2的映射关系,所以客户端2的数据包可以通过NAT1;
2.目的主机位于“Restricted”NAT域
SilkRoad隧道接口采用维持包的交换来代替邻居发现的地址决议过程,使得对方所在NAT创建通信必须的地址端口映射关系,之后两个客户端之间就可以直接交换数据包,如附图8所示。具体通信过程如下:
●客户端1(即本主机)向客户端2(即目的主机)发送一个维持包,目的是为了在“Restricted”NAT1建立目的地为NAT2的映射关系,以便来自NAT2的数据可以通过NAT1。如果NAT1是“cone”类型,则可以省略这一步。
●接着客户端1向服务器1(即客户端1注册的服务器)发送维持包,目的IPv4地址为服务器1的公有IPv4地址,目的IPv6地址为客户端2的地址。
●服务器1收到此包后剥去IPv4头部和UDP头部,新的数据包只有一个IPv6头部。通过IPv6网将新数据包转发至服务器2(即客户端2注册的服务器)。图中虚线表示该包走的是IPv6网络。
●服务器2收到此包后从目的IPv6地址中提取出外部地址和外部端口,将此包封装在UDP中后发送给客户端2。UDP的目的端口为提取的外部端口,源端口为5188,IPv4头部的源地址为服务器2的IPv4地址,目的地址为提取的外部地址。
●客户端2收到来自服务器2的数据包后从源IPv6地址中提取出客户端1的外部地址和外部端口,并从客户端1的地址中获知它不位于“Symmetric”NAT域。然后向客户端1发送一个维持包,其中IPv4源地址为客户端2的私有地址,IPv4目的地址为提取的外部地址。UDP源端口为5188,目的端口为提取的外部端口。即使NAT1是“Restricted”类型,因为第一步中NAT1已经建立了到NAT2的映射关系,所以该包可以通过NAT1。
接下去客户端1就可以直接向客户端2发送数据包,不需要中间服务器的转发。发送之前从目的IPv6地址也就是客户端2的SilkRoad地址中提取出外部地址和外部端口,然后将数据包封装在UDP中,目的IPv4地址为提取的外部地址,源IPv4地址为本机的私有IPv4地址,目的端口为提取的外部端口,源端口为5188。客户端2收到此包后进行解封装,如果它要向客户端1发送数据包,必须执行同客户端1一样的封装过程。
3.本主机或对方位于“Symmetric”NAT域
它们之间通信的数据包必须通过服务器转发,如附图9所示。具体过程如下:
●客户端1,本主机将要发送的数据包封装在UDP中,目的IPv4地址为服务器1的公有IPv4地址,源IPv4地址为本机的私有IPv4地址,目的端口和源端口均为5188。
●服务器1(即客户端1注册的服务器)剥去IPv4和UDP头部,通过IPv6网将没有封装的IPv6数据包转发至服务器2。图中虚线表示该包走的是IPv6网络。
●服务器2(即客户端2注册的服务器)收到此包后从目的IPv6地址中提取出外部地址和外部端口,将此包封装在UDP中然后发送给客户端2目的主机。UDP的目的端口为提取的外部端口,源端口为5188,IPv4头部的源地址为服务器2的IPv4地址,目的地址为提取的外部地址。
●客户端2收到来自服务器2的数据包后如果要向客户端1发送数据包,则将该包封装在UDP中,目的IPv4地址为服务器2的公有IPv4地址,源IPv4地址为本机的私有IPv4地址,目的端口和源端口均为5188。
三、通信对方是普通IPv6节点
客户端和普通IPv6节点之间通信的数据包必须通过服务器转发,客户端和服务器之间采用“SilkRoad”隧道传送数据流,服务器和普通IPv6节点之间的数据流直接利用IPv6网络进行传送或通过IPv6-over-IPv4隧道利用IPv4网络进行传送。
客户端到普通IPv6节点的通信过程如附图10所示,具体描述如下:
●客户端将要发送的数据包封装在UDP中,目的IPv4地址为服务器的公有IPv4地址,源IPv4地址为本机的私有IPv4地址,目的端口和源端口均为5188。
●服务器剥去IPv4和UDP头部,通过IPv6网将没有封装的IPv6数据包转发给IPv6节点。图中虚线表示该包走的是IPv6网络。
●IPv6节点向客户端发回的数据包最终将被路由至服务器。图中虚线表示该包走的是IPv6网络。
●服务器收到此包后从目的IPv6地址中提取出外部地址和外部端口,并将该数据包封装在UDP中,其IPv4头部的源IPv4地址为服务器的公有IPv4地址,目的地址为提取的外部地址,源端口为5188,目的端口为提取的外部端口。
普通IPv6节点到客户端的通信过程,如附图11所示,具体描述如下:
●IPv6节点向客户端发送数据包,目的IPv6地址为客户端的SilkRoad地址。图中虚线表示该包走的是IPv6网络。
●该数据包最终被路由至服务器,服务器从目的IPv6地址中提取出外部地址和外部端口,并将该数据包封装在UDP中,其IPv4头部的源IPv4地址为服务器的公有IPv4地址,目的地址为提取的外部地址,源端口为5188,目的端口为提取的外部地址。然后将封装后的数据包发送给客户端。
●客户端将要发送的数据包封装在UDP中,目的IPv4地址为服务器的公有IPv4地址,源IPv4地址为本机的私有IPv4地址,目的端口和源端口均为5188。
●服务器剥去IPv4和UDP头部,通过IPv6网将没有封装的IPv6数据包转发给IPv6节点。图中虚线表示该包走的是IPv6网络。

Claims (7)

1、一种可穿越NAT的自动隧道的方法,其特征在于,提出了一种将IPv6数据包封装在UDP载荷中的隧道技术,称这种隧道为SilkRoad隧道,SilkRoad不受隧道主体上存在任意类型和任意数量的NAT的影响,可将IPv6数据包从隧道首节点传送到隧道尾节点。
2、根据权利要求1所述的方法,其特征在于,该隧道技术定义了3个通信实体,用于实现上述的方法:
Silkroad客户端,表示NAT域内的IPv6/IPv4双栈节点,支持Silkroad隧道功能,有一个全球单播聚类IPv6地址和一个私有IPv4地址;
Silkroad服务器,在NAT域外,表示为客户端分配IPv6地址并具有路由功能的IPv6/IPv4双栈节点,支持Silkroad隧道功能,有一个公有IPv4地址,它可以有通向IPv6骨干网的路由,也可以有通向孤立IPv6网络的路由;
普通IPv6节点,表示除客户端和服务器以外的其他IPv6节点。
3.根据权利要求1所述的方法,其特征在于,客户端通信时采用的IPv6地址是一种规定格式的地址,它包括64位的IPv6地址前缀和64位的接口标识符,接口标识符由伪外部端口字段、NAT类型标志位字段、Silkroad地址标志位字段和伪外部地址字段组成,各部分说明如下:
◆IPv6前缀:
IANA正式分配的全球聚类单播地址前缀或“site-local”地址前缀,不可以是“link-local”地址前缀或组播地址前缀;
◆伪外部端口:
外部端口,即经NAT映射后的端口和0xFFFF与或后的16位数值,SilkRoad客户端启动后向服务器发送一个初始化数据包,该包经过NAT时其UDP端口被映射成一个不同的端口,我们称之为外部端口;服务器从接收到的初始化数据包中获得此端口,考虑到NAT会删除过期的映射关系,客户端或服务器,将周期性的向NAT发送数据包以维持这种映射关系,所以NAT的转换表中始终保留该映射关系,对外部端口进行与或操作的目的是为了防止某些NAT将UDP数据包载荷,即IPv6头部+IPv6载荷中的外部端口进行转化;
◆NAT类型标志位:
长度为2位,用来表示客户端所在NAT的类型,00表示客户端位于“cone”NAT域,10表示客户端位于“Restricted”NAT域,11表示客户端位于“Symmetric”NAT域;
◆Silkroad地址标志位:
长度为14位,设为0,表示该地址是一Silkroad地址,将该字段放在接口标识符中间的目的在于避免和其他地址冲突,因为目前只要不是随机分配的接口标识符,其中间16位都是FFFE;
◆伪外部地址:
外部地址,即经NAT映射后的地址和0xFFFFFFFF与或后的32位数值,客户端启动后向服务器发送一个初始化数据包,该包经过NAT时其私有IPv4地址被映射成一个公有IPv4地址,称之为外部地址,服务器从接收到的初始化数据包中获得此地址,考虑到NAT会删除过期的映射关系,客户端或服务器,将周期性的向NAT发送数据包以维持这种映射关系,所以NAT的转换表中始终保留该映射关系,对外部地址进行与或操作的目的是为了防止某些NAT将UDP数据包载荷,即IPv6头部+IPv6载荷中的外部端口进行转化。
4、根据权利要求1所述的方法,其特征在于,客户端和其他IPv6节点通信时发送或接收的数据包由IPv4头部、UDP头部、IPv6头部以及IPv6载荷组成;
具体说明如下:
·IPv4头部:
源IPv4地址为客户端的IPv4地址,即私有地址,目的IPv4地址为服务器的IPv4地址,如果目的地是普通IPv6节点或对方客户端经NAT映射后的外部地址,如果目的地是另一客户端;
·UDP头部:
源端口为5188,目的端口为5188,如果目的地是普通IPv6节点或对方客户端经NAT映射后的外部端口,如果目的地是另一客户端;
·IPv6头部:
包含源IPv6地址和目的IPv6地址,其中至少有一个是SilkRoad地址;
·IPv6载荷:
由O或若干个IPv6扩展头部,以及上层协议数据单元,即PDU组成;为了维持NAT中的映射关系,如“cone”NAT的<源地址,源端口,目的地址,目的端口>,客户端需要周期性的向NAT发送数据包,称这种数据包为维持包,在维持包的IPv6头部中,下一跳字段设为59,表示没有IPv6载荷。
5.根据权利要求1所述的方法,其特征在于,客户端通过SilkRoad隧道接口发送或接收数据包,SilkRoad隧道接口是一个逻辑接口,它会自动将IPv6数据包封装在UDP载荷中进行发送,同样,Silkroad隧道接口接收到的数据包肯定是一个封装了IPv6报文的UDP数据包,客户端有一个缺省路由(∷/0),它将所有IPv6地址视为同一链路上的地址并使用SilkRoad隧道接口进行转发,缺省路由的下一跳地址为IPv6数据包中的目的地址,下一跳接口为SilkRoad隧道接口,服务器有通向IPv6骨干网以及各孤立IPv6网络的路由,也有通向各客户端的路由,IPv6骨干网以及各孤立IPv6网络中任何一个IPv6节点发送的数据包,只要目的地址前缀是服务器分配给客户端的地址前缀,都将被路由至服务器,以地址前缀2001:*/64为例,服务器再通过去往客户端的路由将数据包转发至客户端;同样,客户端可通过服务器和IPv6骨干网以及各孤立IPv6网络中的任何一个IPv6节点实现互访。
6.据权利要求1所述的方法,其特征在于,客户端每次启动后首先向服务器注册以获得一个SilkRoad地址,这样才能和其他IPv6节点建立通信,这个过程我们称之为客户端的初始化配置;
客户端的初始化配置通过向服务器发送一系列路由请求报文来完成,服务器以路由广告报文作为响应,路由广告报文中含有客户端被NAT映射后的外部地址和外部端口信息,通过此过程客户端获得一个SilkRoad地址并判断它位于何种NAT域内;
客户端的初始化配置过程如下:
1、户端向首选的服务器,即服务器1发送一个路由请求报文,报文的源IPv6地址是一个“link-local“地址,其F字段值为00;
2、服务器1收到路由请求报文后发送一个路由广告报文作为响应,因为路由请求报文显示客户端位于“cone”NAT域内,F字段设为00,所以它选择一个不同的IPv4地址作为源地址发送路由广告报文,如果客户端能收到此报文,表明客户端确实位于“cone”NAT域内;
3、如果客户端没有收到此路由广告报文,它将再向服务器1发送一个路由请求报文,路由请求报文的源IPv6地址是另一个“link-local“地址,其F字段值为10;
4、服务器1收到路由请求报文后发送一个路由广告报文作为响应,因为路由请求报文显示客户端位于“Restricted”NAT域内,它将以路由请求报文中的目的IPv4地址作为源IPv4地址发送路由广告报文,客户端如果收到此报文,表示它位于一个“Restricted”NAT域内;
5、客户端为了明确是否位于“Symmetric”NAT域内,将再向另一个服务器,即服务器2发送路由请求报文,服务器2收到路由请求报文后发送一个路由广告报文作为响应;
6、客户端收到此路由广告报文后和原先收到的路由广告报文作比较,如果报文包含的用来构造SilkRoad地址的信息相同,表示NAT的地址端口映射关系是一一对应的;如果不同,表示NAT将相同的内部地址和端口映射成了不同的外部地址和端口,映射关系是一对多,所以客户端认为它位于“Symmetric”NAT域;根据第2、4或6步收到的路由广告报文,客户端按如下构造一个SilkRoad地址:
·地址的前64位设置为路由广告报文中的“前缀信息选项”,如2001:***/64;
·接下去的16位设为路由广告报文中包含的外部端口;
·接下去的2位设为00,如果客户端位于“cone”NAT后或10,如果客户端位于“Restricted”NAT后或11,如果客户端位于“Symmetric”NAT后;
·接下去的14位设为0;
·最后32位设为路由广告报文包含的外部地址;
7.根据权利要求1所述的方法,其特征在于,Client和其他IPv6节点的通信情况有以下3种:
一、通信对方是同一链路上的客户端;
对于目的地是相同链路上客户端的数据包,SilkRoad隧道接口采用SilkRoad维持包的交换代替邻居发现的地址决议过程,交换SilkRoad维持包是为了获得通信对方在该链路上的IPv4地址以便可以直接进行通信;
为了判断目的地址所对应的主机是否位于同一链路,客户端会检查它的SilkRoad邻居缓存,每个客户端都会向和它相连的IPv4链路发送SilkRoad维持包以表明它在该链路上的存在,所有收到这些SilkRoad维持包的客户端将包中的SilkRoad地址和IPv4地址放入它的SilkRoad邻居缓存;因此,如果某个目的SilkRoad地址位于SilkRoad邻居缓存,那么该地址对应的主机肯定位于相同的链路上,相同链路上客户端之间的通信过程如下:
1、客户端1,即本主机发送一个维持包,其IPv4目的地址为一保留的IPv4多播地址224.0.0.1,由IANA分配,维持包的IPv6头部的目的IPv6地址为客户端2,即目的主机的SilkRoad地址;
2、客户端2收到SilkRoad维持包后判断客户端1的IPv4地址是否属于同一链路、UDP端口是否为5188,若地址端口都得到确认,客户端2向客户端1发送一个维持包作为响应,客户端1收到该包后获得客户端2的IPv4地址,此地址是NAT域内的私有地址;
3、接着客户端1直接向客户端2发送数据,不需要经过NAT,更不需要经过服务器;
二、通信对方另一NAT域的客户端;
这种情况又可细分为3种情况:
1、本主机位于“cone”NAT域或“Restricted”NAT域,目的主机位于“cone”NAT域
它们之间的通信可以直接进行,因为“cone”NAT不会对任何源IPv4地址加以限制,所以客户端1可以直接向客户端2发送数据包来创建对方NAT转换表中的地址端口映射关系,若客户端1位于“Restricted”NAT,因为在它向客户端2发送数据后NAT1已经建立了目的地为NAT2的映射关系,所以客户端2的数据包可以通过NAT1;
2、目的主机位于“Restricted”NAT域
SilkRoad隧道接口采用维持包的交换来代替邻居发现的地址决议过程,使得对方所在NAT创建通信必须的地址端口映射关系,之后两个客户端之间就可以直接交换数据包,具体通信过程如下:
·客户端1,即本主机向客户端2,即目的主机发送一个维持包,目的是为了在“Restricted”NAT1建立目的地为NAT2的映射关系,以便来自NAT2的数据可以通过NAT1,如果NAT1是“cone”类型,则可以省略这一步;
·接着客户端1向服务器1,即客户端1注册的服务器发送维持包,目的IPv4地址为服务器1的公有IPv4地址,目的IPv6地址为客户端2的地址;
·服务器1收到此包后剥去IPv4头部和UDP头部,新的数据包只有一个IPv6头部,通过IPv6网将新数据包转发至服务器2,即客户端2注册的服务器,虚线表示该包走的是IPv6网络;
·服务器2收到此包后从目的IPv6地址中提取出外部地址和外部端口,将此包封装在UDP中后发送给客户端2,UDP的目的端口为提取的外部端口,源端口为5188,IPv4头部的源地址为服务器2的IPv4地址,目的地址为提取的外部地址;
·客户端2收到来自服务器2的数据包后从源IPv6地址中提取出客户端1的外部地址和外部端口,并从客户端1的地址中获知它未位于“Symmetric”NAT域,然后向客户端1发送一个维持包,其中IPv4源地址为客户端2的私有地址,IPv4目的地址为提取的外部地址,UDP源端口为5188,目的端口为提取的外部端口,即使NAT1是“Restricted”类型,因为第一步中NAT1已经建立了到NAT2的映射关系,所以该包可以通过NAT1;
接下去客户端1就可以直接向客户端2发送数据包,不需要中间服务器的转发,发送之前从目的IPv6地址也就是客户端2的SilkRoad地址中提取出外部地址和外部端口,然后将数据包封装在UDP中,目的IPv4地址为提取的外部地址,源IPv4地址为本机的私有IPv4地址,目的端口为提取的外部端口,源端口为5188,客户端2收到此包后进行解封装,如果它要向客户端1发送数据包,必须执行同客户端1一样的封装过程;
3、本主机或目的主机位于“Symmetric”NAT域
它们之间通信的数据包必须通过服务器转发,具体过程如下:
·客户端1,即本主机将要发送的数据包封装在UDP中,目的IPv4地址为服务器1的公有IPv4地址,源IPv4地址为本机的私有IPv4地址,目的端口和源端口均为5188;
·服务器1,即客户端1注册的服务器剥去IPv4和UDP头部,通过IPv6网将没有封装的IPv6数据包转发至服务器2,虚线表示该包走的是IPv6网络;
·服务器2,即客户端2注册的服务器收到此包后从目的IPv6地址中提取出外部地址和外部端口,将此包封装在UDP中然后发送给客户端2,即目的主机,UDP的目的端口为提取的外部端口,源端口为5188,IPv4头部的源地址为服务器2的IPv4地址,目的地址为提取的外部地址;
·客户端2收到来自服务器2的数据包后如果要向客户端1发送数据包,则将该包封装在UDP中,目的IPv4地址为服务器2的公有IPv4地址,源IPv4地址为本机的私有IPv4地址,目的端口和源端口均为5188;
三、通信对方是普通IPv6节点
客户端和普通IPv6节点之间通信的数据包必须通过服务器转发,客户端和服务器之间采用“SilkRoad”隧道传送数据流,服务器和普通IPv6节点之间的数据流直接利用IPv6网络进行传送或通过IPv6-over-IPv4隧道利用IPv4网络进行传送;
客户端到普通IPv6节点的通信过程如下:
·客户端将要发送的数据包封装在UDP中,目的IPv4地址为服务器的公有IPv4地址,源IPv4地址为本机的私有IPv4地址,目的端口和源端口均为5188;
·服务器剥去IPv4和UDP头部,通过IPv6网将没有封装的IPv6数据包转发给IPv6节点,虚线表示该包走的是IPv6网络;
·IPv6节点向客户端发回的数据包最终将被路由至服务器,虚线表示该包走的是IPv6网络;
·服务器收到此包后从目的IPv6地址中提取出外部地址和外部端口,并将该数据包封装在UDP中,其IPv4头部的源IPv4地址为服务器的公有IPv4地址,目的地址为提取的外部地址,源端口为5188,目的端口为提取的外部端口;
普通IPv6节点到客户端的通信过程如下:
·IPv6节点向客户端发送数据包,目的IPv6地址为客户端的SilkRoad地址,虚线表示该包走的是IPv6网络;
·该数据包最终被路由至服务器,服务器从目的IPv6地址中提取出外部地址和外部端口,并将该数据包封装在UDP中,其IPv4头部的源IPv4地址为服务器的公有IPv4地址,目的地址为提取的外部地址,源端口为5188,目的端口为提取的外部地址,然后将封装后的数据包发送给客户端;
·客户端将要发送的数据包封装在UDP中,目的IPv4地址为服务器的公有IPv4地址,源IPv4地址为本机的私有IPv4地址,目的端口和源端口均为5188;
·服务器剥去IPv4和UDP头部,通过IPv6网将没有封装的IPv6数据包转发给IPv6节点,虚线表示该包走的是IPv6网络。
CN 03158973 2003-09-17 2003-09-17 一种可穿越网络地址翻译的自动隧道的方法 Expired - Fee Related CN1243437C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 03158973 CN1243437C (zh) 2003-09-17 2003-09-17 一种可穿越网络地址翻译的自动隧道的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 03158973 CN1243437C (zh) 2003-09-17 2003-09-17 一种可穿越网络地址翻译的自动隧道的方法

Publications (2)

Publication Number Publication Date
CN1525699A true CN1525699A (zh) 2004-09-01
CN1243437C CN1243437C (zh) 2006-02-22

Family

ID=34287292

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 03158973 Expired - Fee Related CN1243437C (zh) 2003-09-17 2003-09-17 一种可穿越网络地址翻译的自动隧道的方法

Country Status (1)

Country Link
CN (1) CN1243437C (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1741502B (zh) * 2005-09-23 2010-04-21 清华大学 基于4over6的IPv6和IPv4网间互通的方法
CN101888418A (zh) * 2010-07-12 2010-11-17 中国电信股份有限公司 解决双栈网络中IPv4地址不足的方法及系统
CN101753406B (zh) * 2008-12-03 2012-05-09 迈普通信技术股份有限公司 实现自动隧道二次路由的装置及报文转发方法
CN101232454B (zh) * 2008-02-02 2012-11-21 中国科学院计算技术研究所 一种整合的异构无线网络及其通信方法
CN101741926B (zh) * 2009-12-16 2012-12-19 中兴通讯股份有限公司 站点内自动隧道寻址协议实现方法及装置
CN101800781B (zh) * 2009-02-11 2013-07-03 中国科学院计算机网络信息中心 一种穿越nat的隧道过渡方法及系统
CN109714410A (zh) * 2018-12-24 2019-05-03 上海曼恒数字技术股份有限公司 一种数据传输方法、装置、设备及存储介质
CN114650271A (zh) * 2022-03-23 2022-06-21 杭州迪普科技股份有限公司 全局负载dns邻居站点学习方法及装置

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1741502B (zh) * 2005-09-23 2010-04-21 清华大学 基于4over6的IPv6和IPv4网间互通的方法
CN101232454B (zh) * 2008-02-02 2012-11-21 中国科学院计算技术研究所 一种整合的异构无线网络及其通信方法
CN101753406B (zh) * 2008-12-03 2012-05-09 迈普通信技术股份有限公司 实现自动隧道二次路由的装置及报文转发方法
CN101800781B (zh) * 2009-02-11 2013-07-03 中国科学院计算机网络信息中心 一种穿越nat的隧道过渡方法及系统
CN101741926B (zh) * 2009-12-16 2012-12-19 中兴通讯股份有限公司 站点内自动隧道寻址协议实现方法及装置
CN101888418A (zh) * 2010-07-12 2010-11-17 中国电信股份有限公司 解决双栈网络中IPv4地址不足的方法及系统
CN109714410A (zh) * 2018-12-24 2019-05-03 上海曼恒数字技术股份有限公司 一种数据传输方法、装置、设备及存储介质
CN109714410B (zh) * 2018-12-24 2021-09-10 上海曼恒数字技术股份有限公司 一种数据传输方法、装置、设备及存储介质
CN114650271A (zh) * 2022-03-23 2022-06-21 杭州迪普科技股份有限公司 全局负载dns邻居站点学习方法及装置
CN114650271B (zh) * 2022-03-23 2023-12-05 杭州迪普科技股份有限公司 全局负载dns邻居站点学习方法及装置

Also Published As

Publication number Publication date
CN1243437C (zh) 2006-02-22

Similar Documents

Publication Publication Date Title
CN1140090C (zh) 分组网络中的接口及其操作方法
CN1992667A (zh) 用于隧穿分组的isatap路由器及其方法
KR100694209B1 (ko) IPv4망과 IPv6망간의 ISATAP 터널링 시스템 및그 방법
US6580717B1 (en) Packet communication method and apparatus and a recording medium storing a packet communication program
CN1716954A (zh) 基于过渡机制的IPv6网和IPv4网间互通的方法
JP5239618B2 (ja) アドレス変換装置、方法及びプログラム、並びにノード
US7639686B2 (en) Access network clusterhead for providing local mobility management of a roaming IPv4 node
CN102347993A (zh) 一种网络通信的方法和设备
CN1801764A (zh) 一种基于身份与位置分离的互联网接入方法
WO2010057386A1 (zh) 数据包转发方法、系统及设备
CN1711739A (zh) 支持穿过网络地址转换机制的 6to4遂道协议的方法和设备
CN1513253A (zh) 通过接入网络的隧道传送
US20060146870A1 (en) Transparent communication with IPv4 private address spaces using IPv6
US20070198735A1 (en) Method and system for supporting RSVP in IPv4/IPv6 hybrid network
WO2011120424A1 (en) Method and apparatus for processing packets in ipv6 network
CN1585376A (zh) 一种地址转换方法及实现该方法的混合地址转换路由器
CN1848802A (zh) 基于P2P在IPv4上实现IPv6高性能互联的方法
CN103236964B (zh) 基于Linux的DS-Lite实现方法及其CPE接入设备
US20080225868A1 (en) Allowing IPv4 clients to communicate using Teredo addresses when both clients are behind a NAT
CN1838632A (zh) 移动IPv6报文穿越防火墙的实现方法
CN1243437C (zh) 一种可穿越网络地址翻译的自动隧道的方法
CN101030934A (zh) 一种基于双向隧道的实现跨异构网络移动通信的方法
US20080225866A1 (en) Reducing network traffic to teredo server
CN1716944A (zh) 网络路径最大传输长度发现方法
CN1181655C (zh) 移动ip中一种数据包传输的方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
EE01 Entry into force of recordation of patent licensing contract

Assignee: Beijing Zhongke Jingshang Technology Co., Ltd.

Assignor: Institute of Computing Technology, Chinese Academy of Sciences

Contract record no.: 2011110000143

Denomination of invention: An automatic tunnel method capable of traversing network address translation

Granted publication date: 20060222

License type: Exclusive License

Open date: 20040901

Record date: 20110823

ASS Succession or assignment of patent right

Owner name: SHANGHAI YINGLIAN TIGAN INTELLIGENT TECHNOLOGY CO.

Free format text: FORMER OWNER: INSTITUTE OF COMPUTING TECHNOLOGY, CHINESE ACADEMY OF SCIENCES

Effective date: 20130115

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 100080 HAIDIAN, BEIJING TO: 200072 ZHABEI, SHANGHAI

TR01 Transfer of patent right

Effective date of registration: 20130115

Address after: 200072 Shanghai Road, Luochuan, No. 840, room 3, building 104

Patentee after: SHANGHAI YINGLIAN SOMATOSENSORY INTELLIGENT TECHNOLOGY CO., LTD.

Address before: 100080 No. 6 South Road, Zhongguancun Academy of Sciences, Beijing

Patentee before: Institute of Computing Technology, Chinese Academy of Sciences

C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20060222

Termination date: 20130917

EC01 Cancellation of recordation of patent licensing contract
EC01 Cancellation of recordation of patent licensing contract

Assignee: Beijing Zhongke Polytron Technologies Inc

Assignor: Institute of Computing Technology, Chinese Academy of Sciences

Contract record no.: 2011110000143

Date of cancellation: 20181212