一种利用双重隧道机制穿透nat的方法

文档序号:7700264阅读:278来源:国知局
专利名称:一种利用双重隧道机制穿透nat的方法
技术领域
本发明涉及一种利用双重隧道机制穿透NAT(Network AddressTranslation,网络地址翻译)的方法,特别涉及一种利用一个隧道服务器,建立双重隧道,使用IPv4(Internet Protocol Version 4,IP第4版)报文来封装传递IPv6(Internet Protocol Version 6,IP第6版)报文,使位于IPv4 NAT后面的IPv6/IPv4双栈主机,能够使用自己的IPv4私有地址,通过隧道机制,穿越IPv4网络,和其他的IPv6主机建立连接的方法。
借助微软公司所提出的Teredo方案可以解决这一问题,但是Teredo的实现比较复杂,很难和现有的网络结构兼容。不仅需要增设TeredoServer(Teredo服务器)来协助Teredo Client(Teredo用户)建立连接,还要求Teredo Client所要访问的一般IPv6站点附近的路由器有Teredo Relay(Teredo中继)的功能,即该路由器不但能识别Teredo格式的IPv6地址,并能和Teredo Server共同完成穿透NAT的功能,而后再将报文在Teredo Client和其他IPv6节点间转发。这必然需要对所有的IPv6网络入口处的路由器进行升级。另外,Teredo Client的IPv6地址是由Teredo Server的IPv4地址和端口,以及Teredo Client经NAT转换后的外部公有IPv4地址和端口共同组成的,所以其IPv6网络标识也依赖于IPv4地址,需要申请并注册特定的IPv6地址空间,否则无法接收由其他的IPv6结点所首先发起的连接。
本发明的另一个目的是提供一种穿透NAT的通用方法,该方法通过增加伪隧道头,可以穿透所有类型的NAT,并且和现有的网络体系兼容,无需对现有的路由设备进行升级。在UDP报文的负荷部分所定义的伪隧道头部用于指明目的结点所在IPv6网络的IPv4入口地址,以及必要的控制信息,可用于传输性能优化、网络安全、以及网络控制及管理。
本发明的另一个目的是提供一种穿透NAT的方法,该方法提供了一个公共的地址服务器,用于注册并查询所有的IPv6网络地址及其对应的IPv4入口地址,以保证所有发往该IPv6网络的报文都会在封装后发给这个IPv4入口地址,不仅便于地址的集中查询和管理,有效地提高报文传输的效率,也可以很好地和DNS(域名服务)等其他的网络服务相集成。
本发明的另一个目的是提供一种穿透NAT的方法,使位于IPv4 NAT后面的IPv6/IPv4双栈主机可以使用独立于IPv4地址的任意IPv6地址,该地址在公共的地址服务器上注册后,即可接收由其他IPv6结点首先发起的连接。
本发明的另一个目的是提供一种穿透NAT的方法,使位于IPv4 NAT后面的IPv6/IPv4双栈主机不仅能和一般的IPv6结点建立连接,也可以和其它位于IPv4 NAT后面的IPv6/IPv4双栈主机建立连接。
要解决穿透NAT的问题,首先要分析NAT的实现机制。NAT实现的核心是把内部网络中数据报文的地址(称为内部地址或私有地址)翻译为外部合法地址(称为外部地址或公有地址)并向外部网络发送,而在收到外部数据报文后,再翻译为内部地址并向内部网络发送。所谓外部地址或公有地址,是由Inter NIC(Internet Network Information Center,因特网信息中心)分配给提出申请的组织机构的可以直接访问因特网的全局IP地址。而内部地址或私有地址则属于非注册地址,专门为组织机构内部使用,无法直接访问外部因特网。NAT的实质就是动态维护一个映射表,用来把内部的地址(IP地址,端口)映射到合法的外部地址上去。用<IN.ip,IN.port>表示内部计算机的地址,对应的NAT翻译后的合法外部地址为<NAT.ip,NAT.port>,而与之通信的外部计算机地址就相应表示为<OUT.ip,OUT.port>。因此,在NAT系统中,映射表就表示为这样一个<IN.ip,IN.port,NAT.ip,NAT.port,OUT.ip,OUT.port>六元组的映射表项的集合。当内部网络有报文时,若其目标地址不在内部,NAT就以<IN.ip,IN.port>为关键字查找该映射表,表项存在时直接翻译并向外转发报文;否则分配新的地址资源<NAT.ip,NAT.port>,记录新的表项后再翻译转发报文。收到外部报文后,以<NAT.ip,NAT.port>为关键字查找,找到后进行地址翻译并向内部转发。这种表项是动态维护的,超过一定时间还未继续使用的<NAT.ip,NAT.port>会被系统自动回收,以备下次重新分配。
根据NAT具体实现时的策略可以对NAT进行分类。当报文源在NAT内部时,此时根据内部报文由内向外转发时的匹配过程来分类。当根据(IN.ip,IN.port>查找到对应元组后(匹配失败说明需要申请新的网络资源),主要有2种具体的实现方式。一种称为最少端口分配方式,此时直接进行地址翻译,然后发送数据即可。另外一种方式称为竞争端口分配方式,需要匹配原来预存的<OUT.ip,OUT.port>(或两者之一),若匹配结果不一致,则认为需要重新生成新的端口;否则才允许进行地址翻译并发送。当报文源在NAT外部时,此时根据外部报文的匹配过程来分在收到外部报文后根据(NAT.ip,NAT.port>查找到对应元组,匹配失败说明该报文非法,直接丢弃;否则存在3种常见的匹配规则I.不进行任何匹配,直接用<IN.ip,IN.port>进行地址翻译,称之为宽匹配方式。
II.只匹配OUT.ip或OUT.port,即对报文的源地址或端口实现甄别,如果与对应元组中存放的不符,认为是非法报文而直接丢弃,否则再进行地址翻译。相应的,可以称之为地址匹配/端口匹配方式。
III.匹配OUT.ip和OUT.port,只有两者全部符合的情况下才进行地址翻译,称为安全匹配方式。
本发明所提出的方法可以穿透上述所有的NAT类型,主要是利用含有伪隧道头部的IPv4的UDP(用户数据报协议)报文来封装传递IPv6报文,并通过一个隧道服务器来建立双重隧道,以完成穿透NAT的功能。选用UDP报文作为承载报文的原因是,TCP(传输控制协议)报文和UDP报文是唯一两个可以通过所有常用的NAT类型的报文类型。而由于TCP的拥塞控制机制,利用TCP来传输IPv6报文实时性差,故此选用UDP报文作为承载报文。隧道服务器必须具有IPv4的公有地址,可以是IPv6/IPv4双栈主机,也可以是一台纯IPv4主机。它主要完成对位于IPv4NAT后面的IPv6/IPv4双栈主机所传来的具有伪隧道头部的IPv4报文(里面封装了IPv6报文)进行重新组装,去掉伪隧道头部后向真正的目的结点转发;对外部传来的封装了IPv6报文的IPv4报文也重新进行组装,向位于IPv4 NAT后面的IPv6/IPv4双栈主机转发的功能。
该方法提供了一个公共的地址服务器,用于注册并查询所有的IPv6网络地址及其对应的IPv4入口地址,以保证所有发往该IPv6网络的报文都会在封装后发给这个IPv4入口地址,这不仅便于地址的集中查询和管理,可有效地提高报文传输的效率,也可以很好地和DNS域名服务的网络服务相集成。
此外,要求隧道服务器的IPv4地址对位于IPv4 NAT后面的IPv6/IPv4双栈主机来说是公开的,即该主机已知可用的隧道服务器的地址或地址列表。另外,位于IPv4 NAT后面的IPv6/IPv4双栈主机的IPv6地址在公共的地址服务器上所注册的IPv4入口是隧道服务器的IPv4地址。而且隧道服务器保存着一张地址映射表,记录以自己的IPv4地址所注册的IPv6地址的真正IPv4入口(即位于IPv4 NAT后面的IPv6/IPv4双栈主机经NAT转换后的公有IPv4地址)。本发明通过下述技术方案来实现。
一种利用双重隧道机制穿透NAT(网络地址翻译)的方法,通过一个隧道服务器建立双重隧道,使位于IPv4(Internet Protocol Version 4,IP第4版)NAT后面的IPv6/IPv4双栈主机,能够使用自己的IPv4私有地址建立隧道,从而穿越IPv4网络,和其他的IPv6(Internet ProtocolVersion 6,IP第6版)主机建立连接;上述的穿透NAT的方法,利用含有伪隧道头部的IPv4的UDP(用户数据报协议)报文来封装传递IPv6报文,并通过一个隧道服务器来完成穿透NAT的功能。
在UDP报文的负荷部分所定义的伪隧道头部,用于指明目的结点所在IPv6网络的IPv4入口地址以及必要的控制信息,可用于传输性能优化、网络安全、以及网络控制及管理。
该方法可以穿透所有类型的NAT,并且和现有的网络体系兼容,无需对现有的路由设备进行升级。
穿透NAT的方法,提供了一个公共的地址服务器,用于注册并查询所有的IPv6网络地址及其对应的IPv4入口地址,以保证所有发往该IPv6网络的报文都会在封装后发给这个IPv4入口地址,这不仅便于地址的集中查询和管理,可有效地提高报文传输的效率,也可以很好地和DNS(域名服务)等其他的网络服务相集成。
位于IPv4 NAT后面的IPv6/IPv4双栈主机可以使用独立于IPv4地址的任意IPv6地址,该地址在公共的地址服务器上注册后,即可接收由其他IPv6结点首先发起的连接。
使位于IPv4 NAT后面的IPv6/IPv4双栈主机不仅能和一般的IPv6结点建立连接,也可以和其他位于IPv4 NAT后面的IPv6/IPv4双栈主机建立连接。


图1中,先来看一下一般的IPv6结点间的通讯过程。假设IPv6结点A想发起到IPv6结点B的连接。因为目前的互联网络仍是基于IPv4的,各个IPv6网络都通过一台双栈主机或路由器连入IPv4网络,以实现与其他IPv4网络或IPv6网络的互通,这台双栈主机或路由器的IPv4地址即为该IPv6网络的入口地址。这里我们提供了一个公共的地址服务器,用于注册并查询所有的IPv6网络地址及其对应的IPv4入口地址。所以,A需要先从公共的地址服务器上查询得到B所在IPv6网络的IPv4入口地址,然后将以A,B为源和目的地址的IPv6报文封装在IPv4报文里面,发给B所在IPv6网络的IPv4入口地址(如果A为纯IPv6节点,则封装过程需由A所在网络的IPv4入口来完成),B所在IPv6网络的IPv4入口处的双栈主机或路由器去掉IPv4报文头部后,再将IPv6报文转发给B。当然,如果B本身即为双栈主机,且已注册,则该报文会直接发给B的IPv4地址,由B来去掉IPv4报文头部。
现在,假设A为双栈结点,且位于IPv4 NAT后面,即A只有NAT所分配的IPv4的私有地址,无IPv4的公有地址。A想发起到其他IPv6网络的IPv6结点B的连接(B可为一般的IPv6主机,也可为位于IPv4 NAT后面的IPv6/IPv4双栈主机)。A首先形成以A,B为源和目的地址的IPv6报文,并形成一个伪隧道头部,该头部指明B所在IPv6网络的IPv4入口地址(在公共的地址服务器上查询得到)以及必要的控制信息,然后将此两部分一同封装在IPv4的UDP报文里面,此报文的目的地址为隧道服务器S的IPv4地址。S收到此报文后,将伪隧道头部取出,而后重新生成一个IPv4报文,以S的IPv4地址和B所在IPv6网络的IPv4入口地址分别作为源和目的地址,其内容是A所封装的以A,B为源和目的地址的IPv6报文。S可以为纯IPv4主机,无需具体识别IPv6报文,只是将A传来的报文除去伪隧道头部后,重新生成以S的IPv4地址和B所在IPv6网络的IPv4入口地址为源和目的地址的IPv4报文。反之,由于A的IPv6地址所注册的IPv4入口是隧道服务器S的IPv4地址,所以B传给A的IPv6报文封装后会发给S的IPv4地址。S收到后,将IPv6报文的目的地址取出。S可以为纯IPv4主机,无需真正识别IPv6报文,只是将收到的封装IPv6报文的IPv4报文内容中和IPv6目的地址相对应的部分取出,去匹配地址映射表,找出真正的IPv4入口(即A经过NAT映射后的公有IPv4地址)。然后重新生成一个IPv4的UDP报文,以S的IPv4地址和A经过NAT映射后的公有IPv4地址分别作为源和目的地址,而UDP报文内容是刚接到的报文的数据部分(即B传给A的IPv6报文)。由于A和S之间已经在NAT的地址映射表中建立了映射表项,所以NAT会将该报文转发给A。这样,通过隧道服务器对数据的重新组装和转发,建立了双重隧道,从而使位于IPv4 NAT后面的IPv6/IPv4双栈主机,能够使用自己的IPv4私有地址,穿越IPv4网络,和其他的IPv6主机建立连接。图1说明上述双重隧道机制工作的过程。需要说明的是,无论哪种NAT,映射表项都不是永久保存的。所以A应该向S定期发送联络报文,来维持NAT中相应的映射表项。
我们提出的利用隧道服务器建立双重隧道穿透NAT的方法可以使位于IPv4 NAT后面的IPv6/IPv4双栈主机,能够使用自己的IPv4私有地址,通过隧道机制,穿越IPv4网络,和其他的IPv6主机建立连接。该方法通过增加伪隧道头部,可以穿透所有类型的NAT,并且和现有的网络体系兼容,无需对现有的路由设备进行升级。在UDP报文的负荷部分所定义的伪隧道头部用于指明目的结点所在IPv6网络的IPv4入口地址以及必要的控制信息,可用于传输性能优化、网络安全、以及网络控制及管理。该方法通过一个公共的地址服务器来注册并查询IPv6网络的IPv4入口地址,所有的IPv6网络地址及其对应的IPv4入口地址都必须在该服务器上进行注册,以保证所有发往该IPv6网络的报文都会在封装后发给这个IPv4入口地址,这样不仅便于地址的集中管理和查询,有效地提高报文传输的效率,也可以很好地和DNS等其他的网络服务相集成。使用这种方法,位于IPv4 NAT后面的IPv6/IPv4双栈主机可以使用独立于IPv4地址的任意IPv6地址,该地址在公共的地址服务器上注册后,即可接收由一般IPv6结点主动发起的连接,并且可以和其他位于IPv4 NAT后面的IPv6/IPv4双栈主机建立连接。这对于处理现有IPv4网络和未来IPv6网络之间的关系,从而实现IPv4向IPv6的平滑过渡有着重要的意义。
权利要求
1..一种利用双重隧道机制穿透NAT网络地址翻译的方法,其特征在于,通过一个隧道服务器建立双重隧道,使位于IPv4,NAT后面的IPv6/IPv4双栈主机,能够使用自己的IPv4私有地址建立隧道,从而穿越IPv4网络,和其他的IPv6主机建立连接。
2.根据权利要求1所述的穿透NAT的方法,其特征在于,利用含有伪隧道头部的IPv4的UDP用户数据报协议报文来封装传递IPv6报文,并通过一个隧道服务器来完成穿透NAT。
3.根据权利要求1所述的穿透NAT的方法,其特征在于,在UDP报文的负荷部分所定义的伪隧道头部,用于指明目的结点所在IPv6网络的IPv4入口地址以及必要的控制信息,可用于传输性能优化、网络安全、以及网络控制及管理。
4.根据权利要求1所述的穿透NAT的方法,其特征在于,该方法可以穿透所有类型的NAT,并且和现有的网络体系兼容,无需对现有的路由设备进行升级。
5.根据权利要求1所述的穿透NAT的方法,其特征在于,提供了一个公共的地址服务器,用于注册并查询所有的IPv6网络地址及其对应的IPv4入口地址,以保证所有发往该IPv6网络的报文都会在封装后发给这个IPv4入口地址,这不仅便于地址的集中查询和管理,可有效地提高报文传输的效率,也可以很好地和DNS域名服务的网络服务相集成。
6.根据权利要求1所述的穿透NAT的方法,其特征在于,位于IPv4NAT后面的IPv6/IPv4双栈主机可以使用独立于IPv4地址的任意IPv6地址,该地址在公共的地址服务器上注册后,即可接收由其他IPv6结点首先发起的连接。
7.根据权利要求1所述的穿透NAT的方法,其特征在于,使位于IPv4 NAT后面的IPv6/IPv4双栈主机不仅能和一般的IPv6结点建立连接,也可以和其他位于IPv4 NAT后面的IPv6/IPv4双栈主机建立连接
全文摘要
一种利用双重隧道机制穿透NAT(网络地址翻译)的方法,主要是利用含有伪隧道头部的IPv4(IP第4版)报文来封装传递IPv6(IP第6版)报文,并通过一个隧道服务器的重新封装,使位于IPv4 NAT后面的IPV6/IPv4双栈主机,能够使用自己的IPv4私有地址建立双重隧道,从而穿越IPv4网络,和其他的IPv6主机建立连接。该方法可以穿透所有类型的NAT,并且和现有的网络体系兼容,无需对现有的路由设备进行升级。利用这种方法穿透NAT时,位于IPv4 NAT后面的IPv6/IPv4双栈主机可以使用独立于IPv4地址的任意IPv6地址,该地址在公共的地址服务器上注册后,即可接收由一般IPv6结点主动发起的连接,并且可以和其他位于IPv4 NAT后面的IPv6/IPv4双栈主机建立连接。
文档编号H04L12/24GK1476206SQ0314747
公开日2004年2月18日 申请日期2003年7月14日 优先权日2003年7月14日
发明者刘敏, 吴贤国, 石晶林, 李忠诚, 刘 敏 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1