IPv4/IPv6的共存与过渡

时间:2014-05-18 00:00

     因特网正面临从传统IPv4到IPv6的转变以及一段时期的共存。本文是一个技术人员结合IETF的工作对IP和IP网络的发展道路的看法。

  最后一个IPv4地址被用尽的日子越来越近了。即便允许IPv4地址空间的商业交易,或者推动ISP之间在IP层以下建立互联层,网络对大量新地址空间的需求还是需要部署IPv6。因此共存以及最终的过渡是不可避免的。为此,IETF开发了多种过渡机制,大多数写在RFC4213中。
  根据freedictionary.com的解释,过渡是“形式、状态、风格或者位置从一种转变成另一种的通道。”因此,从IPv4到IPv6的转变需要两个条件:
  第一,在应用程序服务器、服务以及对端或客户端上启用IPv6路由;
  第二, IPv4必需至少在网络上关掉。
  由此产生两个问题:
  问题一,其们允许这两个事件之间隔多久?可以在关闭IPv4的同时打开IPv6吗?或者打开IPv6后允许一段时间之后再停止IPv4?如果是后者,这个间隔多久才合理?
  问题二,在IPv6启用前,如果在IPv4网络上传送IPv6数据包?当IPv4停止后如何在IPv6网络上传送IPv4数据包?有两类解决方案:隧道和翻译。
  IPv4/IPv6共存
  从IETF的角度,目前最佳的解决方案是共存而不是过渡。先启用IPv6,等到IPv4不再是商业需求的时候再关闭IPv4。因此IETF认为,网络管理员应该:
  在现在IPv4网络中启用IPv6路由;
  与上游、对端以及下游邻居开展IPv6业务;
  同时在服务器和客户端上使用IPv6协议作为IPv4的补充。
  这样的话,网络管理员就会发现不兼容的软硬件,就会在设计预算的时候考虑这些软硬件的升级。
  支持共存的理由是显而易见的:如果由于其它网络不支持IPv6而导致IPv6不可用,受影响的软件和服务仍然可以使用IPv4。
  在网络层实现共存有至少三种方法:
  1.在IPv4路由器上启用IPv6;
  2.在用户使用的网络内部部署单独的IPv6路由器;
  3.部署可以被邻居网络和用户访问的独立的IPv6网络。
  搭建独立的网络显然比在现在设备上启用IPv6昂贵得多。
  层叠网络
  到目前为止,在纯IPv6路由和应用程序启用之间,IPv6通过隧道或MPLS(多协议标签交换)搭建的层叠网络使用。最早的,有6BONE和6NET通过静态隧道给IPv6路由。动态解决方案也发展起来了,比如6to4(RFC 3056),Teredo(RFC 4380)和ISATAP(RFC 5214)。
  一种宽带接入的解决方案是,让ISP继续维护IPv4网络,同时将IPv6作为CPE(用户终端设备)路由器和ISP标记的隧道端点之间的隧道层叠网络。在这种模型中,ISP并不提供真正的IPv6服务。作为一个过渡部署的步骤,ISP在配置CPE路由器时将隧道端点的IPv4地址,以及一个使用DHCP-PD的IPv6前缀指定给它。这将允许ISP穿越那些尚不支持真实IPv6转发的网络区域。
  在IPv6上打IPv4隧道与在IPv4上打IPv6隧道类似,尽管目前只支持静态的隧道。
  翻译技术
  如果只解决地址空间的问题,IPv4和IPv6之间的翻译并不是一个长期可行的策略。如果IPv6-IPv4的翻译足以给用户需要访问的系统编址,那么只要将现有的IPv4地址重新分配就可以了。然而翻译一般被认为是在某种情况下实现纯IPv6与纯IPv4系统或网络之间互通所必需的方法。一些在某种程度上与路径MTU(最大传输单元)检测相关的问题,在IPv6网络中是必需的,而在IPv4网络里往往是有问题的。其它还包括支持非客户端/服务器架构的应用程序,或者需要复杂的防火墙穿越机制的问题。
  无状态的IP/ICMP翻译算法(SIIT)(RFC2765)是在一个翻译路由器上实现的。这个路由器往IPv4网络中发布一个或多个IPv4前缀,向IPv6网络中发布一个前缀。它会依照定义的方式在IPv4和IPv6间或ICMP和ICMPv6之间转换。
  NAT-PT(RFC2766)用一个DNS应用层网关扩展了SIIT的概念。这个网关从IPv4网络复制A记录为装载了SIIT兼容的IPv6地址的AAAA记录,并向IPv6主机发布指向SIIT兼容的IPv4地址的A记录。然而,要实现无状态意味着要么是在IPv6网络中的主机路由,有可扩展性的问题,或者是一个小的IPv6域(一般是一个单独的局域网)接在一个更大的IPv4域上,因为IPv6地址的高96位是固定的。
  SIIT和NAT-PT有一个问题:它们都是让一个小的IPv6孤岛运行在一个一般的IPv4网络中的,而且它们在更普遍的部署中不具备可扩展性。所以IETF目前的工作是基于包括SIIT、NAT-PT和CERNET-CNGI的IVI原型,开发下一代翻译技术以支持更通用的部署。这将有助于在所有现有用户启用IPv6之前更大规模地部署纯IPv6的服务。随着IPv6的逐渐普及,这种对翻译的需求将逐渐消失。