ipv6和ipv4的过渡方案

目录

一.和IPV4兼容的IPV6特殊地址

二.过渡方案

1.隧道技术

(1)隧道中介技术

(2)自动隧道

6to4隧道:

6to4隧道缺点:

6over4隧道:

(1)链路本地地址的自动生成

(2)组播地址映像

(3)邻居发现

ISATAP隧道:

ISATAP地址格式:

IPv6地址格式如下:

两个ISATAP主机通过本地网络进行通信:

两个ISATAP主机通过Internet 进行通信

(3)MPLS

总结

2.协议翻译技术

网络地址转换技术(NAT-PT):

3.双协议栈:

BIS

BIA

三.例题


一.和IPV4兼容的IPV6特殊地址

1.与IPV4兼容的地址, 0:0:0:0:0:0:w.x.y.z 或 ::w.x.y.z

2. IPV4映射地址,0:0:0:0:0:FFFF:w.x.y.z 或::FFFF:w.x.y.z

3.6to4地址:用于IPV4的网络上传送IPV6的包

IPv6-over-IPv4隧道是将IPv6报文封装在IPv4报文中,让IPv6数据包穿过IPv4网络进行通信。

对于采用隧道技术的设备来说,

在隧道的入口处,将IPv6的数据报封装进IPv4, IPv4报文的源地址和目的地址分别是隧道入口和隧道出口的IPv4地址;

在隧道的出口处,再将IPv6报文取出转发到目的节点。

隧道技术只要求在隧道的入口和出口处进行修改,对其他部分没有要求,容易实现。但是,隧道技术不能实现IPv4主机与IPv6 主机的直接通信。使用标准的GRE隧道技术,可在IPv4的GRE隧道上承载IPv6数据报文。GRE隧道是两点之间的连路,每条连路都是一条单独的隧道。GRE隧道把IPv6作为乘客协议,将GRE作为承载协议。所配置的IPv6地址是在Tunnel接口上配置的,而所配置的IPv4 地址是Tunnel的源地址和目的地址(隧道的起点和终点)。

注:完整的 6 to 4主机地址由6 to 4地址的48位格式前缀(2002:a.b.c.d::/48)和其后面的子网标识符ID以及64位接口ID组成

4.ISATAP地址:OSATAP地址的接口ID必须如下:0000:5EFE:w.x.y.z

二.过渡方案

隧道技术:用于解决IPv6节点之间通过IPv4网络进行通信的问题。

双协议栈技术:使得IPv4和IPv6可以共存于同一设备和同一网络中。

翻译技术:使得纯IPv6节点与纯IP4 节点之间可以进行通信

1.隧道技术

所谓隧道,就是把IPv6 分组封装到IPV4 分组中,通过IPv4 网络进行转发的技术。这种隧道就像一条虚拟的IPv6链路一样,可以把IPV6分组从IP4 网络的一端传送到另一端,在传送期间对原始IPv6 分组不做任何改变。在隧道两端进行封装和解封的网络节点可以是主机,也可以是路由器。根据隧道端节点的不同,可以分为下面4种不同的隧道:
•主机到主机的隧道。
•主机到路由器的隧道。
•路由器到路由器的隧道。
•路由器到主机的隧道。
建立隧道可以采用手工配置的方法,也可以采用自动配置的方法。手工配置的方法管理不方便,对大的网络更是如此,下面主要分析IETF 提出的各种自动隧道技术。

(1)隧道中介技术

如图画出了IPv6分组通过IPv4 隧道传送的方法。隧道端点的IPv4地址由隧道封装节点中的配置信息确定。这种配置方式要求隧道端点必须运行双协议栈,两个端点之间不能使用NAT 技术,因为IPv4 地址必须是全局可路由的。



对于IPv4/IPv6双栈主机,可以配置一条默认的隧道,以便把不能连接到任何 IPv6路由器的分组发送出去。双栈边界路由器的IPv4 地址必须是已知的,这是隧道端点的地址。这种默认隧道建立后,所有的IPv6目标地址都可以通过隧道传送。

对于小型的网络,人工配置隧道是容易的,但是对于大型网络,这个方法就很困难了。有种叫作隧道中介 (Tunnel Broker)的技术可以解决这个难题。图示为通过隧道服务器配置隧道端点的方法。隧道服务器是一种即插即用的IPv6技术,通过IPV4 网络可以进行IPV6分组的传送。在客户机请求的前提下,来自隧道服务器的配置脚本被发送给客户机,客户机利用收到的配置数据来建立隧道端点,从而建立了一条通向IPv6 网络的连接。这种技术要求客户机节点必须被配置成双协议栈,客户机的 IPV4 地址必须是全局地址,不能使用 NAT 进行地址转换。

(2)自动隧道

两个双栈主机可以通过自动隧道在IPv4 网络中进行通信。图示显示了自动隧道的网络拓扑。实现自动隧道的节点必须采用 IPv4 兼容的IPv6 地址。

当分组进入双栈路由器时,如果目标地址是 IPv4 兼容的地址,分组就被重定向,并自动建立一条隧道。如果目标地址是当地的IPv6 地址 (NativeAddress),则不会建立自动隧道。被传送的分组决定了隧道的端点,目标 IPV4 地址取自 IPV6 地址的低32位,源地址是发送分组的接口的IPv4 地址。自动隧道不需要改变主机配置,缺点是对两个主机不透明,因为目标节点必须对收到的分组进行解封。 

上图的地址分配如下:

 实现自动隧道要根据不同的网络配置和不同的通信环境采用不同的具体技术:

6to4隧道:

1、地址格式前缀为/48的IPV6地址,由2002::/16和边缘路由器的IPV4地址组合而成,2002::/16是一个专用于6to4隧道的地址范围。

2、边缘路由器自动使用嵌入在IPv6地址中的IPV4地址建立隧道。当目标地址直接是IPV6且内嵌IVP4的,就在此地址中提取出IPV4当成tunnel的destination,从而与该地址建立起6to4隧道;如果目标地址非内嵌IPV4的IPV6地址,则根据路由表中的目标地址的下一跳IPV6地址中的IPv4地址当作tunnel的destination建立起隧道。注意这里的“目标地址下一跳IPV6地址”肯定是以2002开头且内嵌有ipv4的地址。

16bit32bit16bit64bit
2002ipv4地址子网标识接口标识

6to4隧道缺点:

1、只能使用静态路由或BGP。这是因为其他路由协议使用链路本地地址来建立邻居关系和交换更新,而链路本地地址不符合6to4隧道的要求(以2002打头且内嵌了ipv4地址)。这个规定使得6to4模式不像tunnel隧道模式为gre ip或gre ipv6可以兼容所有地址格式通过。

2、不能在隧道的IPV4路径上使用NAT,同样是由于6to4隧道对地址的要求。

原文链接:https://blog.csdn.net/chiyuwei1766/article/details/48226415
 

6over4隧道:
(1)链路本地地址的自动生成

6over4是一种由IPv4地址生成IPv6链路本地地址的方法。IPv4主机的接口标识符是在该接口的IPv4 地址前面加32个“0”形成的64位标符。IP链路本地地址的格式前缀为FE80::/64,在其后面加上64位的IP4 接口标符就形成了完整的IPV6链路本地地址。例如对于主机地址 192.0.2.142,对应的 IPV6 链路本地地址为 FE80::C000:028E(C000028E 是192.0.2.142 的六进制表示)。这种由 IPV4 地址生成IPV6 地址的方法就是本章前面提到的无状态自动配置方式。

(2)组播地址映像

一个孤立在IPv4 网络中的IP6 主机为了发现它的IPV6居(主机或路由器,通常采用的方法是组播ICMPv6 邻居邀请 (Neighbor Solicitation)报文,并期望接收到对方的邻居公告(Neighbor Advertisement)报文,以便从中获取邻居的链路层地址。但是在IPv4 网络中,承载ICMPv6报文的IPv6分组必须封装在IPV4报文中传送,所以作为基础通信网络的IPV4 网络必须配置组播功能。
RFC2529规定,IPv6组播分组要封装在目标地址为239.192xy的IPv4分组中发送,其中x和y是IPv6组播地址的最后两个字节。值得注意的是,239.192.0.0/16是IPV4 机构本地范围(Organization-Local Scope)内的组播地址块,所以实现 6over4 主机都要位于同一IPv4组播区域内。

(3)邻居发现

IPv6邻居发现的过程如下:首先是IPv6主机组播ICMPv6 邻居邀请报文,然后是收到对方的邻居公告报文,其中包含了 64 位的链路层地址。当链路层属于 IPV4 网络时,邻居公告报文返回的链路层地址形式如下:

以上每个字段的长度都是 8 比特,其中类型=1 表示源链路层地址,类型=2 表示目标链路层地址,长度=1(以8个字节为单位),w.x.y.z 为IPv4 地址当IPV6 主机获得了对方主机的IP4地址后,就可以用无状态自动配置方式构造源和目标的链路本地地址,向通信对方发送 IPV6分组了。当然,IPv6 分组还是要封装在IPv4 分组中传送的。

采用 6over4 通信的IPv6主机不需要采用IPv4 兼容的地址,也不需要手工配置隧道。按照这种方法传送IPv6分组,与底层链路配置无关。如果IPv6 主机发现了同一IPv4子网内的IPV6路由器,那么还可以通过该路由器与其他 IPV6 子网中的主机进行通信,这时原来孤立的IPV6主机就变成全功能的IPv6主机了。
图示是两个6over4 主机进行通信的情况,发起通信的主机A利用IPV6的邻居发现机制来获取另外一个主机 B 的链路层地址,然后主机 B 发出的公告报文返回了自己的 IPV4 地址。通过无状态自动配置过程,主机 A 和主机 B 就建立了一条虚拟的 IPV6 连接,就可以进行IPv6通信了。
6over4依赖于IPv4组播功能,但是在很多IPv4 网络环境中并不支持组播所以6over4技术在实践中受到一定的限制,在有些操作系统中无法实现。另外一个限制条件是,IPv6 主机连接路由器的链路应该处于 IPv4 组播路由范围之内。

ISATAP隧道:

RFC4214定义了一种自动隧道技术-ISATAP(Intra-Site Automatic Tunneling AddressingProtocol),这种隧道可以穿透NAT 设备,与私网之外的主机建立IPv6连接。ISATAP 通过IPv4 地址自动生成IP6站点本地地址或链路本地地址,IPv4 地址作为隧道的端点地址,把IPv4网络当作IPv6的虚拟链路层,将IPV6 分组封装在IPV4分组中进行传送。双栈主机使用ISATAP 隧道时,IPv6 报文的目的地址和隧道接口的IPV6地址都要采用特殊的ISATAP地址。

ISATAP地址格式:

 一般来说,ISATAP地址有 64 位的格式前缀,FECO::/64 表示站点本地地址,FE80::/64 表示链路本地地址。在格式前缀之后要加上修改的 EUI-64 地址(Modified EUI-6 addresses),其形式如下:
24位的IANA OUI+40位的扩展标识符
如果 40位扩展标识符的前 16 位是0XFFFE,则后面是24 位的制造商标识符,如图所示:

如果40位扩展标识符的前8位是 0xFE,则后面是32位的IPv4 地址,如图所示:

OUI 表示机构唯一标识符 (Organizationally Unique Identifier),IANA 分配的 OUI为00-00-5E,如上图图所示其中的u位表示universal/local,u=1表示全球唯一的IPv4 地址,u=0表示本地的IPv4 地址;g位是individual/group 位,g-1表示单播地址,g-0 表示组播地址。

IPv6地址格式如下:

ISATAP隧道技术不要求隧道节点拥有公网IPv4地址只要求双栈主机具有IPv4 地址。前64位是向ISATAP路由发送请求得到的,后64位中由两部分构成,其中后64位中的前32位是0:5EFE;后32位是IPv4单播地址,即ISATAP接口ID须为::0:5EFE:IPv4地址的形式。例如10.40.1.129对应链路本地地址FE80::5EFE:0A28:0181/64。

64bit64bit
FE80::/640000:5EFEipv4地址

两个ISATAP主机通过本地网络进行通信:

假定主机A的格式前缀为FE80::/48(链路本地地址),加上64 位的接标识符::0:5EFE:w.x.y.z (w.x.y.z 是主机A的IPV4单播地址),这样就构成了 IPv6 链路本地地址,就可以与同一子网内的其他ISATAP 主机进行IPv6通信了。具体地说,主机A向主机B发送分组时采用的地址如下:

目标IPv4 地址:192.168.41.30

源IPv4 地址:10.40.1.29

目标IPv6 地址:FE80::5EFE:192.168.41.30

源IPv6 地址:FE80::5EFE:10.40.1.29

两个ISATAP主机通过Internet 进行通信

在这种情况下ISATAP路由器要公告自己的地址前缀,以便与其连接的 ISATAP 主机可以自动配置自己的站点本地地址。站点本地地址的格式前缀为 FEC0:/48,加上64 位的接口标识符::05EFE:w.x.y.z,就构成了主机 A的站点本地地址。

注:如果要跨网段,ISATAP 路由器还需要使用全球单播地址(2001:2002:3EFE:)开头

(3)MPLS

MPLS由服务提供商在其IPv4网络中部署,以便提高转发速率。与传统的IP路由方式相比,MPLS在转发数据时仅在网络边缘分析IP报文头,而不用在每一跳都分析IP报文头,从而节省了处理时间。MPLS隧道技术一般通过IPv4网络中的标签交换路径(LSP)连接到IPv6网络。与其他隧道技术相比,可提供更好的性能和优化路由。此外,6PE over MPLS是一种利用现有MPLS网络来实现IPv4到IPv6过渡的方法,该方案允许在仅使用IPv4的MPLS核心网络上运行IPv6,只需将PE路由器升级为支持双栈功能的6PE路由器即可。

这一篇讲的很具体:

http://t.csdn.cn/PJv2Y

总结

隧道技术也是实现IPv4和IPv6共存时经常使用的典型解决方案,将一种类型的协议流量封装在另一个协议数据包中进行传输。

优点:充分利用现有网络投资,过渡初期实现方便。

缺点:路由器隧道出入口负载重,实现复杂,不利于大规模应用。

2.协议翻译技术

协议翻译技术用于纯IPv6主机与纯IPv4主机之间的通信。已经提出了多种翻译方法。

例如

REC2765 定义的无状态IP/ICMP翻译(Stateless IP/ICMP Translation, SIIT)。这种技术类似于IPv4中的NAT-PT技术,但它并不是为IPv6主机动态地分配IPv4地址。SIIT转换器规范描述了从IPv6到IPv4的协议转换机制,包括IP头的翻译方法以及ICMP 报文的翻译方法等。

当IPv6主机发出的分组到达SIIT转换器时,IPv6分组头被翻译为 IPv4分组头,分组的源地址采用IPv4翻译地址,目标地址采用IPv4映射地址,然后这个分组就可以在IPv4网络中传送了。

优点:不需要升级改造,开启NAT-PT即可。

缺点:转换不能完全保持原有含义,缺乏安全性。

技术:除了SIIT,还有NAT-PT,SOCKS64,TRT等,这里只介绍NAT-PT

网络地址转换技术(NAT-PT):

RFC 2766 定义了协议翻译方法 NAT-PT (Network Address Translator - Protocol Translator),是一种纯IPv6结点和IPv4结点间的互通方式,所有包括地址、协议在内的转换工作都由网络设备来完成,实现NAT-PT技术必须指定一个服务器作为NAT-PT网关,支持NAT-PT的网关路由器应具有IPv4地址池(作为地址翻泽之用,要为每个站点至少预留一个IPv4地址),此外网关路由器需要DNS-ALG和FTP-ALG这两种常用的应用层网关的支持,在IPv6结点访问IPv4结点时发挥作用。如果没有DNS-ALG的支持,只能实现由IPv6结点发起的与IPv4结点之间的通信,反之则不行。如果没有FTP-ALG的支持,IPv4网络中的主机将不能用FTP软件从IPv6网络中的服务器上下载文件或者上传文件,反之亦然。

在从IPv6向IPv4域中转发包时使用,地址池中的地址是用来转换IPv6报文中的源地址的。与SIIT不同,RFC 2766定义的是有状态的翻译技术,即要记录和保持会话状态,按照会话状态参数对分组进行翻译,包括对IP地址及其 相关的字段(例如IP、TCP、UDP、ICMP等)进行翻译。
协议翻译技术适用于IPv6孤岛与IPv4海洋之间的通信。这种技术要求一次会话中的双向数据包都在同一个路由器上完成转换,所以它只能适用于同一路由器连接的网络。 
这种技术的优点是不需要进行IPv4和IPv6终端的升级改造,只要求在IPv4和IPv6之间的网络转换设备上启用NAT-PT功能就可以了。但是实现这种技术时,一些协议字段在转换时仍不能完全保持原有的含义,并且缺乏端到端的安全性。
 

NAT-PT机制定义的以下不同类型的操作:

静态NAT-PT:

静态模式提供一对一的IPv6地址和IPv4地址的映射。IPv6单协议网络内的结点要访问的IPv4单协议网络内的每一个IPv4地址都必须在NAT-PT设备中设置。每一个目的IPv4地址在NAT-PT设备中被映射为一个具有预定义NAT-PT前缀的IPv6地址。这种模式中,每一个IPv6到IPv4映射需要一个源IPv4地址。静态NAT-PT模式跟IPv4中的静态NAT类似。

动态NAT-PT:

动态模式也提供一对一的映射,但是使用一个IPv4地址池。池中的源IPv4地址数量决定了并发的IPv6到IPv4转换的最大数目》在IPv6网络中IPv6单协议网络结点动态地把预定义的NAT-PT前缀增加到目的IPv4地址。这种模式需要一个IPv4地址池来执行动态的地址转换,动态NAT-PT模式和IPv4中的动态NAT类似。

NAPT-PT:

网络地址端口转换协议转换,NAPT-PT提供多个有NAT-PT前缀的IPv6地址和一个源IPv4地址间的多对一动态映射。这种转换同时在第3层(IPv4/IPv6)和上层(TCP/UDP)进行。NAPT-PT和IPv4中的PAT转换类似。

3.双协议栈:

双协议栈 ( Dual Stack) 技术的节点上同时运行IPv4和IPv6两套协议栈,其路由器既支持IPV6网络,也支持IPV4网络。

这是使IPv6节点保持与纯IPv4节点兼容最直接的方式,针对的对象是通信端节点(包括主机、路由器)。这种方式对IPv4和IPv6提供了完全的兼容,但是对于IP地址耗尽的问题却没有任何帮助。由于需要双路由基础设施,这种方式反而增加了网络的复杂度。

优点:网络规划相对简单,可以充分发挥安全性、路由约束和流支持。

缺点:对设备要求较高,维护大量协议和数据,升级改造投资大、建设周期比较长。
技术:有BIS双栈、BIA双栈

BIS

在IPv4 向IPv6 过渡的初始阶段,网络中只有很少的IP6 应用。BIS 是应用于IP 安全域内的一种机制,适用于在开始过渡阶段利用现有的IPv4 应用进行IPv6通信。
这种技术是在主机的TCP/IPv4模块与网卡驱动模块之间插入一些模块来实现IPV4与IPv6分组之间的转换,使得主机成为一个协议转换器。从外界看来,这样的主机就像是同时实现了IPv6和IPv4 两个协议栈的主机一样,既可以与其他的IPv4 主机通信,也可以与其他的IPV6主机通信,但这些通信都是基于现有的IPv4 应用进行的。BIS 用3个模块来代替IP6 应用,这些模块是转换器、扩展名解析器和地址映射器,如图所示。对3个模块的作用介绍如下:

转换器的作用是在IPv4 地址与IP6 地址之间进行转换,转换的机制与SIIT 定义的一样。当从IPv4应用接收到一个IPv4 分组时,转换器把IPV4 头转换为IPV6 头,然后对IPV6 分组进行分段(因为IPv6 头比IP4 头长20个字节),并发送到 IP6 网络中去。当接收到一个 IPv6分组时,转换器进行相反的转换,但是不需要对生成的 IPv4 分组进行分段。
扩展名解析器对 IPv4 应用发出的请求返回一个“适当的”答案。应用通常向名字服务器发送请求,要求解析目标主机名的 A 记录。扩展名解析器根据这个请求生成另外一个查询请求,发往名字服务器,要求解析主机名的 A 记录和 AAAA 记录。如果 A 记录被解析,它向应用返回A 记录,这时不需要进行地址转换。如果只有 AAAA 记录被解析,则它向地址映射器发出请求,要求为 IPv6 地址指定一个对应的 IPV4 地址,然后对指定的IP4 地址生成一个A记录并将其返回给应用。
地址映射器维护一个IPv4 地址池,同时维护一个由IPv4 地址与IPv6 地址对组成的表。当解析器或转换器要求为一个IPv6 地址指定一个IPv4地址时,它从地址池中选择一个IPv4 地址并动态地注册一个新的表项。当出现下面两种情况时会启动注册过程:

(1)解析器只得到目标主机名的AAAA 记录,并且表中不存在IP6 地址的映射表项。

(2)转换器接收到IPv6 分组,并且表中不存在 IPv6 地址的映射表项。在映射表初始化时,地址映射器注册它自己的一对 IPv4 地址与IPv地址。

BIA

BIA是在IPv4 Socket 应用与IPv6 Socket 应用之间进行翻译的技术。BIA 要求在 Socket应用模块与TCP/IP 模块之间插入 API转换器,这样建立的双栈主机不需要在P 头之间进行翻译使得转换过程得到简化。
当双栈主机中的IPv4应用要与另外一个IPV6主机进行通信时,API转换器检测到IPV4应用中的Socket API功能,于是就启动IPv6 Socket API功能与目标IPV6 主机进行通信。相反的通信过程是类似的。为了支持 IPv4 应用与目标PV6主机进行通信,API 转换器中的名字解析器将从缓存中选择一个IPv4地址并赋予目标IPV6主机图7-29表示安装BIA的双主机的体系结构。
在图示中的API转换器由3个模块组成:

功能映射器的作用是在IPv4 Socket API功能与IPv6 Socket API功能之间进行转换。当检测到来自IPv4 应用的IPv6 Socket API功能时,它就解释这个功能调用,启动新的IPv6 Socket API功能,并以此来与目标IPV6主机进行通信当从IPv6主机接收的数据中检测到 IPV6 SocketAPI功能时做相反的解释和转换。

名字解析器的作用是在收到IPv4 应用请求时给出适当的响应。当IPv4 应用试图通过解析器来进行名字解析时,BIA 就截取这个功能调用,转向调用 IPv6 的等价功能,以便解析目标主机的A 记录或AAAA 记录。

注:地址映射器和BIS中的地址映射器相同

三.例题

IPv6地址的格式前缀用于表达地址类型或子网地址,例如60位地址12AB00000000CD30有多种合法的表示形式,下面的选项中,不合法的是(56)。A.12AB:0000:0000:CD30:0000:0000:0000:0000/60
B.12AB::CD30:0:0:0:0/60
C.12AB:0:0:CD3/60
D.12AB:0:0:CD30::/60

答案: C

解析

每个字段前面的0可以省去,例如0123可以简写为123

一个或多个全0字段,可以用一对冒号“::”代替

8000:0000:0000:0000:0123:4567:89AB:CDEF 地址可简写为 8000::123:4567:89AB:CDEF

IPv4 兼容地址可以写为 :: 192.168.10.1
有效0位不可以简写,双冒号只能出现一次

补充:

•节点地址与其子网前缀组合起来可采用紧缩形式表示,例如节点地址:

2AB:0:0:CD30: 123:4567:89AB:CDEF


若其子网号为2AB:0:0:CD30::/60,则等价的写法是

2AB:0:0:CD30: 123:4567:89AB:CDEF/60

前60个位是网络号,接下来的4个位是主机号。由于网络号和子网号已经指定为2AB:0:0:CD30::,因此节点地址的前4段(由8个16进制数字组成)必须与此相同,即2AB:0:0:CD30。

最后4个16进制数是主机号部分,为123:4567:89AB:CDEF。

答案:B    A

答案:B   C

  • 2
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值