过渡技术的概述与现状
如何完成从IPv4到IPv6的转换是IPv6发展需要解决的第一个问题。现有的几乎每个网络及其连接设备都支持 IPv4,因此要想一夜间就完成从IPv4到IPv6的转换是不切实际的。IPv6必须能够支持和处理IPv4体系的遗留问题。可以预见,IPv4向 IPv6的过渡需要相当长的时间才能完成。目前,IETF已经成立了专门的工作组,研究IPv4到IPv6的转换问题,并且已提出了很多方案,主要包括以下几个类型:
1.双协议栈技术
IPv6和IPv4是功能相近的网络层协议,两者都基于相同的物理平台,而且加载于其上的传输层协议TCP和UDP又没有任何区别。由图1所示的协议栈结构可以看出,如果一台主机同时支持IPv6和IPv4两种协议,那么该主机既能与支持 IPv4协议的主机通信,又能与支持IPv6协议的主机通信,这就是双协议栈技术的工作机理。
2.隧道技术
随着 IPv6网络的发展,出现了许多局部的IPv6网络,但是这些IPv6网络需要通过IPv4骨干网络相连。将这些孤立的"IPv6岛"相互联通必须使用隧道技术。利用隧道技术可以通过现有的运行IPv4协议的Internet骨干网络(即隧道)将局部的IPv6网络连接起来,因而是IPv4向IPv6过渡的初期最易于采用的技术。
路由器将IPv6的数据分组封装入IPv4,IPv4分组的源地址和目的地址分别是隧道入口和出口的IPv4地址。在隧道的出口处,再将IPv6分组取出转发给目的站点。隧道技术只要求在隧道的入口和出口处进行修改,对其他部分没有要求,因而非常容易实现。但是隧道技术不能实现IPv4主机与IPv6主机的直接通信。
3.网络地址转换/协议转换技术
网络地址转换/协议转换技术NAT- PT(Network Address Translation - Protocol Translation)通过与SIIT协议转换和传统的IPv4下的动态地址翻译(NAT)以及适当的应用层网关(ALG)相结合,实现了只安装了 IPv6的主机和只安装了IPv4机器的大部分应用的相互通信。
上述技术很大程度上依赖于从支持IPv4的互联网到支持IPv6的互联网的转换,我们期待IPv4和IPv6可在这一转换过程中互相兼容。目前,6to4机制便是较为流行的实现手段之一。
6to4 技术
转换策略计划者考虑的关键问题是当使用者对ISP所提供的基本IPv6传输协议还没有合理的选择时,如何激活IPv6路由域间的连通性。当缺少本地IPv6 服务时, 提供连通性的解决办法之一是将IPv6的分组封装到IPv4的分组中(6over4隧道技术)。6to4是一种自动构造隧道的方式,它的好处在于只需要一个全球惟一的IPv4地址便可使得整个站点获得IPv6的连接。在IPv4 NAT 协议中加入对IPv6和6to4 的支持,是一个很吸引人的过渡方案。
1.6to4的工作原理
6to4采用特殊的IPv6地址使在IPv4海洋中的IPv6孤岛能相互连接。此时IPv6的出口路由器与其他的IPv6域建立隧道连接。IPv4隧道的末端可从IPv6域的地址前缀中自动提取,因为站点的IPv4地址包含在IPv6地址前缀中。6to4另一个让人感兴趣的特点是它可以自动从IPv6 地址的前缀中提取一个IPv4地址。通过这个机制,站点能够配置IPv6而不需要向注册机构申请IPv6地址空间。这同时也简化了ISP提供商的管理工作。可以设想,在一个拥有很多部门的企业里,各部门内部使用私有地址和NAT技术,利用6to4策略可以建立一个虚拟IPv6外部网。它同样可以重新建立起点到点的IP连接,且允许企业在不同地方的服务器使用IPsec协议,从而进一步提高了网络的安全性。此外,6to4机制还允许在采用6to4的 IPv6站点和纯IPv6站点之间通过中继路由器 ( 6to4 Relay Router )进行通信,这时不要求通信的两个端点之间具有可用的IPv4连接,中继路由器建议运行BGP4+,适应范围更广。
2.6to4的基本使用方法
6to4 机制的简单运用是在没有本地IPv6的 ISP 服务时, 几个IPv4站点需使用IPv6进行交互, 因而每一站点都需要确定一个路由来运行双层协议栈(即IPv4和IPv6兼容)和6to4隧道,以确保这个路由有全球范围的路由地址(非专用IPv4地址空间)。
在运行过程中,当6to4站点内的IPv6主机试图通过域名访问其他6to4站点内的IPv6主机时,均可通过IPv4或IPv6协议实现。访问方主机选择带有6to4前缀的IPv6地址来发送一个信息包至距离最近的路由器,直至到达站点旁的路由器(假定该站点也提供6to4服务)。
3.6to4路由器的发送接收规则
当请求方站点的6to4路由器发送信息包到另一站点(不在一个子网或一个用户网络中),并且下一个目的地址的前缀包含特殊的6to4 TLA值2002::/16,需使用41类型的IPv4协议将IPv6信息包封装于IPv4信息包内,如转换机制RFC所定义的那样。IPv4源地址包含于请求方站点的6to4前缀内(即6to4路由器的网络外部接口的IPv4地址,它包含于IPv6信息包的6to4前缀内),同时接收方IPv4地址成为下一个IPv6发送包目的地址的6to4前缀。
当接收站点的6to4路由器收到IPv4信息包,且识别出是41类型的IPv4协议时,即进行IPv4安全检测,去除文件头,用IPv6源信息包进行本地传送。
以上的发送规则是对IPv6发送规则所作的惟一修正,因为基本的IPv6转换机制的接收规则早已确定。随着DNS内加载适当个数的6to4前缀,任何站点均可脱离人工隧道配置而相互协作。
4.返回路径和源地址的选择
可以双向传送的信息包才是有效的。因此当与具有6to4前缀的站点交互时必需在发送的信息包内使用一个6to4前缀作为源地址; 换言之,源地址必须带有6to4前缀。(这个简单例子说明,双方站点仅有IPv4连通性不再是通信障碍,它们可以通过6to4前缀来进行通信)。DNS在搜寻主机名后仅可返回一个IPv6地址,且带有6to4前缀,因此上述源地址的选择不再是个问题。
5.更为复杂的6to4使用方法
当站点同时拥有6to4连通性和本地IPv6连通性时,会有多种6to4的使用方法。最简单的一种就是当某个站点试图访问另一个仅有6to4连通性的站点时,上文所提到的源地址的选择算法可确保得到站点的6to4 IPv6地址。在此并不需要选择目的地址,因为只有一个选择:6to4。
同样,当仅拥有6to4连通性的站点试图访问同时拥有6to4和本地IPv6连通性的站点时,在多个目的地址中主机的选择规则决定了6to4地址的选择,因为只有一个本地6to4 IPv6源地址是有效的。
另一特殊情况是当某个拥有6to4和本地IPv6连通性的站点试图访问另一个仅有本地IPv6连通性的站点时,制订一个源地址的选择算法可确保得到站点的本地IPv6地址。在此并不需要选择目的地址,因为只需选择本地IPv6地址即可。
6.6to4转播
最为复杂的6to4假设情况是仅有6to4连通性的站点和仅有IPV6连通性的站点进行通信。这可通过同时支持6to4和IPv6连通性的6to4转播来实现。事实上,6to4转播就是一个IPv4/IPv6双层栈路由器。
6to4 转播加载路线于IPv6底层组织所附带的2002::/16结构。IPv6网络必须过滤、丢弃任何超过16位的6to4前缀。此外,6to4转播必须加载本地IPv6路由策略允许的6to4连接,其中包括6to4路由器在只支持6to4连接的站点中选择一个BGP4+点对点进程,或是通过一个默认路由到 6to4转播。
因此,当一个只支持6to4转播的站点发送信息包给另一个只支持IPv6的站点时,它会发送一个封装的IPv6信息包给6to4转播,而6to4转播会删去 IPv4头(解封装)并把信息包传给那个只支持IPv6的站点。
理论上,上述过程可能需要由多个6to4转播来实现,每一个转播分离一个IPv6的路由域。在实际应用中,所有的IPv6 ISP都被连在一起,即使是手动配置的IPv6 ISP也是如此。
结束语
IPv6 和IPv4比较,它彻底解决了地址空间耗尽和路由表爆炸等问题,而且为IP协议注入了新的内容,使支持安全、主机移动以及多媒体成为IP协议的有机组成部分。协议的设计使路由器处理报文更加简便,扩展性也更好。目前,IPv6的实验网6Bone已经遍布全球,IP协议从IPv4过渡到IPv6已经是历史必然。 (来源:《计算机世界报》任绮年 蔡明)