IPv6和IPv4之间的通信机制和方法

在前面两个部分(《IPv6技术之发展现状和技术原理》《IPv6技术之移动连接特性简述》)中主要讲解了IPv6自身的一些原理和特点,但是由于现存的网络体系多为IPv4结构,因此,在今后较长的一段时间里都将是两者相互并存,这就势必造成两者之间相互通信的问题,幸好,IPv6的设计者们已经为这个问题准备好了解决方法。
一、背景现状

尽管IPv6已被认为是下一代互联网络协议核心标准之一。但是,新生事物从诞生到广泛应用需要一个过程,尤其是对于现时IPv4仍然很好的支撑着的Internet。在IPv6的网络流行于全球之前,总是有一些网络首先使用IPv6协议栈并希望能够与当前的Internet正常通信。为达到这一目的,研究者们必须开发出IPv4 / IPv6互通技术以保证IPv4能够平稳过渡到IPv6,除此之外,互通技术应该对普通用户做到“无缝”,使用起来没有感到不便,对信息传递做到高效。

在过渡时期,要解决相互通信的问题无非两类:第一类就是IPv6之间互相通信的问题;第二类就是解决IPv6与IPv4之间的通信问题。

针对这两类问题已经提出了很多方案,有一些已经相当成熟并形成了RFC(Request For Commnets),有一些还只是作为Internet draft,有待进一步完善。

二、过渡技术

目前解决过渡问题基本技术主要有三种:双协议栈(RFC 2893 obsolete RFC1933)、隧道技术(RFC 2893)、NAT-PT(RFC 2766)。

(1) 双协议栈 ( Dual Stack)

采用该技术的节点上同时运行IPv4和IPv6两套协议栈。这是使IPv6节点保持与纯IPv4节点兼容最直接的方式,针对的对象是通信端节点(包括主机、路由器)。这种方式对IPv4和IPv6提供了完全的兼容,但是对于IP地址耗尽的问题却没有任何帮助。由于需要双路由基础设施,这种方式反而增加了网络的复杂度。

(2) 隧道技术 ( Tunnel)

隧道技术提供了一种以现有IPv4路由体系来传递IPv6数据的方法:将IPv6的分组作为无结构意义的数据,封装在IPv4数据报中,被IPv4网络传输。根据建立方式的不同,隧道可以分成两类:(手工)配置的隧道和自动配置的隧道。隧道技术巧妙地利用了现有的IPv4网络,它的意义在于提供了一种使IPv6的节点之间能够在过渡期间通信的方法,但它并不能解决IPv6节点与IPv4节点之间相互通信的问题。

(3) 网关转换(NAT-PT)

转换网关除了要进行IPv4地址和IPv6地址转换,还要包括协议并翻译。转换网关作为通信的中间设备,可在IPv4和IPv6网络之间转换IP报头的地址,同时根据协议不同对分组做相应的语义翻译,从而使纯IPv4和纯IPv6站点之间能够透明通信。

三、IPv6通信

它是指v6与v6之间的通信,主要方法有以下几种:

(1) 手工配置隧道 ( Configured Tunnel)

这种隧道的建立是手工配置的,需要隧道两个端点所在网络的管理员协作完成。隧道的端点地址由配置来决定,不需要为站点分配特殊的IPv6地址,适用于经常通信的IPv6站点之间。每一个隧道的封装节点必须保存隧道终点的地址,当一个IPv6包在隧道上传输时终点地址会作为IPv4包的目的地址进行封装。通常封装节点要根据路由信息决定一个包是否要通过隧道转发。

采用手工配置隧道进行通信的站点之间必须有可用的IPv4 连接,并且至少要具有一个全球唯一的IPv4地址。站点中每个主机都至少需要支持IPv6,路由器需要支持双栈。在隧道要经过NAT设施的情况下这种机制不可用。

手工配置隧道的主要缺点是网络管理员的负担很重,因为他要为每一条隧道做详细的配置。

(2) 自动配置的隧道 ( Auto-configured Tunnel )

这种隧道的建立和拆除是动态的,它的端点根据分组的目的地址确定,适用于单独的主机之间或不经常通信的站点之间。自动配置的隧道需要站点采用IPv4兼容的IPv6地址,这些站点之间必须有可用的IPv4连接,每个采用这种机制的主机都需要有一个全球唯一的IPv4地址。

采用这种机制不能解决IPv4地址空间耗尽的问题(采用手工配置隧道的站点就不需要IPv4地址)。两外还有一种危险就是如果把Internet 上全部IPv4路由表包括到IPv6网络中,那么会加剧路由表膨胀的问题。这种隧道的两个端点都必须支持双协议栈(手工配置就不需要)。在隧道要经过NAT设施的情况下这种机制不可用。

(3) 隧道中介(Tunnel Broker)

Tunnel Broker不是一种隧道机制,而是一种方便构造隧道的机制。可以简化隧道的配置过程,适用于单个主机获取IPv6连接的情况。Tunnel Broker也可用于站点之间,但这时可能会在IPv6的路由表中引入很多条目,导致IPv6的路由表过于庞大,违背了IPv6设计的初衷。用户可以通过Tunnel Broker从支持IPv6的ISP处获得持久的IPv6地址和域名。 Tunnel Broker要求隧道的双方都支持双栈并有可用的IPv4连接,在隧道要经过NAT设施的情况下这种机制不可用。采用TB方法,可以使IPv6 的ISP可以很容易对用户执行接入控制,按照策略对网络资源进行分配。

TB转换机制包括Tunnel Server(TS)和Tunnel Broker(TB)。server和boker位于不同的计算机上,对于隧道的控制通常是web形式的。

(4) 6 over 4

6 over 4 是一种点到点、点到路由和路由到点的自动隧道技术,它被用作通过Ipv4内部网的Ipv6节点之间的单点或多点连接。这种隧道端点的IPv4地址采用邻居发现的方法确定。与手工配置隧道不同的是,它不需要任何地址配置;与自动隧道不同的是它不要求使用V4兼容的V6地址。但是采用这种机制的前提就是IPv4网络基础设施支持IPv4多播。这里的IPv4多播域可以是采用全球唯一的IPv4地址的网络,或是一个私有的IPv4网络的一部分。这种机制适用于IPv6路由器没有直接连接的物理链路上的孤立的IPv6主机,使得它们能够将IPv4广播域作为它们的虚拟链路,成为功能完全的IPv6站点。基本原理如下图示。 

 

(5) 6 to 4

6to4也是一种将v4转换成v6的自动构造隧道机制,这种机制要求站点采用特殊的IPv6地址,这种地址是自动从站点的IPv4地址派生出来的。所以每个采用6to4机制的节点至少必须具有一个全球唯一的IPv4地址,(这种地址分配方法,可以使得其它域的边界路由器自动地区分隧道接收端点是否在本域内)。由于这种机制下隧道端点的IPv4地址可以从IPv6地址中提取,所以隧道的建立是自动的。6to4不会在IPv4的路由表中引入新的条目,在IPv6的路由表中只增加一条表项。采用6to4机制的IPv6 ISP只需要做很少的管理工作,这种机制很适用于运行IPv6的站点之间的通信。6to4要求隧道中至少有两台路由器支持双栈和6to4,主机要求至少支持IPv6协议栈。

这种机制把广域的IPv4网络作为一个单播的点到点链路层。这种机制适合作为V4/V6共存的初始阶段的转换工具,它可以与防火墙、NAT共存,但是NAT box必须具有全球唯一的IPv4地址,并且应有6to4机制和完备的路由功能。在windows2003中的原理如下图。 

 

四、IPv6/IPv4通信

(1) Dual Stack Model (双栈模型 )

在这种模型下,任意节点都是完全双栈的。这时不存在IPv4与IPv6之间的相互通信问题,但是这种机制要给每一个IPv6的站点分配一个IPv4地址。这种方法不能解决IPv4地址资源不足的问题,而且随着IPv6站点的增加会很难得到满足,因此这种方法只能用在早期的变迁过程。

(2) Limited Dual Stack Model (限制型双栈模型)

在这种模型下,服务器和路由器仍然是双栈的,而非服务器的主机只需要支持IPv6。这种机制可以节省大量的IPv4地址,但是在纯IPv6和纯IPv4节点之间的通信将会出现问题,为了解决这种问题,必须与其它技术结合使用。

(3) SIIT ( Stateless IP/ ICMP Translation,无状态IP/ICMP 转换 )

SIIT定义了在IPv4和IPv6的分组报头之间进行翻译的方法,这种翻译是无状态的,因此对于每一个分组都要进行翻译。这种机制可以和其它的机制(如NAT-PT)结合,用于纯IPv6站点同纯IPv4站点之间的通信,但是在采用网络层加密和数据完整性保护的环境下这种技术不可用。纯IPv6节点和纯IPv4节点通过一个SIIT转换器通信,IPv6节点看到的对方一个IPv4 mapped地址的主机,同时它自己则使用一个IPv4 translated的地址。如果IPv6主机发出的IP分组中的目的地址是一个IPv4 mapped地址,那么SIIT转换器就知道这个IP分组需要进行协议转换。

(4) NAT-PT (Network Address Translation - Protocol Translation,网络地址—协议转换 )

NAT-PT就是在做IPv4/IPv6地址转换(NAT)的同时在IPv4分组和IPv6分组之间进行报头和语义的翻译(PT)。适用于纯IPv4站点和纯IPv6站点之间的通信。对于一些内嵌地址信息的高层协议(如FTP),NAT-PT需要和应用层的网关协作来完成翻译。在NAT-PT的基础上利用端口信息,就可以实现NAPT-PT,这点同目前IPv4下的NAT-PT没有本质区别。

该机制适用于过渡的初始阶段,使得基于双协议栈的主机,能够运行IPv4应用程序与IPv6应用互相通信。这种技术允许不支持IPv6的应用程序透明地访问纯IPv6站点。该机制要求主机必须是双栈的,同时要在协议栈中插入三个特殊的扩展模块:域名解析器、地址映射器和翻译器,相当于在主机的协议栈中使用了NAT-PT。

(5) BIA ( Bump-In-the-API, Internet Draft )

这种技术同BIS类似,只是在API层而不是在协议栈的层次上进行分组的翻译,所以它的实现比BIS要简单一些,因为不需要对IP包头进行翻译。BIS与BIA的主要区别是:BIS用在没有IPv6协议栈的系统上,BIA用在有IPv6协议栈的系统上。

当双栈主机上的IPv4应用与其它IPv6主机通信时,API翻译器检测到从IPv4应用发出的基于socket API的函数,就调用IPv6 socket API函数与IPv6主机通信。

除了上述7种通信方式,IPv6与IPv4之间还可以通过TRT、DSTM、ALG等方式进行通信。因为篇幅的关系,不再予以介绍。

五、过渡机制

从已有的过渡机制可以看出,目前所有的方案都是针对某一种问题而提出的。这些过渡机制都不是普遍适用的,每一种机制都适用于某种或几种特定的网络情况,而且常常需要和其它的技术组合使用。在实际应用时需要综合考虑各种实际情况来制定合适的过渡策略。对于某一类互连问题,设计者们可以找出新的方式,并随着网络技术和发展不断的改进和更新这种方式。

为选择一个合适的机制,首先要明确应用的类型、范围和系统的类型,然后选择合适的转换机制进行设计和实施。

你可能感兴趣的:(IPv6和IPv4之间的通信机制和方法)