仝亚鹏1,李振强2,魏冰2
(1.北京邮电大学网络技术研究院 2.中国移动通信有限公司研究院)


摘 要:本文对正在IETF进行热烈讨论的6rd,DS-lite,A+P,NAT64,PNAT,IVI等最新IPv6过渡技术进行了介绍和分析比较。

1 引言
随着互联网技术在全球范围内飞速发展,网民规模不断扩大,联网设备快速增加,对IP地址的需求变得极为迫切。然而,IPv4地址不足,已成为离我们越来越近的事实。据IANA(The Internet Assigned Numbers Authority)统计,截至2010年9月,全球IPv4地址仅剩2.1亿个尚未分配,即相当于所有IPv4地址数的5%。根据APNIC首席科学家Geoff Huston预测,按照当前的消耗速度,IANA地址池中的IPv4地址将于2011年6月耗尽,地区性互联网注册管理机构(RIR)的IPv4地址将于2012年耗尽[1]。
IPv6是新一代的网络协议,采用128位地址格式,地址空间巨大,能够彻底解决IPv4地址不足问题。经过十几年的研究、实验和产业推动,IPv6目前已经走到商用部署阶段。
IPv6与IPv4不兼容,因此在当前IPv4占主导的网络环境下,IPv4向IPv6的平滑过渡成为IPv6能否成功的关键。终端/主机是地址消耗的主要部分,终端/主机(或者说接入网)采用什么样的技术方案进行过渡将导致需要不同的IPv6过渡技术。目前IETF( Internet Engineering Task Force)等标准化组织正在讨论的过渡技术也集中在终端/主机的过渡技术方面。
本文主要介绍了最新的和终端/主机相关的IPv6 过渡技术:6rd[2],DS-lite[3],NAT64[4],PNAT[5][6],IVI[7],A+P[8]。第二部分分别介绍这些过渡技术的基本原理和适用场景,第三部分对这些过渡技术进行了分析比较。最后是结论。
2 最新IPv6过渡技术
2.1 6rd 
目前,运营商的骨干网以IPv4为主,升级到IPv6网络需要时间和成本,需要一种技术能够在现有网络架构上快速提供IPv6站点之间的互通。6rd(IPv6 Rapid Deployment on IPv4 Infrastructures)就是这样一种方案。它由法国运营商FREE提出,现已成为IETF 标准【RFC5569】,FREE采用该方案在5周内为超过150万户居民提供了IPv6服务。思科公司进一步改进与扩展了6rd,目前已形成提案标准【RFC5969】[9]。
6rd是一种IPv6-in-IPv4隧道技术,部署场景如图1所示:
 
  图1中,6rd CE(Customer Edge)与6rd BR(Border Realy)都是双栈设备,它们之间保持IPv4网络。通过扩展的DHCP选项,6rd CE的WAN接口可得到运营商为其分配的IPv6前缀、IPv4地址(公有或私有)以及6rd BR的IPv4地址等参数。CE在LAN接口上通过将上述6rd IPv6前缀与IPv4地址相拼接构造出用户的IPv6前缀。当用户开始发起IPv6会话,IPv6报文到达CE后,CE用IPv4包头将其封装进隧道,被封装的IPv6报文通过IPv4包头进行路由,中间的设备对其中的IPv6报文不感知。BR作为隧道对端,收到IPv4数据包后进行解封装,将解封装后的IPv6报文转发到全球IPv6网络中,从而实现终端用户对IPv6业务的访问。
  6rd建立在6to4[10]的基础之上,但6to4站点与非6to4站点的互通需借助于6to4中继路由器, 6to4中继为避免路由泄露问题,不能把比2002::/16更长的前缀通告给外部纯IPv6网络,因此6to4网络A的中继路由器可能收到本应发给6to4网络B的数据包,用户的QoS会大受影响。而6rd BR对外通告的是该ISP的特定IPv6前缀,能保证来自于全球IPv6网络的数据包只要进入该ISP的6rd BR,那么目的地一定是该ISP的用户站点。为方便管理,ISP可分配不同的IPv6前缀将本网络划分为不同的6rd域,用户在访问同一域内的主机时可以直接建立隧道连接,不必再经过6rd BR。
  6rd是一种快速灵活的为终端用户提供IPv6业务的方法,对运营商的核心网络影响极小,整个过程无状态。它为运营商在IPv6过渡初期引入IPv6服务提供了思路。这种方案中,需要同时为终端分配IPv6前缀和IPv4公有/私有地址,仍不能减少IPv4地址的消耗。由于IPv6地址前缀受IPv4地址影响,该方案也存在IPv6地址欺骗的缺点;同时,该方案也要求分配给CE的IPv4地址需要较长的租用期。
2.2 DS-lite
随着IPv4可分配地址资源的耗尽,越来越多的运营商在接入网与核心网着手部署IPv6网络。但终端与业务平台不可能在短时间内升级支持IPv6,那么在IPv6-only接入网环境下,如何实现终端对原有IPv4业务的访问是必须解决的问题。在此背景下,美国的Comcast提出了DS-lite(Dual-Stack Lite)技术。
DS-lite是一种IPv4-in-IPv6隧道技术,可实现在IPv6-only接入网环境下,双栈或IPv4-only主机访问IPv4网络资源。DS-lite技术只给终端分配IPv6地址,终端的IPv4地址被配置为私有地址或者IANA定义的不可路由的熟知地址(192.0.0.0/29),终端发送的IPv4数据包在经过IPv6包头封装穿越IPv6网络到达运营商AFTR(Address Family Transition Router,也称作大规模NAT)后,源地址会被映射为公有IPv4地址,进而实现对全球IPv4网络的访问。DS-lite的基本场景如图2所示。
 
DS-lite有基于家庭网关和基于主机两种架构。如图2,终端A通过家庭网关设备接入网络,属于基于家庭网关的DS-lite架构(下称架构一)。终端B直接连入网络,属于基于主机的DS-lite架构(下称架构二)。
在架构一中,HG是双栈设备,如果终端是IPv4-only的,它会作为DHCPv4服务器在LAN接口为终端A分配【RFC1918】[10]定义的私有地址;如果终端是双栈的,它可支持IPv6自动配置或作为DHCPv6服务器为终端分配一个私有IPv4地址和一个全球IPv6地址。B4(Basic Bridging BroadBand )单元是HG的WAN接口,它可从运营商网络侧获取IPv6地址,并通过扩展的DHCP v6选项得到隧道对端AFTR设备的IPv6地址。当终端访问IPv4业务时,发送IPv4数据包给HG,HG将收到的数据包封装到IPv4-in-IPv6 Softwire隧道中将其转发给网络侧的AFTR。当终端访问IPv6业务时,终端的IPv6数据包直接通过HG转发到IPv6网络中。AFTR也是双栈设备,除了与B4建立隧道连接,它的NAT模块负责将源私有IPv4地址映射为目的公有IPv4地址,并保存NAT映射表。NAT映射表中不仅包含了地址与端口号,还包含了隧道标识(用HG的IPv6地址表示),AFTR根据[隧道标识+IPv4+端口]来唯一标识终端主机。经过AFTR处理的数据包最终被路由到全球IPv4网络。
架构二中,终端B集成了HG的功能。终端B支持双栈并且只获得IPv6地址,它预先为自己配置了非可路由的熟知IPv4地址(192.0.0.0/29)。当设备B访问IPv4业务时,它将创建到AFTR的IPv4-in-IPv6 Softwire隧道。其余过程,与架构一相同。
DS-lite技术可以满足运营商引入IPv6网络后,终端对IPv4业务的访问需求。运营商只需给终端分配IPv6地址,节约了IPv4地址并且极大地简化了对接入网的管理。在HG与AFTR之间是纯IPv6网络,可以基于这个接入网进行IPv6网络的增量建设。由于网络侧AFTR设备需进行大量的NAT地址映射及查询工作,对AFTR的性能也提出了很高要求。
2.3 A+P
目前ISP即将面临没有足够的IPv4地址分配给CPE的问题,在IPv6尚未大规模部署的情况下,IPv4地址的共享似乎不可避免。法国电信、Nokia、IIJ等公司提出了A+P(Address+PortRange)过渡方案。A+P是一种地址共享的方案,它的主要思想是:将同一个全球公共IPv4地址分配给多个用户使用,同时限制每个用户可用的源端口范围。下图显示A+P技术的基本架构:
 
A+P的主要实现方法是隧道封装和端口协商。为实现地址共享,CPE需要获得一个端口限定于一定范围内的公有IPv4地址,这相当于从TCP/UDP头部“偷”了一部分比特位进行地址的扩展,假设限制端口长度为8比特,那么IPv4地址就增加了8比特有效位,256个用户可以复用同一个IPv4地址。端口协商是通过A+P的信令功能实现的,通过它可以在CPE和PRR(Port Range Router)等实体之间传递必要信息:如全球唯一的IPv4地址、可用端口号范围、隧道类型和隧道对端信息等。信令功能采用DHCP和DHCP扩展选项,也可通过静态手工配置。
图中,CPE与PRR之间维持纯IPv6网络,协商建立隧道。隧道可以是IPv6隧道,Layer-2层隧道或者其他类型。CPE上对用户IPv4地址进行NAT操作,用户发送到CPE的数据包进行基于IP地址和端口的映射,其中端口被限定在一定范围内。转换后的数据包被封装上IPv6的包头,经IPv6隧道传递到PRR上进行解封装,最终将数据包发送给目的主机。
A+P技术分配给用户全球唯一的IPv4地址,在一定程度上实现了对IPv4地址的复用,同时也保证了IP网络端到端的特性。网络服务提供商可以基于IPv6接入网增量部署IPv6网络。
2.4 NAT64
NAT64是由UC3M、阿尔卡特朗讯和IMDEA网络公司提出的一种基于翻译的过渡方案,目前在IETF BEHAVE工作组进行标准化。它主要解决在IPv6接入网环境下,IPv6-only终端可以访问IPv4-only业务。NAT64基本场景如图4所示:
 
图中,NAT64是部署在IPv6网络和IPv4网络之间的双栈路由器,负责IPv6数据包与IPv4数据包之间的翻译。因此,NAT64拥有至少一个IPv6前缀和一个IPv4公有地址池。NAT64收到终端发来的IPv6数据包后,翻译模块从IPv4公有地址池中选择一个IPv4地址及未使用的端口与源主机IPv6地址作映射,结果记录在BIB(Binding Information Bases)中,从而实现源地址翻译;目的地址的翻译则是直接去掉特定的IPv6前缀。接着,NAT64使用SIIT ( Stateless IP and ICMP Translation)翻译算法[12]将IPv6包头翻译为IPv4包头,翻译后的IPv4数据包便从NAT64的IPv4接口转发到外部IPv4网络中,从而实现对IPv4服务的访问。IPv6主机获得目的IPv4主机对应的IPv6地址需要借助于DNS64设备。DNS64是双栈的,当源主机进行AAAA查询时,它会向目的主机所在网络的DNS服务器发送AAAA/A查询请求,如果DNS64收到的是A记录,那么它会通过添加特定IPv6网络前缀的方法将其合成为AAAA记录,并返回给源主机。NAT64网关和DNS64配置了相同的IPv6前缀。
NAT64克服了NAT-PT的缺点,实现了DNS-ALG和翻译模块的解耦合,只需改动网络侧,实现了IPv6终端对IPv4网络的访问。但它不能支持IPv4主机发起的到IPv6主机的通信。
2.5 PNAT
在向IPv6网络的过渡过程中,大量已成熟的IPv4应用程序还不能很快地支持IPv6,如何能够保证IPv4应用的兼容性是向IPv6平滑过渡的一个核心要求。正是基于这一点,中国移动提出了PNAT(Prefix NAT)翻译技术。该技术实现了在纯IPv6或双栈承载网环境下,老的IPv4应用仍能正常通信,对底层网络环境可以不感知。它可以支持IPv4应用程序通过IPv6网络访问IPv4业务,IPv4应用访问IPv6业务,IPv6应用访问IPv4业务等多种通信场景。主机侧进行IPv4包到IPv6包的翻译,网络侧进行IPv6包到IPv4包的翻译,基本场景如图4所示。
    
PNAT采用BIH(Bump-in-the-Host)的设计方式实现了IPv4应用透明运行在IPv6网络中,达到了IPv4业务流量向IPv6网络迁移的效果,并能够联合NAT64功能提升用户IPv6的业务体验,从而为IPv6过渡开辟了一条创新之路。BIH继承和融合了BIS(Bump-in-the-Stack,RFC【2767】)与BIA(Bump-in-the-API,RFC【3338】),前者基于网络层IPv4数据包与IPv6数据包之间的转换,后者基于应用层Socket API函数之间的转换。主机的PNAT包括三个模块:扩展的域名解析器(Extension Name Resolver/ENR),地址映射器(Address Mapper),对应于BIA的函数映射器(Function Mapper)和对应于BIS的翻译器(Translator)。ENR用于处理DNS查询,实现AAAA记录与A记录之间的转换,类似于DNS64实现的功能。地址映射器用于维护IPv4地址池,记录IPv6地址与IPv4地址之间的映射表。函数映射器是在主机使用BIA扩展技术时负责在IPv4 Socket API函数与IPv6的Socket API函数之间转换,翻译器是在主机使用BIS扩展技术时使用SIIT技术负责IPv4数据包与IPv6数据包之间的转换。
假设采用主机包头翻译方式,接入纯IPv6网络的双栈主机的IPv4应用访问IPv4业务的过程如下:双栈主机通过DHCPv6向接入路由器进行地址请求,网络侧分配IPv6前缀、WKP(Well known Prefix,64:FF9B::/96)和DNS服务器地址给主机。在IPv6-only网络下,主机为自己配置私有IPv4地址或者IANA规定的特殊IPv4地址(类似于DS-lite)。当IPv4应用开始发起访问时,首先进行域名解析,ENR发挥DNS代理功能,同时发送A和AAAA请求给DNS服务器。在该场景下,DNS服务器将回应A记录给ENR,ENR将其转发给IPv4应用程序。同时,ENR通知地址映射器记录v4与v6地址之间的映射项目,源IPv4地址通过拼接IPv6前缀映射为源IPv6地址,目的IPv4地址通过拼接熟知IPv6前缀映射为目的IPv6地址。接着,IPv4数据包就可以被翻译为IPv6包,被发送到网络侧PNAT64网关设备上。PNAT64按照NAT64的方式将IPv6数据包翻译为IPv4数据包,最终数据包到达目的IPv4站点,实现IPv4业务的访问,原有IPv4业务提供方式保持不变。
该场景下PNAT64的信令流程如图6所示:
 
PNAT可以实现在部署IPv6的同时,保证传统IPv4应用能照常通信,做到了对应用程序的透明无感知。它满足多种通信场景,大大降低了IPv6网络的升级带来的对业务的影响和冲击。作为一个开放的新型IPv6过渡技术,它已在IETF、3GPP等国际标准化组织中做了积极推进,目前在Behave charter层面上已经被接受。
2.6 IVI
IVI是清华大学提出的基于翻译的过渡技术。它的主要思想是运营商保留一段IPv4地址(称为IVI4地址)将其唯一映射为一段特殊的IPv6地址(称为IVI6地址),可以实现这部分地址的无状态转换。获得IVI6地址的用户可以直接访问全球IPv6网络,通过IVI网关翻译器可将地址转换IVI4地址,可以和全球IPv4网络通信,实现IPv4和IPv6的互访。
IVI通过内嵌IPv4地址的方法实现到IPv6地址的映射,地址格式特殊,映射格式如图7:
 
IVI技术的基本工作场景如图8所示:
 
IVI支持IPv6主机发起的通信,也支持从IPv4主机发起的通信。以IVI6主机访问全球IPv4主机为例分析其过程:首先,由于IVI6地址格式特殊,无法使用无状态IPv6地址自动配置机制,因此IPv6主机通过静态配置或DHCPv6选项得到IVI6地址、默认网关及DNS服务器地址信息。接着,IPv6主机向IVI DNS进行AAAA查询。IVI DNS是双栈设备,它存放了IVI主机的IVI4地址和对应的IVI6地址。当它收到AAAA查询请求后,先向目标网络发送AAAA查询请求,如果AAAA记录不存在,再发送A查询请求,并将得到的A记录按照IVI映射的规则将其转换为AAAA记录,将其返回给源IVI6主机。然后,该IPv6主机发送数据包,当到达IVI网关后,数据包被IVI翻译器无状态地转换为IPv4数据包。其中地址翻译是根据IVI6地址格式取出嵌入其中的IPv4地址,包头的翻译是根据SIIT算法。翻译后的IPv4数据包路由到IPv4网络中,实现IPv6主机对IPv4主机的访问。IVI网关与两侧的R1、R2路由器通过IGP/BGP实现路由可达,同时IVI与R1之间为IPv6路由,IVI与R2之间为IPv4路由,并不增加全球IPv4/IPv6路由表的规模。
IVI技术对SIIT和NAT-PT技术进行了改进,IVI网关不需要通过DNS来查找IPv4、IPv6的对应关系,而是能够通过一对一的映射直接找到对应的地址,大大减轻网关设备的负担和效率。同时,它也支持端到端地址透明性,可以进行增量化部署。IVI技术进行一对一地址映射,因此会占用大量的IPv4地址。在该技术的基础上,清华大学又提出了Double IVI技术,支持1:N有状态地址转换,可以实现IPv4地址的复用和普通IPv6主机对IPv4主机的单向访问。目前,清华大学CERNET中心运用IVI技术实现了纯IPv4网络与纯IPv6网络互通。
3 过渡技术比较
以上各种过渡技术的比较如下表所示:

上述最新的IPv6过渡技术总体上可以分为隧道、翻译两个大类。隧道技术采用的是一种协议封装于另外一种协议的方式,适用于运行一种协议的设备或者站点穿过运行另外一种协议的网络实现互通。它只要求升级隧道的入口和出口设备,不需要网络核心中的设备运行双栈,网络部署和运维相对容易,能充分利用已有投资,但隧道端点需要封装解封装,转发效率低,也无法实现IPv4和IPv6的互访。翻译技术采用的是一种协议转换成另一种协议的方式,适用于纯IPv4终端和纯IPv6终端的互访,但也存在“地址转换”带来的业务质量降低,有些协议翻译后需要ALG的问题。
三种隧道技术中,6rd采用现有IPv4接入网为终端用户提供IPv6业务,主要侧重于用户侧IPv6的过渡,对运营商骨干网改动较小。6rd比较适合于以IPv4业务为主,同时拥有少量IPv6用户的运营商,适用于IPv6发展的早期。它有助于保护运营商初期投资,减少对现网业务的影响。DS-lite则是在引入IPv6接入网的同时保证IPv4业务可访问。运营商直接为用户分配IPv6地址,家庭网络内部终端IPv4地址完全由家庭网关分配,运营商不再维护用户IPv4地址,简化了对地址的管理。该技术适合于IPv4地址非常紧缺的运营商,以发展IPv6业务为主,同时兼容IPv4业务。该方案与6rd相比对IPv6的推广力度较强,但目前DS-lite客户端设备还不够成熟,认证鉴权机制需要完善。A+P技术与DS-lite技术有些类似,都是利用IPv6隧道实现互通,只是在地址分配方案和NAT的实现细节上存在不同。A+P注重IPv4地址的复用,对CPE要求较高,部署比较复杂。
三种翻译技术中,NAT64支持场景较少,只能实现IPv6主机到IPv4服务器的单向访问,但这对于IPv6单栈主机是很有意义的。PNAT融合了NAT64的功能,支持场景更为广泛,在部署IPv6的同时,能够做到对应用程序的透明无感知,可以加速IPv6过渡进程。IVI技术专注于互访,需要使用一段保留IPv4地址进行与IPv6地址的映射,适合于IPv4地址充足,IPv4网络与IPv6网络规模相当,有互访需求的运营商。
总体来说,各种技术都有其具体的应用场景,在实际部署中各种过渡方案可能会重叠和交错,运营商可根据不同的应用场景、网络状况和过渡时期选择过渡技术。
4 总结
到目前为止,还没有一种方案能够适用于所有的情况,各种过渡机制都有其特定的使用环境,过渡方案应该是各种技术的组合。在部署IPv6网络的过程中,需要明确具体的适用场景、过渡效果,还要考虑成本和部署的难易,然后选择合适的过渡策略进行设计和实施。只有因地制宜、科学分析,才能更好地、更顺利地用最小的代价从IPv4网络世界逐步过渡到IPv6网络世界