IPv4向IPv6过渡技术分析
2018-10-16朱壮普
朱壮普
(山西职业技术学院,山西 太原 030006)
引言
虽然从IPv4迁移到IPv6已不存在技术障碍,但目前网络的部署绝大多数是IPv4,存在着数十亿台基于IPv4的网络设备和终端设备,迁移工作成本巨大,不可能一蹴而就,而是一个渐进的过程[1]。因此在过渡阶段,IPv6和IPv4将长期共存,并且在部署IPv6的时候要考虑平滑过渡[2],保证网络服务、业务系统的不中断运行。
1 IPv6的部署进程
IPv6的部署进程大致可以分为三个阶段:初级阶段、共存阶段和主导阶段。
1.1 初级阶段
初级阶段的网络形态以IPv4网络为主导,IPv6作为网络信息孤岛,在局部范围内部署。这是目前全球IPv6发展所处的阶段。
1.2 共存阶段
当ISP在骨干网开始逐步部署IPv6业务平台,快速推进了IPv6的实施,使IPv6网络形成较大的规模。
1.3 主导阶段
IPv6取代IPv4是必然趋势。在此阶段下,网络以IPv6占统治地位,ISP骨干网络将全部升级为IPv6,IPv6网络被大众接受使用,而IPv4网络则以信息孤岛的方式存在,直至退出历史舞台。
IPv6的推进是一个缓慢的过程,在将来很长一段时间,IPv6与IPv4将共存,在此过程中要经历技术设备的变革、政策的推进以及用户操作习惯的改变。IPv6的部署进程如图1所示。
2 IPv6过渡技术概述
在IPv6向IPv4迁移的漫长过程中,为实现IPv6网络间的互通,以及IPv6与IPv4网络间的互通,需要采用一些过渡技术来支持,大致可以分为三类:双栈协议技术、隧道技术和协议转化技术。
2.1 双栈协议技术
双栈协议技术是最早的一种过渡技术,它基于设备对IPv6协议的支持,是指在设备上同时开启IPv4和IPv6 协议栈,使该设备既能与IPv4网络通信,也能与IPv6网络通信。
2.2 隧道技术
隧道技术主要是实现IPv6网络间的数据通信。它的思想是在IPv6网络之间搭建一个能够穿越IPv4网络的数据传输通道如图2所示。在隧道入口处将IPv6协议报文封装在IPv4报文中,该报文的源和目的地址分别为隧道入口和出口的IPv4地址,然后基于IPv4协议进行转发传输,报文到达隧道出口处进行解封装,取出IPv6报文,再转发给目的站点。
隧道技术需要隧道的出入口设备支持双栈协议和隧道技术,而对于中间设备则没有要求。
图1 IPv6的部署进程
图2 隧道技术示意图
2.3 协议转化技术
协议转化技术用于实现IPv6网络和IPv4网络间的通信。连接IPv6和IPv4网络的设备称为协议转换器如图3所示。通过修改报文头部信息实现协议转化,从而使IPv6和IPv4网络能够互联。
图3 协议转化示意图
3 IPv6网络之间的互通
基于目前IPv6网络依然呈孤岛状态,IPv6网络的部署实施主要涉及两个方面,一是IPv6网络穿越IPv4网络进行互通,二是IPv6和IPv4网络间的互通。IPv6网络间的互通主要使用隧道技术实现,针对不同的网络环境和应用需求,隧道技术也有多种分类。
3.1 GRE隧道
GRE隧道实现的是点到点的单独隧道。隧道两端的设备需创建隧道接口,并配置IPv6地址,用于和两端IPv6网络的对接,以实现IPv6网络层面的通信。隧道接口需指定源和目的地址,分别对应隧道的出口和入口IPv4地址,并作为IPv4报文封装的源和目的地址,实现IPv6协议数据报文在IPv4网络中的传递。GRE作为承载协议,IPv6作为乘客协议封装在GRE报文中,GRE报文作为IPv4封装的有效数据。
3.2 手动隧道
手动隧道与GRE隧道类似,都是基于隧道入口封装、IPv4网络传输、隧道出口解封装的步骤实现,只是在数据封装上有所区别,手动隧道将IPv6报文作为净载荷直接封装在IPv4报文中。
3.3 自动隧道
自动隧道是随报文通信自动建立的,它只需指定隧道的源点,而隧道的终点自动生成。并且一个隧道源点只需一个隧道接口就可以与多个隧道终点建立隧道。但是自动隧道在应用上有很大的局限性,它只能实现隧道两端节点设备的通信,对于隧道后端的网络不能通信。自动隧道需要在隧道接口配置特殊的IPv6地址,该IPv6地址前缀是0:0:0:0:0:0,后32位嵌入隧道两端设备实际接口的IPv4地址。在通信的时候依据目标IPv6地址的后32位确认隧道的目的地址。
3.4 6to4隧道
6to4隧道与自动隧道一样都是自动建立隧道的,6to4隧道解决了自动隧道只能两个隧道节点间通信的局限性。6to4隧道也采用特殊的IPv6地址,其前48位为“2002: IPv4地址”,其中2002为规定使用的6to4隧道地址标识,IPv4地址为隧道实际出口的IPv4地址,也用来确认隧道的其它终点。用户可以自定义地址中的后80位,因而隧道设备后端就可以连接不同前缀的IPv6网络。
6to4隧道规定隧道接口及隧道设备后端的IPv6网络必须使用2002:IPv4的地址前缀,但实际环境中可能要连接到非6to4地址格式的IPv6网络,这就需要采用6to4中继来实现。6to4中继设备跨接6to4网络和非6to4网络,基本原理是在6to4中继设备上将2002开头的IPv6网络通告给非6to4的IPv6网络,通过在6to4边缘设备上配置指向6to4中继设备的默认路由实现。
3.5 ISATAP隧道
ISATAP隧道也是自动隧道,采用特殊的IPv6地址,其格式为“::0:5EFE:IPv4”,其中0:5EFE是规定的格式,IPv4地址为内嵌的隧道实际出口的IPv4地址,用来确认隧道的其它终点。ISATAP隧道将IPv4网络作为非广播点到多点的底层链路,隧道两端设备都需要运行ND协议,IPv6主机可以通过ND协议向ISATAP设备获取IPv6地址前缀,实现地址的自动配置。
3.6 6PE
6PE是ISP为IPv6用户提供的一种IPv6网络接入技术,用户端只需要支持IPv6协议栈即可。用户端称之为CE,ISP端称之为PE。ISP通过已建立的IPv4 MPLS网络对CE的IPv6路由信息进行标记,并通过IPv4路由传递给其它的PE。ISP在转发CE的IPv6报文时,6PE设备先对其报文打上标签,再通过隧道转发给对端的6PE设备,对端的6PE拆掉标签将IPv6报文传递给目的CE,从而实现用户IPv6网络间的互联。
3.7 其它隧道技术
3.7.16over4
6over4技术要求设备之间的IPv4网络环境必须支持组播。其主要思路是将IPv6的组播地址映射成IPv4的组播地址,使得ND协议能够在IPv4组播网络上运行。
3.7.2Teredo
Teredo隧道主要解决IPv6 in IPv4数据报文的NAT穿越问题[3]。其主要思想是将IPv6数据报文封装在UDP载荷中来实现对传统NAT设备的穿越。Teredo地址结构繁琐,与IPv6路由的分级理念相冲突,在应用上有一定的局限性。
3.7.3隧道代理
慢慢地,杨紫就形成衣品思维:今天要干什么,天气如何,穿薄还是厚,先确定上衣,再思考穿裙子还是裤子,袜子和鞋子如何搭配,饰品选择哪种,最后确定妆容特色……
隧道代理相当于虚拟的IPv6 ISP代理,主要作用是简化隧道配置的过程。IPv6用户通过向Tunnel Broker注册,并获取IPv6配置参数,在本端的IPv6设备上进行配置,就可以与Tunnel Server进行隧道的建立,实现与其它IPv6网络的互联。
因各种隧道技术都有特定的应用环境,在实际部署过程中要根据实际情况合理制定过渡策略。表1总结了各类隧道技术的特点及缺点。
表1 隧道技术总结比较
4 IPv6与IPv4网络之间的互通
IPv6和IPv4网络间的通信需要借助协议转换器实现,协议转换的目的是使IPv6节点和IPv4节点能够互相识别。具体地说,就是在IPv4网络中用IPv4地址来标识IPv6主机,反之亦然。针对具体的应用环境,协议转换技术也有多种类型。
4.1 SIIT
SIIT称为无状态IP/ICMP转换技术,它是通过特定的IPv4地址空间来完成IPv6与IPv4地址的转换。在SIIT网络中,IPv6节点采用规定的地址格式“::FFFF:0:IPv4地址”,其中IPv4地址是SIIT设备定义的地址空间,用来给IPv6节点分配IPv4地址。如IPv4主机A访问IPv6主机B时,目的地址为主机B映射的IPv4地址,数据报文通过SIIT设备时,将源地址转换成“::FFFF:0:主机A-IPv4地址”格式的IPv6地址。SIIT地址空间的大小决定了IPv6节点的数量,因此SIIT不能应用于大规模的IPv6网络中。
4.2 NAT-PT
NAT-PT技术基于SIIT的工作机制,并结合IPv4的NAT技术来实现IPv6到IPv4地址的转换。但在端到端的通信过程中,地址信息发生了变化,安全性很难保障。NAT-PT技术有三种类型。
4.2.1静态NAT-PT
静态NAT-PT的工作机制与SIIT基本相同,是在NAT-PT设备上将IPv6和IPv4地址的映射关系进行记录,但在映射过程中的IPv4地址不能复用,只能实现一对一的转换。如果IPv6主机数量多的情况下,会导致配置繁琐,且不易维护。因此,静态NAT-PT一般用于特定的IPv6和IPv4地址的转换。
动态NAT-PT技术有效地解决了静态NAT-PT的弊端。在NAT-PT设备上创建IPv4地址池,用于IPv6地址的转换,同时采用上层协议映射的方法,实现IPv4地址和IPv6地址一对多的映射关系,这和IPv4网络中的端口映射原理一样。动态NAT-PT技术最大的问题在于只能完成由IPv6主机向IPv4主机发起的通信,IPv6主机发起连接后,在NAT-PT设备上生成转换记录临时存放在转换表中,IPv4主机的回应报文可以依据临时转换记录进行转发。但由IPv4主机主动发起连接时,并不清楚目标IPv6主机的IPv4映射地址,因为无法完成通信。
4.2.3结合DNS ALG的动态NAT-PT
动态NAT-PT结合DNS ALG后,便可实现IPv6和IPv4网络的双向通信。但需要在IPv6网络中部署DNS服务器,用于对IPv6主机名及其地址的解析,并且ALG可以对报文中的载荷进行转换,因而可以实现如DNS、FTP等应用服务的通信。
4.3 其它互通技术
4.3.1应用层协议转换技术(SOCKS-based IPv6/IPv4Gateway)
该技术是在应用层实现的IPv4和IPv6中继方法。在客户机的应用层和Socket层之间增加SOCKS Lib功能模块,负责对Socket API和域名解析API进行转换;在双栈主机增加Gateway模块,负责客户机与目的主机任意协议的中继。SOCKS Lib和Gateway之间基于SOCKSv5协议进行通信,Gateway与目的主机的正常连接,且目的主机的应用程序认为通信的对端是Gateway,并不知道客户机的存在。
4.3.2传输层中继(TRT)
传输层中继位于纯IPv4网络和IPv6网络之间,实现基于传输层协议TCP/UDP通信数据的互译[4]。TRT系统作为中继转换器,需要维护TCP/IPv4和TCP/IPv6两条连接。
4.3.3BIS
BIS技术是在IPv4主机协议栈中添加了三个模块,分别为报头翻译模块(Translator)、地址映射模块(Address mapper)和域名解析模块(Extension name resolver)。当IPv4主机和IPv6主机通信时,通过域名解析模块获取IPv6主机名对应的IPv6地址,并通过地址映射模块为该IPv6地址分配一个IPv4地址,最后通过报头翻译模块进行报头的转换。
4.3.4BIA
BIA技术在双栈主机的TCP/IP模块和Socket API模块之间添加一个API翻译器。API翻译器包含三个模块,分别为函数映射模块(Function mapper)、地址映射模块(Address mapper)和域名解析模块(Name resolver)。BIA通过API翻译器实现IPv6和IPv4的Socket API函数的互译,当双栈主机的IPv4 API与IPv6主机通信时,API翻译器对IPv4 API函数进行检测,通过域名解析模块进行IPv6地址解析,再通过地址映射模块为IPv6地址分配IPv4地址,最后通过函数映射模块调用相应的IPv6 API函数实现IPv6主机的通信,其技术原理与BIS相似。
IPv6和IPv4网络间的互通需要使用协议转换器,协议转换过程可以发生在网络层、传输层和应用层。各类协议转换技术都有相应的应用环境,表2总结了各类协议转换技术的特点及缺点。
表2 协议转换技术总结比较
5 结束语
IPv4向IPv6过渡是IT技术发展的必然趋势,IPv6能从根本上解决了IPv4地址紧缺的局面,并且IPv6具备更先进的设计理念,在安全、通信性能上具有更大的优势。近年来所生产的网络设备和通信终端几乎都支持IPv6协议栈,为IPv6的部署实施提供了物理基础。
当前IPv6的各类过渡技术在应用上都存在着一定的局限性,在实施过渡的时候,要依据具体网络环境和需求,选择合适的或者是多种过渡技术组合的过渡方案。在满足过渡要求的基础上,要兼顾安全、性能及管理性。