一种穿越nat的隧道过渡方法及系统的制作方法

文档序号:7698643阅读:256来源:国知局

专利名称::一种穿越nat的隧道过渡方法及系统的制作方法
技术领域
:本发明涉及通信
技术领域
,特别是涉及一种穿越NAT(网络地址翻译)的隧道过渡方法及系统。
背景技术
:全球互联网所采用的协议族是TCP/IP协议族,IP是TCP/IP协议族中网络层的协议,是TCP/IP协议族的核心协议。目前IP协议的版本号是4(简称为IPv4),它的下一个版本就是IPv6。目前,全球互联网正处于从IPv4网络向IPv6网络过渡的阶段,IPv4/IPv6的互联互通是保证互联网向IPv6网络顺利过渡的关键因素,为此现有技术提出了一系列IPv4/IPv6过渡机制,主要可以分为三类技术双协议栈、协议翻译和隧道技术。其中,隧道技术是将IPv6报文封装在IPv4报文中,让IPv6数据包穿过IPv4网络进行通信,对于采用隧道技术的设备来说,在隧道的入口处,将IPv6的数据报封装进IPv4,IPv4报文的源地址和目的地址分别是隧道入口和隧道出口的IPv4地址;在隧道的出口处,再将IPv6报文取出转发到目的节点。隧道技术只要求在隧道的入口和出口处进行修改,对其他部分没有要求,可以在不建设网络基础设施或不对现有网络进行大规模改造的情况下实现IPv6节点或IPv6网络之间的互连,并且对用于封装和被封装的协议类型没有具体的要求,具有很好的灵活性,是目前较为通用的IPv4/IPv6过渡技术。这种隧道技术只能应用于端到端模式。而现有技术中,为解决IPv4网络的IP地址资源短缺的问题,普遍采用了NAT(NetworkAddressTranslation,网络地址翻译)技术。具体而言,NAT是一种把内部私有地址翻译成外部公有地址的技术,NAT用户(NAT域内的主机)在网络内部采用私有地址进行通信,并通过NAT共用一个或若干个公有地址与外部互联网进行通信。由于私有地址的非全球唯一性,外部互联网的节点不能主动访问NAT用户。并且,当NAT用户通过隧道技术接入IPv6网络时,由于NAT的存在,导致NAT用户获得的IPv6地址会随时变化,从而破坏了IP网络通信的端到端特性,使NAT域内的用户主机很难实现被动通信。因此,目前需要本领域技术人员迫切解决的一个技术问题就是如何能够创新地提出一种穿越NAT的隧道过渡机制,用以使NAT域内的用户主机在通过隧道技术接入Ipv6网络时仍能够保持端到端的特性,能够穿透所有典型类型的NAT设备,接入路由器和客户端之间可以存在任意数量和任何类型的NAT。
发明内容本发明所要解决的技术问题是提供一种穿越NAT的隧道过渡方法及系统,用以使NAT域内的用户主机在通过隧道技术接入Ipv6网络时仍能够保持端到端的特性,能够穿透所有典型类型的NAT设备,接入路由器和客户端之间可以存在任意数量和任何类型的NAT。为了解决上述技术问题,本发明实施例公开了一种穿越NAT的隧道过渡方法,包括NAT域内的用户主机根据MAC地址信息和所连接的隧道服务器地址信息,生成该用户主机的主机标识地址;所述用户主机连接隧道服务器进行NAT类型的检测;根据不同的NAT类型生成相应的路由地址;所述隧道服务器将所述主机标识地址和路由地址维护至状态信息表中;源主机和目标主机通过隧道服务器,依据所述主机标识地址和路由地址进行通信。优选的,所述NAT类型为对称NAT,所述路由地址包括所述隧道服务器的地址信息、所述隧道服务器选择的中继器地址信息和所述用户主机的外部端口和外部地址信息。优选的,所述NAT类型为全锥形NAT或受限锥形NAT,所述路由地址包括所述隧道服务器的地址信息和所述用户主机的外部端口和外部地址信息。优选的,所述主机标识地址包括16位的地址类型前缀、32位的隧道服务器地址、32位的地址属性标识和48位的MAC地址;所述路由地址包括16位的地址类型前缀、32位的隧道服务器地址、32位的中继器地址和48位的用户主机的外部端口和外部地址。优选的,所述源主机和目标主机通信的步骤进一步包括源主机向目标主机发起通信;依据目标主机的主机标识地址,判断目标主机的隧道服务器中是否存在对应的路由地址,若有,则将所述路由地址返回给源主机;否则,由所述目标主机的隧道服务器通知该目标主机生成相应的路由地址,并将所述路由地址返回给源主机;所述源主机依据所述路由地址与目标主机进行通信。优选的,所述源主机为在全锥形NAT域内的源主机,所述目标主机为全锥形NAT域内的目标主机。优选的,所述源主机为在受限锥形NAT域内的源主机,所述目标主机为在受限锥形NAT域内的目标主机,所述源主机与目标主机通信的步骤还包括在NAT映射表中建立所述源主机与目标主机的映射关系。优选的,所述源主机为在对称NAT域内的源主机,所述目标主机为在对称NAT域内的目标主机,所述源主机与目标主机通信的步骤还包括源主机将IPv6分组数据封装成IPv4分组数据;所述IPv4分组数据经由源主机的隧道服务器连接的第一中继器,目标主机的隧道服务器连接的第二中继器,发送至目标主机所在的NAT设备中;所述NAT设备将所述IPv4分组数据发送至目标主机。优选的,所述源主机为在对称NAT域内的源主机,所述目标主机为在IPv6网络中的目标主机,所述源主机与目标主机通信的步骤包括源主机通过隧道服务器向目标主机发送响应请求报文;所述隧道服务器将所述响应请求报文发送给目标主机;所述目标主机向源主机应答响应回复报文,所述响应回复报文被路由至与目标主机最接近的第二中继器;第二中继器封装所述响应回复报文后,经IPv4网络端的第一中继器和源主机的NAT设备发送至源主机;所述源主机将封装有IPv6数据包的IPv4数据包经由所述第一中继器发送至第二中继器;所述第二中继器解封装所述IPv4数据包,获得IPv6数据包,并将所述IPv6数据包发送至目标主机。本发明实施例还公开了一种穿越NAT的隧道过渡系统,包括NAT域内的用户主机和隧道服务器,其中,所述NAT域内的用户主机包括主机地址生成模块,用于根据MAC地址信息和所连接的隧道服务器地址信息,生成该用户主机的主机标识地址;NAT类型检测模块,用于连接隧道服务器进行NAT类型的检测;路由地址生成模块,用于根据不同的NAT类型生成相应的路由地址;所述隧道服务器包括状态信息维护模块,用于将所述主机标识地址和路由地址维护至状态信息表中;源主机和目标主机通过所述隧道服务器,依据所述主机标识地址和路由地址进行通{曰。优选的,所述NAT类型为对称NAT,所述路由地址包括所述隧道服务器的地址信息、所述隧道服务器选择的中继器地址信息和所述用户主机的外部端口和外部地址信息。优选的,所述NAT类型为全锥形NAT或受限锥形NAT,所述路由地址包括所述隧道服务器的地址信息和所述用户主机的外部端口和外部地址信息。优选的,所述源主机和目标主机的通信通过以下模块实现位于源主机的通信发起模块,用于依据源主机的主机标识地址和目标主机的主机标识地址,向目标主机发起的通信请求;位于目标主机隧道服务器的路由查找模块,用于判断目标主机的隧道服务器中是否存在对应的路由地址,若有,则执行路由地址返回模块;否则,执行通知模块;位于目标主机隧道服务器的路由地址返回模块,用于将所述路由地址返回给源主机;位于目标主机隧道服务器的通知模块,用于向目标主机发送生成路由地址的通知;位于目标主机的路由地址生成模块,用于根据所述通知生成相应的路由地址,并触发所述路由地址返回模块;位于源主机的通信执行模块,用于依据从所述隧道服务器返回的路由地址与目标主机进行通信。优选的,所述源主机为在全锥形NAT域内的源主机,所述目标主机为全锥形NAT域内的目标主机。优选的,所述源主机为在受限锥形NAT域内的源主机,所述目标主机为在受限锥形NAT域内的目标主机,所述源主机和目标主机的通信实现还包括以下模块位于所述源主机和目标主机的NAT设备中的NAT映射模块,用于在NAT映射表中建立所述源主机与目标主机的映射关系。优选的,所述源主机为在对称NAT域内的源主机,所述目标主机为在对称NAT域内的目标主机,所述源主机和目标主机的通信实现还包括以下模块位于源主机的封装模块,用于将IPv6分组数据封装成IPv4分组数据;位于源主机的第一发送模块,用于依据源主机的路由地址,将所述IPv4分组数据发送至源主机的隧道服务器连接的第一中继器;位于第一中继器的第二发送模块,用于依据目标主机的路由地址,将所述IPv4分组数据发送至目标主机的隧道服务器连接的第二中继器;位于第二中继器的第三发送模块,用于将所述IPv4分组数据发送至目标主机所在的NAT设备中;NAT设备,用于将所述IPv4分组数据发送至目标主机。优选的,所述源主机为在对称NAT域内的源主机,所述目标主机为在IPv6网络中的目标主机,所述源主机和目标主机的通信通过以下模块实现位于源主机的报文请求模块,用于通过隧道服务器向目标主机发送响应请求报文;位于隧道服务器的报文转发模块,用于将所述响应请求报文发送给目标主机;位于目标主机的报文应答模块,用于向源主机应答响应回复报文,并将所述响应回复报文路由至与目标主机最接近的第二中继器;位于第二中继器的封装发送模块,用于封装所述响应回复报文,并将所述封装后的报文发送至IPv4网络端的第一中继器;位于第一中继器的分组转发模块,用于将所述封装后的报文转发给源主机的NAT设备;源主机的NAT设备,用于将所述封装后的报文转发给源主机;位于源主机的数据发送模块,用于将封装有IPv6数据包的IPv4数据包经由所述第一中继器发送至第二中继器;位于第二中继器的解包发送模块,用于解封装所述IPv4数据包,获得IPv6数据包,并将所述IPv6数据包发送至目标主机。与现有技术相比,本发明具有以下优点本发明通过在NAT域内的用户主机分配一种特定格式的IPv6地址为该主机的主机标识地址,这个地址该主机在互联网上的唯一标志,在以后所有通信中都是不会改变的。只有在真正开始通信时,才采用解析生成可路由地址进行,由于有这种固定的主机标识地址的参与,NAT域内的用户主机在通过隧道技术接入Ipv6网络时仍能够保持端到端的特性,能够穿透所有典型类型的NAT设备,接入路由器和客户端之间可以存在任意数量和任何类型的NAT。图1是本发明的一种穿越NAT的隧道过渡方法实施例的流程图;图2是位于受限锥形NAT域内的源主机和目标主机进行通信的示意图;图3是位于对称NAT域内的源主机和目标主机进行通信的示意图;图4是位于对称NAT域内的源主机和目标主机进行通信的示意图;图5是本发明的一种穿越NAT的隧道过渡系统实施例的结构图。具体实施例方式为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。由于TCP/IP协议中网络层IP地址承担双重角色主机标识符和路由定位符。这使得IP地址在主机移动和多宿主情况下,不能像在固定主机那样提供完美的服务。如果主机因为某种原因而改变其IP地址时,通信双方无法在原始创建的网络层通信链路上发送或接收数据,从而造成通信中断。造成这种问题的原因是由于目前的Internet体系结构只有两个命名空间IP地址和域名。正是由于本专利的发明人注意到了这一点,因此,创新性的提出本发明实施例的核心构思,即为在NAT域内的用户主机分配一种特定格式的IPv6地址为该主机的主机标识地址,这个地址该主机在互联网上的唯一标志,在以后所有通信中都是不会改变的。只有在真正开始通信时,才采用解析生成的可路由地址进行,由于有这种固定的主机标识地址的参与,NAT域内的用户主机在通过隧道技术接入Ipv6网络时仍能够保持端到端的特性,能够穿透所有典型类型的NAT设备,接入路由器和客户端之间可以存在任意数量和任何类型的NAT。参考图1,示出了本发明的一种穿越NAT的隧道过渡方法实施例的流程图,具体可以包括以下步骤步骤101、NAT域内的用户主机根据MAC地址信息和所连接的隧道服务器地址信息,生成该用户主机的主机标识地址;在Ipv6网络中,IP地址的长度为128位。为形成可适用于Ipv6网络的主机标识地址,还可以在主机标识地址中写入标识当前地址类型的地址前缀和Flag标识。优选的,所述主机标识地址可以由16位的地址前缀、32位的隧道服务器地址、32位的Flag标识和48位的InterfaceID组成。具体格式可以参见下表<table>tableseeoriginaldocumentpage9</column></row><table>其中,所述地址前缀用来记录地址类型信息,即当前是主机标识地址还是路由地址,所有主机标识地址都采用相同的前缀;所述隧道服务器地址用来记录作为隧道客户端的NAT后用户主机所选隧道服务器的IPv4地址信息;主机标识地址的Flag标识可以直接记录为0;InterfaceID用来记录48位的MAC(MediaAccessControl,介质访问控制)地址。步骤102、所述用户主机连接隧道服务器进行NAT类型的检测;根据NAT建立和查找映射关系的规则不同,可将NAT分为全锥形、受限锥形、对称三种类型。这三种NAT类型的工作原理分别为(1)全锥形NAT(FullConeNAT)根据客户端的内部地址和内部端口建立映射关系,如下(内部地址,内部端口)<_>(外部地址,外部端口)NAT位于内部网络一侧的接口收到数据包后,以(内部地址、内部端口)也就是客户端的源地址和源端口为入口,从映射表中找到对应的外部地址和外部端口,完成地址转换后发送给外部网络。NAT位于外部网络一侧的接口收到数据包后,以(外部地址、外部端口)也就是数据包的目的地址和目的端口为入口,从映射表中找到对应的内部地址和内部端口,完成地址转换后发送给内部网络。(2)受限锥形NAT(RestrictedConeNAT)根据客户端的内部地址和内部端口建立映射关系,但映射关系还包含目的地址,如下(内部地址,内部端口)<_>(外部地址,外部端口,目的地)NAT位于内部网络一侧的接口收到数据包后的操作和全锥形NAT相同。不同的是NAT收到外部网络的数据包后,它以(外部地址、外部端口、目的地址)也就是数据包的目的地址、目的端口和源地址为入口查找映射关系。也就是说,只有客户端曾经向服务器A发送过数据包、NAT保存了A的地址,来自A的数据包才会被NAT转换并发送给客户端。对于全锥形NAT,不管客户端有没有向A发送过数据包,只要A发送给客户端的数据包目的地址和目的端口和映射关系中的(外部地址、外部端口)一致,NAT就会对这个数据包进行转换并发给客户端。(3)对称NAT(SymmetricNAT)对称NAT建立如下映射关系(内部地址,内部端口,目的地址,目的端口)<_>(外部地址,外部端口)(内部地址,内部端口,目的地址)<_>(外部地址,外部端口)全锥形NAT和受限锥形NAT只根据内部地址和内部端口建立映射关系,所以(内部地址,内部端口)和(外部地址,外部端口)之间的映射关系是一一对应的。对称NAT根据目的地址或目的端口的不同将内部地址和内部端口映射成不同的外部地址和外部端口,所以(内部地址,内部端口)和(外部地址,外部端口)之间的映射关系是一对多的关系。本步骤的处理是在隧道服务器的协助下进行的。假设隧道服务器绑定两个公网IPv4地址IPAddr-I和IPAddr_2。隧道服务器启动两个线程分别对(IPAddr-I,Port-I)禾口(IPAddr-2,Port-2)进行UDP监听,并根据隧道客户端的要求进行应答,一种NAT类型自动检测算法的示例如下①隧道客户端建立UDPSocket,并启动一个接收线程接收隧道服务器发送给该端口的数据,然后用这个Socket向隧道服务器的(IPAddr-Ι,Port-Ι)发送三个相同的UDP数据包,要求隧道服务器返回服务器实际看到的客户端的IP地址和端口号。②发送完数据后,接收线程开始接收隧道服务器的响应,如果在1秒内,没有接收到隧道服务器的回应,则说明客户端无法进行IPv6-in-UDP通信,可能是防火墙或NAT阻止IPv6-in-UDP通信,这样的客户端也就不能建立IPv6-in-UDP隧道,检测停止;③接收线程收到隧道服务器的回应时,提取响应分组中的隧道服务器实际看到的客户端用于通信的IP地址和端口号Port,用(PubIPAddr-I,PubPORT-I)标识,并与客户端正在使用Socket实际绑定的IP地址和端口号(LocIPAddr,LocP0RT)进行比较。如果完全相同,则隧道客户端不在NAT后,该隧道客户具有公网IP地址,可以直接进行IPv6-in-IPv4隧道通信,不需要建立IPv6-in-UDP隧道,检测停止;否则客户端在NAT后,要做进一步的NAT类型检测。④隧道客户端用①建立的Socket向隧道服务器(IPAddr-1,Port-1)发送三个相同的数据包,要求隧道服务器用(IPAddr-2,Port-2)响应客户端的请求。客户端发送请求后并通知接收线程进行接收,如果在1秒钟内没有收到服务器的响应,则说明客户端的所在的NAT不是一个全锥形NAT,具体类型有待下一步检测。如果能够接收到隧道服务器从(IPAddr-2,Port-2)返回的应答UDP包,则说明客户端的NAT是一个全锥形NAT,检测停止;⑤客户端新建一个UDPSocket,并向隧道服务器的(IPAddr_2,Port-2)发送三个相同的数据包,要求隧道服务器返回客户端的IP地址和端口号,并启动接收线程进行接收数据,由②可知,接收线程肯定收到隧道服务器的响应,提取响应分组中的隧道服务器实际看到的客户端的IP地址和端口号Port,用(PubIPAddr-2,PubP0RT-2)标识,比较(PubIPAddr-I,PubPORT-I)和(PubIPAddr-2,PubP0RT-2)。如果不相同,则说明客户端所在的NAT为对称型NAT,检测停止;否则是受限锥形NAT;在实际中,还可以进一步检测是否为端口受限锥形NAT(PortRestrictedConeNAT)。⑥客户端利用①建立的Socket,向服务器的(IPAddr-I,Port-Ι)发送三个相同的数据包要求服务器用绑定IPAddr-I和一个不同于Port-I的端口发的Socket向客户端口发送响应。客户端发送请求后并通知线程接收响应,如果在1秒时间内没有接收到响应,则说明客户端NAT是端口受限锥形NAT,如果能够收到服务器的响应则说明客户端NAT是受限锥形NAT。当然,上述方法仅仅用作示例,在实际中,本领域技术人员采用任一种NAT类型检测方法都是可行的,本发明对此不作限制。步骤103、根据不同的NAT类型生成相应的路由地址;例如,若所述NAT类型为对称NAT时,所述用户主机向隧道服务器请求获得中继器地址,隧道服务器根据负载均衡算法选择相应的中继地址返回给当前用户主机,并通过中继器获取所述用户主机的外部端口(PORT)和外部地址信息(IP地址),由所述隧道服务器的地址信息、中继器地址信息和当前用户主机的外部端口和外部地址信息,即可形成相应的路由地址。若所述NAT类型为非对称NAT,则用户主机可以通过隧道服务器返回的外部端口(PORT)和外部地址信息(IP地址),由所述隧道服务器的地址信息和当前用户主机的外部端口和外部地址信息,形成相应的路由地址。在本发明的一种优选实施例中,所述路由地址可以包括16位的地址前缀、32位的隧道服务器地址、32位的中继器地址、16位的外部端口Port和32位外部IPv4地址字段。具体格式可以参见下表<table>tableseeoriginaldocumentpage11</column></row><table>其中,所述地址前缀用来记录地址类型信息,即当前是主机标识地址还是路由地址,所有路由地址都采用相同的前缀;所述隧道服务器地址用来记录作为隧道客户端的NAT后用户主机所选隧道服务器的IPv4地址信息;所述中继器地址用来记录实际的中继器地址,可以填入主机标识地址中Flag的位置;如果没有中继器地址则可以将这32位全部置1;所述外部端口和外部IPv4地址可以在NAT类型检测过程中获得,可以填入主机标识地址中InterfaceID的位置。对于不是NAT用户的情况,可以实际的IP地址填入主机标识地址的InterfaceID中后32位,中继地址置1;PORT置零。步骤104、所述隧道服务器将所述主机标识地址和路由地址维护至状态信息表中;例如,用户主机首先建立UDPSocket,向隧道服务器固定端口的Socket发送隧道接入请求服务,服务器接受到请求消息对其身份进行认证,并向当前主机发送允许接收消息。通过认证后,所述用户主机把检测获得的NAT类型、该Socket实际绑定的私有地址和端口、及其主机标识地址发送给隧道服务器;隧道服务器收到后,利用这些信息为该用户主机建立相应的状态信息表。一种优选的实现为,还可以在用户主机设置Timer,以一定的间隔(缺省值为30s)向隧道服务器发送心跳包,隧道服务器收到心跳包后不作任何处理。用户主机发送心跳包的目的是为了刷新NAT映射表中内部地址、内部端口和外部地址、外部端口的映射关系。因为NAT会删除长时间没有数据流的映射关系,一旦映射关系不存在,客户与隧道服务器建立的虚拟链路将不再有效。在这种情况下,所述隧道服务器还可以利用上述用户主机维护虚拟链路的过程来维护所述状态信息表。隧道服务器也为注册用户主机设置一个Timer,隧道服务器收到该用户主机的数据分组后,刷新定时器。如果长时间收不到来自该用户主机的数据,则定时器会超时,一旦超时,服务器认为用户主机不再需要该虚拟链路,将删除该用户主机相关的映射关系。作为本发明的一种优选实施例,所述隧道服务器维护的状态信息表项可以包括内部地址、内部端口、外部地址、外部端口、主机标识地址、路由地址和NAT类型字段。步骤105、源主机和目标主机通过隧道服务器,依据所述主机标识地址和路由地址进行通信。作为本发明的一种优选实施例,本步骤可以进一步包括以下子步骤子步骤Al、源主机向目标主机发起通信;子步骤A2、依据目标主机的主机标识地址,判断目标主机的隧道服务器中是否存在对应的路由地址,若有,则执行子步骤A3;否则执行子步骤A4;子步骤A3、将所述路由地址返回给源主机;子步骤A4、由所述目标主机的隧道服务器通知目标主机生成相应的路由地址,并将所述路由地址返回给源主机;子步骤A5、所述源主机依据所述路由地址与目标主机进行通信。为使本领域技术人员更好地理解本发明,以下通过几种端到端通信的具体实例进一步说明本发明。一、源主机和目标主机都位于全锥形NAT域内在此种情况下,因为全锥形NAT不会对来自外部互联网的数据包加以限制,所以通信过程十分简单,源主机可以直接向目标主机发送数据包。二、源主机和目标主机都位于受限锥形NAT域内因为受限锥形NAT对来自外部互联网的数据包源地址有所限制,所以在源主机和目标主机之间必须通过空包交换以便在NAT映射表中创建相应的映射关系后才能互相通信。因而,在这种情况下,所述源主机与目标主机通信的步骤还可以包括子步骤在NAT映射表中建立所述源主机与目标主机的映射关系,基于所述映射关系,所述源主机才能依据所述路由地址与目标主机进行通信。具体可以参考图2所示的位于受限锥形NAT域内的源主机和目标主机进行通信的示意图,假设源主机21需要经IPv4网络23向目标主机22发送数据包,其中,源主机21位于第一NAT设备211后,第一NAT设备211接入第一IPv4内网212内,第一IPv4内网212中设置有第一隧道服务器213;目标主机22位于第二NAT设备221后,第二NAT设备221接入第二IPv4内网222内,第二IPv4内网222中设置有第二隧道服务器223;其具体通信过程可以为(1)源主机21向目标主机22发送一个空包,这时目标主机22所在的受限锥形NAT没有目的地址为源主机21的映射关系,所以不允许转发来自该源主机21的数据包。所述源主机21所在的受限锥形NAT因为转发过源主机21到目标主机22的空包,创建了目的地址为目标主机22的映射关系,所以在接下来的通信中允许转发来自目标主机22的数据包。(2)源主机21向目标主机22的第二隧道服务器223发送消息,IPv4目的地址为该第二隧道服务器223的地址(源主机21从目标主机22的地址中获得该地址)。(3)第二隧道服务器223收到该消息后,根据IPv6目的地址转发给目标主机22,因为目标主机22所在第二NAT设备221中存在目的地址为第二隧道服务器223的映射关系,所以允许转发来自第二隧道服务器223的数据包。(4)目标主机22收到该消息后向源主机21发送一个空包,因为源主机21所在第一NAT设备211中已经创建了一个目的地址为目标主机22的映射关系,所以允许转发来自目标主机22的数据包。同时目标主机22所在第二NAT设备221中因为转发过目的地址为源主机21的数据包,创建了目的地址为源主机21的映射关系,所以在接下来的通信中允许转发来自源主机21的数据包。(5)源主机21收到来自目标主机22的空包后,两个受限锥形NAT设备211和221都创建了源主机21和目标主机22通信所需的映射关系。接下来源主机21就可以直接向目标主机22发送数据包。三、源主机和目标主机都位于对称NAT域内在这种情况下,所述源主机与目标主机通信的步骤还可以包括以下子步骤子步骤Bi、源主机将IPv6分组数据封装成IPv4分组数据;子步骤B2、所述IPv4分组数据经由源主机的隧道服务器连接的第一中继器,目标主机的隧道服务器连接的第二中继器,发送至目标主机所在的NAT设备中;子步骤B3、所述NAT设备将所述IPv4分组数据发送至目标主机。具体可以参考图3所示的位于对称NAT域内的源主机和目标主机进行通信的示意图,假设源主机31需要经IPv4网络33向目标主机32发送数据包,其中,源主机31位于第一NAT设备311后,第一NAT设备311接入第一IPv4内网312内,第一IPv4内网312中设置有第一隧道服务器313和第一中继器314;目标主机32位于第二NAT设备321后,第二NAT设备321接入第二IPv4内网322内,第二IPv4内网322中设置有第二隧道服务器323和第二中继器324;其具体通信过程可以为(1)源主机31的IPv6分组数据经过接口封装成IPv4分组数据,目的IPv4地址为源IPv6地址(源主机的路由地址)中的中继器地址字段所示的第一中继器314地址,所述IPv4分组数据被发送到所述第一中继器314中。(2)所述第一中继器314从该分组数据的目的IPv6地址(目标主机的路由地址)的中继器地址字段,获取第二中继器324的IPv4地址,然后把该IPv4分组数据的目的IPv4地址修改成该第二中继器324的IPv4的地址,并将该IPv4分组数据经过IPv4网络33发送到第二中继器324中。(3)所述第二中继器324从该分组数据的目的IPv6地址中,获取NAT映射的外部地址信息和端口信息(IPv4地址和PORT),发送到目标主机32所在的第二NAT设备321中,由第二NAT设备321经过映射把该IPv4分组数据发送给目标主机32。四、源主机位于对称NAT域后,目标主机为在IPv6网络中的纯IPv6主机作为本发明的另一实施例,在这种情况下,隧道接口可以采用ICMPv6请求和ICMPv6回复来代替邻居发现的地址解析过程。向纯IPv6主机发送数据包之前,客户端需要确定离该IPv6主机最近的中继器的IPv4地址和UDP端口。因而在本例中,所述源主机与目标主机通信的步骤105可以包括以下子步骤子步骤Cl、源主机通过隧道服务器向目标主机发送响应请求报文;子步骤C2、所述隧道服务器将所述响应请求报文发送给目标主机;子步骤C3、所述目标主机向源主机应答响应回复报文,所述响应回复报文被路由至与目标主机最接近的第二中继器;子步骤C4、第二中继器封装所述响应回复报文后,经IPv4网络端的第一中继器和源主机的NAT设备发送至源主机;子步骤C5、所述源主机将封装有IPv6数据包的IPv4数据包经由所述第一中继器发送至第二中继器;子步骤C6、所述第二中继器解封装所述IPv4数据包,获得IPv6数据包,并将所述IPv6数据包发送至目标主机。具体可以参考图4所示的位于对称NAT域内的源主机和目标主机进行通信的示意图,假设源主机41向目标主机48发送数据包,其中,源主机41位于NAT设备42后,NAT设备42接入IPv4网络43,IPv4网络43中设置有隧道服务器44和第一中继器45;该隧道服务器44和第一中继器45同时接入IPv6网络46中,IPv6网络46中还设置有第二中继器47,目标主机48位于所述IPv6网络46中;其具体通信过程可以为(1)源主机41首先通过隧道服务器44向目标主机48发送ICMPv6响应请求报文。(2)隧道服务器44收到响应请求报文后,转发给目标主机48。(3)目标主机48收到ICMPv6响应请求后,向源主机41发送ICMPv6响应回复报文作为应答。因为IPv6互联网路由体系中3FFE::/16路由指向离目标主机最近的中继器,所以响应回复报文最终会被路由至第二中继器47。(4)第二中继器47将响应回复报文用UDP头部和IPv4头部封装后,发送到第一中继器45,所述第一中继器45把分组转发给NAT设备42,由所述NAT设备42根据映射关系把分组转发给源主机41。(5)源主机41从响应回复报文中获得离目标主机48最近的第二中继器47的IPv4地址和UDP端口,通过第一中继器45到第二中继器47之间的隧道发给第二中继器47。(6)第二中继器47收到源主机41的数据包后解封装,即去掉IPv4头部和UDP头部,得到一个IPv6数据包,然后转发给目标主机48。需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。参考图5,示出了本发明的一种穿越NAT的隧道过渡系统实施例的结构图,具体可以包括NAT域内的用户主机51和隧道服务器52,其中,所述NAT域内的用户主机51可以包括以下模块主机地址生成模块511,用于根据MAC地址信息和所连接的隧道服务器地址信息,生成该用户主机的主机标识地址;NAT类型检测模块512,用于连接隧道服务器进行NAT类型的检测;路由地址生成模块513,用于根据不同的NAT类型生成相应的路由地址;所述隧道服务器52可以包括以下模块状态信息维护模块521,用于将所述主机标识地址和路由地址维护至状态信息表中;在进行源主机和目标主机的通信时,所述源主机和目标主机通过所述隧道服务器52,依据所述主机标识地址和路由地址进行通信。在本发明的一种优选实施例中,所述NAT类型可以为对称NAT,在这种情况下,所述路由地址可以包括所述隧道服务器的地址信息、所述隧道服务器选择的中继器地址信息和所述用户主机的外部端口和外部地址信息。所述NAT类型还可以为全锥形NAT或受限锥形NAT,在这种情况下,所述路由地址可以包括所述隧道服务器的地址信息和所述用户主机的外部端口和外部地址信息。在本发明实施例中,优选的是,所述源主机和目标主机的通信可以通过以下模块实现位于源主机的通信发起模块,用于依据源主机的主机标识地址和目标主机的主机标识地址,向目标主机发起的通信请求;位于目标主机隧道服务器的路由查找模块,用于判断目标主机的隧道服务器中是否存在对应的路由地址,若有,则执行路由地址返回模块;否则,执行通知模块;位于目标主机隧道服务器的路由地址返回模块,用于将所述路由地址返回给源主机;位于目标主机隧道服务器的通知模块,用于向目标主机发送生成路由地址的通知;位于目标主机的路由地址生成模块,用于根据所述通知生成相应的路由地址,并触发所述路由地址返回模块;位于源主机的通信执行模块,用于依据从所述隧道服务器返回的路由地址与目标主机进行通信。在实际中的一种情形为,所述源主机为在全锥形NAT域内的源主机,所述目标主机为全锥形NAT域内的目标主机。在实际中的另一种情形为,所述源主机为在受限锥形NAT域内的源主机,所述目标主机为在受限锥形NAT域内的目标主机,在这种情况下,所述源主机和目标主机的通信实现还可以包括以下模块位于所述源主机和目标主机的NAT设备中的NAT映射模块,用于在NAT映射表中建立所述源主机与目标主机的映射关系。在实际中的又一种情形为,所述源主机为在对称NAT域内的源主机,所述目标主机为在对称NAT域内的目标主机,所述源主机和目标主机的通信实现还可以包括以下模块位于源主机的封装模块,用于将IPv6分组数据封装成IPv4分组数据;位于源主机的第一发送模块,用于依据源主机的路由地址,将所述IPv4分组数据发送至源主机的隧道服务器连接的第一中继器;位于第一中继器的第二发送模块,用于依据目标主机的路由地址,将所述IPv4分组数据发送至目标主机的隧道服务器连接的第二中继器;位于第二中继器的第三发送模块,用于将所述IPv4分组数据发送至目标主机所在的NAT设备中;NAT设备,用于将所述IPv4分组数据发送至目标主机。作为本发明的另一实施例,所述源主机为在对称NAT域内的源主机,所述目标主机为在IPv6网络中的目标主机,所述源主机和目标主机的通信可以通过以下模块实现位于源主机的报文请求模块,用于通过隧道服务器向目标主机发送响应请求报文;位于隧道服务器的报文转发模块,用于将所述响应请求报文发送给目标主机;位于目标主机的报文应答模块,用于向源主机应答响应回复报文,并将所述响应回复报文路由至与目标主机最接近的第二中继器;位于第二中继器的封装发送模块,用于封装所述响应回复报文,并将所述封装后的报文发送至IPv4网络端的第一中继器;位于第一中继器的分组转发模块,用于将所述封装后的报文转发给源主机的NAT设备;源主机的NAT设备,用于将所述封装后的报文转发给源主机;位于源主机的数据发送模块,用于将封装有IPv6数据包的IPv4数据包经由所述第一中继器发送至第二中继器;位于第二中继器的解包发送模块,用于解封装所述IPv4数据包,获得IPv6数据包,并将所述IPv6数据包发送至目标主机。对于系统实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、装置或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、装置或者系统所固有的要素。以上对本发明所提供的一种穿越NAT的隧道过渡方法,以及一种穿越NAT的隧道过渡系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。权利要求一种穿越NAT的隧道过渡方法,其特征在于,包括NAT域内的用户主机根据MAC地址信息和所连接的隧道服务器地址信息,生成该用户主机的主机标识地址;所述用户主机连接隧道服务器进行NAT类型的检测;根据不同的NAT类型生成相应的路由地址;所述隧道服务器将所述主机标识地址和路由地址维护至状态信息表中;源主机和目标主机通过隧道服务器,依据所述主机标识地址和路由地址进行通信。2.如权利要求1所述的方法,其特征在于,所述NAT类型为对称NAT,所述路由地址包括所述隧道服务器的地址信息、所述隧道服务器选择的中继器地址信息和所述用户主机的外部端口和外部地址信息。3.如权利要求1所述的方法,其特征在于,所述NAT类型为全锥形NAT或受限锥形NAT,所述路由地址包括所述隧道服务器的地址信息和所述用户主机的外部端口和外部地址信息。4.如权利要求1、2或3所述的方法,其特征在于,所述主机标识地址包括16位的地址类型前缀、32位的隧道服务器地址、32位的地址属性标识和48位的MAC地址;所述路由地址包括16位的地址类型前缀、32位的隧道服务器地址、32位的中继器地址和48位的用户主机的外部端口和外部地址。5.如权利要求1所述的方法,其特征在于,所述源主机和目标主机通信的步骤进一步包括源主机向目标主机发起通信;依据目标主机的主机标识地址,判断目标主机的隧道服务器中是否存在对应的路由地址,若有,则将所述路由地址返回给源主机;否则,由所述目标主机的隧道服务器通知该目标主机生成相应的路由地址,并将所述路由地址返回给源主机;所述源主机依据所述路由地址与目标主机进行通信。6.如权利要求5所述的方法,其特征在于,所述源主机为在全锥形NAT域内的源主机,所述目标主机为全锥形NAT域内的目标主机。7.如权利要求5所述的方法,其特征在于,所述源主机为在受限锥形NAT域内的源主机,所述目标主机为在受限锥形NAT域内的目标主机,所述源主机与目标主机通信的步骤还包括在NAT映射表中建立所述源主机与目标主机的映射关系。8.如权利要求5所述的方法,其特征在于,所述源主机为在对称NAT域内的源主机,所述目标主机为在对称NAT域内的目标主机,所述源主机与目标主机通信的步骤还包括源主机将IPv6分组数据封装成IPv4分组数据;所述IPv4分组数据经由源主机的隧道服务器连接的第一中继器,目标主机的隧道服务器连接的第二中继器,发送至目标主机所在的NAT设备中;所述NAT设备将所述IPv4分组数据发送至目标主机。9.如权利要求1所述的方法,其特征在于,所述源主机为在对称NAT域内的源主机,所述目标主机为在IPv6网络中的目标主机,所述源主机与目标主机通信的步骤包括源主机通过隧道服务器向目标主机发送响应请求报文;所述隧道服务器将所述响应请求报文发送给目标主机;所述目标主机向源主机应答响应回复报文,所述响应回复报文被路由至与目标主机最接近的第二中继器;第二中继器封装所述响应回复报文后,经IPv4网络端的第一中继器和源主机的NAT设备发送至源主机;所述源主机将封装有IPv6数据包的IPv4数据包经由所述第一中继器发送至第二中继器;所述第二中继器解封装所述IPv4数据包,获得IPv6数据包,并将所述IPv6数据包发送至目标主机。10.一种穿越NAT的隧道过渡系统,其特征在于,包括NAT域内的用户主机和隧道服务器,其中,所述NAT域内的用户主机包括主机地址生成模块,用于根据MAC地址信息和所连接的隧道服务器地址信息,生成该用户主机的主机标识地址;NAT类型检测模块,用于连接隧道服务器进行NAT类型的检测;路由地址生成模块,用于根据不同的NAT类型生成相应的路由地址;所述隧道服务器包括状态信息维护模块,用于将所述主机标识地址和路由地址维护至状态信息表中;源主机和目标主机通过所述隧道服务器,依据所述主机标识地址和路由地址进行通11.如权利要求10所述的系统,其特征在于,所述NAT类型为对称NAT,所述路由地址包括所述隧道服务器的地址信息、所述隧道服务器选择的中继器地址信息和所述用户主机的外部端口和外部地址信息。12.如权利要求10所述的系统,其特征在于,所述NAT类型为全锥形NAT或受限锥形NAT,所述路由地址包括所述隧道服务器的地址信息和所述用户主机的外部端口和外部地址f曰息。13.如权利要求10所述的系统,其特征在于,所述源主机和目标主机的通信通过以下模块实现位于源主机的通信发起模块,用于依据源主机的主机标识地址和目标主机的主机标识地址,向目标主机发起的通信请求;位于目标主机隧道服务器的路由查找模块,用于判断目标主机的隧道服务器中是否存在对应的路由地址,若有,则执行路由地址返回模块;否则,执行通知模块;位于目标主机隧道服务器的路由地址返回模块,用于将所述路由地址返回给源主机;位于目标主机隧道服务器的通知模块,用于向目标主机发送生成路由地址的通知;位于目标主机的路由地址生成模块,用于根据所述通知生成相应的路由地址,并触发所述路由地址返回模块;位于源主机的通信执行模块,用于依据从所述隧道服务器返回的路由地址与目标主机进行通信。14.如权利要求13所述的系统,其特征在于,所述源主机为在全锥形NAT域内的源主机,所述目标主机为全锥形NAT域内的目标主机。15.如权利要求13所述的系统,其特征在于,所述源主机为在受限锥形NAT域内的源主机,所述目标主机为在受限锥形NAT域内的目标主机,所述源主机和目标主机的通信实现还包括以下模块位于所述源主机和目标主机的NAT设备中的NAT映射模块,用于在NAT映射表中建立所述源主机与目标主机的映射关系。16.如权利要求13所述的系统,其特征在于,所述源主机为在对称NAT域内的源主机,所述目标主机为在对称NAT域内的目标主机,所述源主机和目标主机的通信实现还包括以下模块位于源主机的封装模块,用于将IPv6分组数据封装成IPv4分组数据;位于源主机的第一发送模块,用于依据源主机的路由地址,将所述IPv4分组数据发送至源主机的隧道服务器连接的第一中继器;位于第一中继器的第二发送模块,用于依据目标主机的路由地址,将所述IPv4分组数据发送至目标主机的隧道服务器连接的第二中继器;位于第二中继器的第三发送模块,用于将所述IPv4分组数据发送至目标主机所在的NAT设备中;NAT设备,用于将所述IPv4分组数据发送至目标主机。17.如权利要求10所述的系统,其特征在于,所述源主机为在对称NAT域内的源主机,所述目标主机为在IPv6网络中的目标主机,所述源主机和目标主机的通信通过以下模块实现位于源主机的报文请求模块,用于通过隧道服务器向目标主机发送响应请求报文;位于隧道服务器的报文转发模块,用于将所述响应请求报文发送给目标主机;位于目标主机的报文应答模块,用于向源主机应答响应回复报文,并将所述响应回复报文路由至与目标主机最接近的第二中继器;位于第二中继器的封装发送模块,用于封装所述响应回复报文,并将所述封装后的报文发送至IPv4网络端的第一中继器;位于第一中继器的分组转发模块,用于将所述封装后的报文转发给源主机的NAT设备;源主机的NAT设备,用于将所述封装后的报文转发给源主机;位于源主机的数据发送模块,用于将封装有IPv6数据包的IPv4数据包经由所述第一中继器发送至第二中继器;位于第二中继器的解包发送模块,用于解封装所述IPv4数据包,获得IPv6数据包,并将所述IPv6数据包发送至目标主机。全文摘要本发明公开了一种穿越NAT的隧道过渡方法,包括NAT域内的用户主机根据MAC地址信息和所连接的隧道服务器地址信息,生成该用户主机的主机标识地址;所述用户主机连接隧道服务器进行NAT类型的检测;根据不同的NAT类型生成相应的路由地址;所述隧道服务器将所述主机标识地址和路由地址维护至状态信息表中;源主机和目标主机通过隧道服务器,依据所述主机标识地址和路由地址进行通信。本发明以使NAT域内的用户主机在通过隧道技术接入Ipv6网络时仍能够保持端到端的特性,能够穿透所有典型类型的NAT设备,接入路由器和客户端之间可以存在任意数量和任何类型的NAT。文档编号H04L12/56GK101800781SQ20091007769公开日2010年8月11日申请日期2009年2月11日优先权日2009年2月11日发明者李兴锋,李晓东,毛伟,罗万明申请人:中国科学院计算机网络信息中心
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1