IPv6过渡技术

时间:2022-10-18 05:01:29

IPv6过渡技术

摘要:IPv4和IPv6将在很长时间共存,IPv4到IPv6的过渡将经历很长的时期,该文讨论了IPv4向IPv6过渡期间的一些技术,并分析了其优劣及应用场景。

关键词:IPv4;IPv6;过渡

中图分类号:TP393文献标识码:A文章编号:1009-3044(2009)22-pppp-0c

IPv4是一个非常成功的协议,已经经历时间的考验,但是因特网的爆炸式发展,IPv4地址耗尽的问题迫在眉睫,IPv6应运而生,并在将来必将完全取代IPv4。

然而目前网络上几乎所有都是IPv4设备,将所有IPv4设备一下子转换为IPv6设备,所需成本太高,且不切实际。

因此从IPv4过渡到IPv6必将是一个渐进的过程,而且将持续相当长的时间。在网络规划中,应该根据现实的情况,在不同时期采用不用的策略,在不中断现有业务的基础上实现平滑过渡。

在IPv4-v6过渡的过程中,必须遵循如下的原则和目标:

1) 保证IPv4和IPv6主机之间的互通。

2) 在更新过程中避免设备之间的依赖性(即某个设备的更新不依赖于其它设备的更新)。

3) 对于网络管理者和终端用户来说,过渡过程易于理解和实现。

4) 过渡可以逐个进行。

1 IPv6过渡技术及其应用简介

1.1 双栈

实现IPv6结点与IPv4结点互通的最直接的方式是在IPv6结点中加入IPv4协议栈。具有双协议栈的结点称作“IPv6/v4结点”,这些结点既可以收发IPv4分组,也可以收发IPv6分组。它们可以使用IPv4与IPv4结点互通,也可以直接使用IPv6与IPv6结点互通。双栈技术不需要构造隧道,但后文介绍的隧道技术中要用到双栈。IPv6/v4结点可以只支持手工配置隧道,也可以既支持手工配置也支持自动隧道。

双栈方式的工作过程可以简单描述为:

1) 若目的地址是一个IPv4地址,则使用IPv4。

2) 若目的地址是“IPv4兼容”IPv6地址,则将IPv6分组封装在IPv4报文里。

3) 若目的地址是其它类型的兼容地址,则使用IPv6,有可能要进行封装。

后文在介绍隧道技术时将详细讨论IPv6分组如何封装在IPv4分组里。

双栈方式要考虑的一个主要问题是地址,涉及双栈结点的地址配置和如何通过DNS获取通信对端的地址。

通过DNS获取通信对端的地址

用户给应用层提供的只是通信对端的名字而不是地址,这就要求系统中提供名字与地址之间的映射。无论是在IPv4中还是在IPv6中,这个任务都是由DNS完成的。对于IPv6地址,定义了新的记录类型“A6”和“AAAA”。由于IPv4/v6结点要能够直接与IPv4和IPv6结点通信,因此必须提供对IPv4“A”、IPv6“A6/AAAA”类记录的解析库。

但是仅仅有解析库还不够,还必须对返回给应用层的地址类型做出决定。在查询到IP地址之后,解析库向应用层返回的IP地址可以有三个选择:

1) 只返回IPv6地址;

2) 只返回IPv4地址;

3) 返回IPv6和IPv4地址。

对前两种情况,应用层将分别使用IPv6或IPv4与对端通信;对第三种情况,应用层必须做出选择使用哪个地址,即使用哪个IP协议。具体选择哪一个地址与应用的环境有关。

双栈技术要求在原有的IPv4节点上开发:

1) IPv6、ICMPV6和邻居发现等程序;

2) 上层TCP、UDP对IPv6的处理软件;

3) 修改与各种高层应用程序接口的Socket库,以便支持IPv6地址和接口的扩充;

4) 支持IPv6的DNS。

优点:互通性好,易于理解。

缺点:每个IPv6节点都需要使用一个内嵌IPv4地址的IPv6地址,这样比较浪费IPv4地址。

适用情况:一般适用于V4地址不缺乏的企业或运营商,起临时过渡支持V6网络的作用

1.2 隧道技术

工作机理:在IPv6网络与IPv4网络间的隧道入口处,路由器将IPv6的数据分组封装入IPv4中,IPv4分组的源地址和目的地址分别是隧道入口和出口的IPv4地址。在隧道的出口处再将IPv6分组取出转发给目的节点。

优点:隧道技术只要求在隧道的入口和出口处进行修改,对其它部分没有要求,因而非常容易实现。

缺点:V4网络只不过是V6网络间的构造隧道的外部环境,并不能实现IPv4节点与IPv6节点间的直接通信,只能实现V6与V6间的互通。

1.2.1 手动隧道技术

手动隧道技术主要有,GRE隧道、手动隧道。

1.2.1.1 GRE隧道

使用标准GRE隧道技术可在IPv4的GRE隧道上承载IPv6数据报文。GRE隧道是两点之间的链路, 每条链路都是一条单独的隧道。隧道把IPv6作为乘客协议,把GRE作为承载协议。所配置的IPv6地址是在Tunnel接口上配置的,而所配置的IPv4地址是Tunnel源地址和目的地址,也就是隧道的起点和终点。 GRE隧道主要用于两个边缘路由器或终端系统与边缘,路由器之间定期安全通信的稳定连接。边缘路由器与终端系统必须实现双栈。G R E 隧道本身并不限制乘客协议和传输协议,

1.2.1.2手动隧道

手动隧道的转发机制同GRE隧道是一样的。

它与GRE隧道之间的不同点是它们的封装格式有些差别,手动隧道直接把IPv6报文封装

到IPv4报文中去,IPv6报文作为IPv4 报文的净载荷。IPv6手工配置隧道的源和目的地址也是手工指定的,它提供了一个点到点的连接。

IPv6手工配置隧道可以建立在两个边界路由器之间为被IPv4 网络分离的IPv6 网络提供稳定的连接,或建立在终端系统与边界路由器之间为终端系统访问IPv6网络提供连接。隧道的端点设备必须支持IPv6 / IPv4双协议栈。其它设备只需实现单协议栈即可。因为IPv6手工配置隧道要求在设备上手工配置隧道的源地址和目的地址,如果一个边界设备要与多个设备建立手工隧道,就需要在设备上配置多个隧道,所以手工隧道通常用于两个边界路由器之间,为两个IPv6网络提供连接。

1.2.2 自动隧道技术

自动隧道技术主要有IPv4兼容IPv6自动隧道、6to4隧道、ISATAP隧道等。自动隧道与手动隧道的主要不同就在于如何识别隧道终点的地址,其它原理基本相同。

1.2.2.1 IPv4兼容IPv6自动隧道

在IPv4 兼容IPv6 自动隧道中,我们仅仅需要告诉设备隧道的起点,隧道的终点由设备自动生成。为了完成设备自动产生终点的目的, IPv4兼容IPv6自动隧道需要使用一种特殊的地址:IPv4兼容IPv6地址。

IPv4兼容IPv6地址格式如下:

IPv4 兼容IPv6 地址中, 前缀是0 : 0 : 0 : 0 : 0 : 0,最后的32位是IPv4地址。

IPv4 兼容隧道是通过Tunnel 虚接口实现的, 如果一个Tunnel口的封装模式是IPv4 兼容隧道,则只需配置隧道的源地址,而目的地址是在转发报文时,从IPv6报文的目的地址中取得的。从IPv4兼容隧道转发的IPv6 报文的目的地址必须是IPv4兼容的IPv6地址, 隧道的目的地址就是IPv4兼容地址的后32位。如果一个IPv6 报文的目的地址不是IPv4兼容地址, 则不能从IPv4兼容隧道转发出去。如果IPv4 兼容地址中的IPv4 地址是广播地址、多播地址、网络广播地址、出接口的子网广播地址、全0地址、环回地址,则该IPv6报文被丢弃,不会进行隧道封装处理。IPv4兼容隧道的目的节点就是被封装的IPv6报文的目的节点,被解封装后的报文不会被转发。

1.2.2.2 6to4隧道

与IPv4兼容IPv6自动隧道类似,我们仅仅需要告诉设备隧道的起点,隧道的终点也是由设备自动生成。同样,它也使用了一种特殊的地址格式,称为6to4 地址。6to4 隧道具有自动隧道维护方便的优点,同时又克服了IPv4兼容IPv6自动隧道不能互联IPv6 网络的缺陷所以是一种非常好的隧道技术,但是它必须使用规定的6to4地址。

1.2.2.3 ISATAP隧道

ISATAP (Intra-SiteAutomaticTunnelAddressingProtocol)不但是一种自动隧道技术, 同时它可以进行地址自动配置。在ISATAP 隧道的两端设备之间可以运行ND协议。配置了ISATAP隧道以后, IPv6 网络将底层的IPv4网络看作一个非广播的点到多点的链路( NBMA )。

ISATAP 隧道的地址也有特定的格式,与6to4地址类似,ISATAP地址中也内嵌了IPv4地址,它的隧道封装也是根据此内嵌IPv4地址来进行的,只是两种地址格式不同。6to4是使用IPv4地址做为网络ID,而ISATAP用IPv4地址做为接口ID。

隧道对比描述

综上所述, 用隧道技术可以在不中断网络业务的情况下实现IPv6 跨越IPv4 网络的互

通,各种隧道技术有其各自的特点,也适用于不同的组网情况。

隧道机制有以下几种应用情况:

1) 路由器到路由器(R-R):通过IPv4网络互连的两台IPv6 / IPv4双栈路由器可以利用隧道方式在这两台路由器之间传递IPv6的数据包。R-R隧道通常用于IPv6端到端路径的中间段。

2) 主机到路由器(H-R):通过IPv4网络互连的双栈主机与双栈路由器之间可以建立隧

道进行IPv6 通信。H-R 隧道通常用于IPv6 端到端路径的首段。

3) 主机到主机(H-H): 通过IPv4 网络互连的两台IPv6 / IPv4双栈主机之间可以建立隧道进行IPv6通信。H-H隧道连接IPv6通信的两端,即覆盖IPv6端到端路径全程。

4) 路由器到主机(R-H ):双栈路由器与通过IPv4 网络与之互连双栈主机之间建立的隧

道。R-H隧道通常用于IPv6端到端路径的最后一段,即双栈主机为通信终点。

手工隧道用于连接两个被IPv4网络分割的IPv6网络,用于网络间流量比较稳定的情况。

在IPv6网络建设的初期阶段,当两个网络节点之间的流量较小时,且需要配置的隧道数量较少时,则手工配置隧道具有实际意义。目前世界上几乎所有的IPv6网络(包括6bone主干)都使用了手工隧道。随着过渡过程的深入,这种隧道连接以后可能被专线连接所取代。

一些隧道终点与IPv6数据包的目的节点相同。这样就可以通过把隧道终点的IPv4地址信

息放在IPv6 的目的地址中, 从而可以不需要特别配置隧道终点的IPv4 地址就可以从目的IPv6 地址中获得隧道终点的IPv4 地址。这种利用内嵌IPv4 地址的特殊的IPv6 地址,使隧道起点自动发现隧道终点IPv4地址的隧道就是前面说自动隧道。下面分别对几种自动隧道加以说明。

1) IPv4兼容IPv6自动隧道

这种隧道的建立和拆除是动态的,它的端点根据数据包的目的地址确定,适用于单独的主机之间或不经常通信的站点之间。这些站点之间必须有可用的IPv4连接。这种隧道的两个端点都必须支持双栈。在隧道要经过NAT 设施的情况下这种机制不可用。

2) 6to4隧道

这种隧道的目的是使分布在IPv4网络中的IPv6网络实现互联,虽然使用了特殊的地址前缀,但对于互联纯IPv6 网络的IPv4 地址消耗很少,一个网络只需要一个公有IPv4的地址,对于地址缺乏的环境是值得推广的应用。以最少的配置连接多个孤立的IPv6域,可以不必等待ISP提供IPv6服务而自行互连IPv6域,也可通过6to4中继连接IPv6 Internet 。但只能使用基于全局IPv4的6to4IPv6地址。

3) ISATAP隧道

ISATAP在IPv4上提供IPv6的NBMA功能,不仅支持节点与路由器的互通, 也支持各节点间的直接互通,自动配置IPv6地址,一般用于主机与路由器之间通讯。适用于企业等Intranet的情况。

2 IPv4-IPv6互通技术

其主要思想是在V6节点与V4节点的通信时需借助于中间的协议转换服务器,此协议转换服务器的主要功能是把网络层协议头进行V6/V4间的转换,以适应对端的协议类型。

优点:能有效解决V4节点与V6节点互通的问题。

缺点:不能支持所有的应用。这些应用层程序包括:1 应用层协议中如果包含有IP地址、端口等信息的应用程序,如果不将高层报文中的IP地址进行变换,则这些应用程序就无法工作,如FTP、SNMP等。2 含有在应用层进行认证、加密的应用程序无法在此协议转换中工作。

2.1 SIIT(Stateless IP/ICMP Translation)

此技术单独对IP分组和ICMP分组报文进行协议转换,不记录一个流的状态,所以是“无状态”的。其工作机理如下:

IPv4到IPv6的头标转换

V4主机A要访问V6主机B,A的V4地址是没有限定的全球V4地址,B的V6地址必须是形如::FFFF:0:a.b.c.d 的IPv4翻译地址,且低32位是SIIT分配的全球V4地址。当A发出的访问B的分组到达SIIT时,分组中目的地址是B的低32位地址,SIIT判断出此地址属于其管理的IPv6-Only节点的IPv4地址空间,因此做相应的V4-V6的协议分组头转换,把源地址转换成IPv4的映射地址,目的地址转换成IPv4的翻译地址,再把此IPv6分组传给主机B。

IPv6到IPv4的头标转换

V6主机B访问V4主机A,发出的分组中源地址是B的翻译地址,目的地址是A的映射地址,当IPv6的分组到达SIIT协议转换器时,SIIT判断出目的地是IPv4的映射地址,就要对该分组进行V6-V4的协议分组头转换,再把转换后的V4分组传给主机A。

SIIT的局限

SIIT技术需要有一个备用的全局IPv4地址池来给与IPv4节点通信的IPv6节点分配IPv4地址,这个备用的全局IPv4地址池不能很大,因为IPv4地址空间优先。这样,当SIIT中备用的IPv4地址池分配完时,如果有新的IPv6节点需要同IPv4节点通信,就会因为没有剩余的IPv4地址空间而导致SIIT无法进行协议转换,造成通信失败。显然此技术应用的网络规模不能很大。

同时,SIIT还具有协议转换技术所共有的缺点。

2.2 NAT-PT

NAT-PT是Network Address Traslation-Protocol Translation的缩写,它是通过SIIT协议转换技术和IPv4网络中动态地址翻译技术(NAT)相结合的一种技术。它利用了SIIT技术的工作机制,同时又利用传统的IPv4下的NAT技术来动态地给访问IPv4节点的IPv6节点分配IPv4地址,很好地解决了SIIT技术中备用全局IPv4地址池规模有限的问题。

NAT-PT 处于IPv6和IPv4网络的交界处,可以实现IPv6主机与IPv4主机之间的互通。协议转换的目的是实现IPv4和IPv6协议头之间的转换;地址转换则是为了让IPv6和IPv4网络中的主机能够识别对方,也就是说,IPv4网络中的主机用一个IPv4地址标识IPv6网络中的一个主机,反过来,IPv6网络中的主机用一个IPv6地址标识IPv4网络中的一个主机。

当一台IPv4主机要与IPv6对端通信时,NAT-PT从IPv4地址池中分配一个IPv4池地址标识IPv6对端。在IPv4与IPv6主机通信的全过程中,由NAT-PT负责处理IPv4池地址与IPv6主机之间的映射关系。在NAT-PT中可以选择使用ALG(Application Level Gateway,应用层网关),因为NAT-PT只能对IP头中的地址进行转换,而有些应用在净荷中包含有IP地址,此时只能通过ALG对分组净荷中的IP地址进行格式转换。

NAT-PT应用举例

V4主机B要与V6主机A通信,首先要向v6网络中的DNS发出请求对A 进行名字解析,这个请求在途径NAT-PT时,NAT-PT上的DNS-ALG对其内容进行修改,把“A”类型请求转换成“AAAA”或“A6”类,转发给IPv6网络内的DNS。DNS返回的应答中包含的是A的v6地址,这个应答在途径NAT-PT时,又被DNS-ALG修改,把“AAAA”或“A6”类转成“A”类,同时从IPv4地址池中分配一个地址,替换应答中的IPv6地址,并记录地址池地址与IPv6地址之间的映射信息。主机B在收到DNS应答之后,就可以以正常的方式进行通信。数据分组在经过NAT-PT时,NAT-PT对分组头信息进行修改,由于在NAT-PT中已经记录了v4地址池地址与IPv6地址之间的映射信息,因此可以按照原有记录的信息对地址进行转换。

对于主机B如何在IPv6网络中进行标识的问题,采用的方法是,NAT-PT向IPv6网络中广播一个96位的地址前缀,用96位地址前缀加上32位主机IPv4地址作为对v4网络中主机的标识。从IPv6网络中的主机发给IPv4网络中的分组,其目的地址前缀与NAT-PT的地址前缀相同,这些分组都被路由到NAT-PT处,由NAT-PT对分组头进行修改,替换源和信宿地址,向主机B转发。

优点:解决了SIIT技术中备用全局IPv4地址池分配地址不足的问题。

缺点:1 带来了传统IPv4采用NAT技术所具有的缺陷:那就是只能由IPv6节点访问IPv4节点,反之,则不能。2 同时具有协议转换技术所共有的缺陷。

3 结束语

过渡策略总结

1) 双栈、隧道是主流

2) 所有的过渡技术都是基于双栈实现的

3) 不同的过渡策略各有优劣、应用环境不同

IPv4向IPv6过渡策略技术还有很多,它们都各有自己的优势和缺陷。因此,最好的解决方案是综合其中的几种过渡技术,取长补短,同时兼顾各种网络设施,并考虑成本的因素,设计出一套合适的平滑过渡解决方案。

参考文献:

[1] RFC2765: Stateless IP/ICMP Translation Algorithm (SIIT).

[2] RFC3022: Network Address Translation C Protocol Translation (NAT-PT).

[3] RFC3142: An IPv6-to-IPv4 Transport Relay Translator (TRT).

[4] RFC2767: Dual Stack Hosts using the "Bump-In-the-Stack" Technique (BIS).

[5] RFC3089: A SOCKS-based IPv6/IPv4 Gateway Mechanism (SOCKs64).

[6] RFC1928: SOCKS Protocol Version 5 (SOCKSv5).

[7] RFC1853:IP in IP Tunneling(手动隧道).

[8] RFC2784:Generic Routing Encapsulation (GRE Tunnel).

[9] RFC2529:Transmission of IPv6 over IPv4 Domains without Explicit Tunnels(6over4).

[10] RFC3056:Connection of IPv6 Domains via IPv4 Clouds(6to4).

上一篇:求解马鞍点的两种算法及性能分析 下一篇:基于WCF的信息系统结构模型与体系架构的研究与...