当今社会,网络发展迅速,在为人类带来诸多的便利时,也带来了许多网络问题,而随着社会的发展,ipv4地址的枯竭(ipv4只有约42.9亿个地址),需要连接互联网的设备已经远远超过这个数字。
由于IPV4地址的枯竭和IPV6的先进性,IPv4过渡为ipv6势在必行。因为ipv6与ipv4的不兼容性,所以需要对原有ipv4的设备进行替换。但是如果贸然将ipv4设备进行大量替换所需要的成本也会非常巨大,且原有的网络运行的业务也会中断,显然这样并不可行。所以,ipv4向ipv6过渡是一个渐进的过程。在过渡初期,IPv4网络已经大量部署,而ipv6网络只是散落在各地的“孤岛”,IPv6 over ipv4 隧道就是通过隧道技术,使ipv6报文在ipv4网络中传输,实现ipv6网络之间的孤岛互连。
目前IPv6仍处于发展阶段,虽然运营商、互联网公司及高校都在逐步建设,但是互联网基础设施和应用大部分还在使用IPv4。由于IPv4和IPv6本身的不兼容性,为了适应这种情况,把各自的网络孤岛进行连接,出现了几种过渡解决方法,分别是:双栈技术、隧道技术、转换技术。
1、双栈技术:在网络节点中同时启用IPv4和IPv6两种协议,使得网络可以同时支持两种协议(IPv4/IPv6双栈部署技术),双栈技术相对比较好理解,节点主要根据应用的通讯的地址,选择相应的网络进行传输即可。而关于IPv6隧道技术,本质上是数据包的二次封装,借助IPv4网络,来实现IPv6节点的互联。
双栈技术是IPv4向IPv6过渡的一种有效的技术。
网络中的设备同时支持IPv4和IPv6协议栈,源节点根据目的节点的不同选用不同的协议栈,而网络设备根据报文的协议类型选择不同的协议栈进行处理和转发。双栈可以在一个单一的设备上实现,也可以是一个双栈骨干网。对于双栈骨干网,其中的所有设备必须同时支持IPv4/IPv6协议栈,连接双栈网络的接口必须同时配置IPv4地址和IPv6地址。所谓的双栈就是主机或者网络设备同时支持IPv4及IPv6双协议栈,如果节点支持双栈,那么它能够同时使用V4和V6的协议栈、同时处理IPv4及IPv6的数据。在双栈设备上,上层应用会优先选择IPv6协议栈,而不是IPv4。
比如,一个同时支持v4和v6的应用请求通过DNS请求地址,会先请求AAAA记录(用来将域名解析到ipv6地址的DNS记录),如果没有,则再请求A(用来将域名解析到ipv4地址的DNS记录)记录。双栈是V4、V6并存及IPv6过渡技术的基础。就拿上图来说,路由器就是一个双栈设备,默认情况下路由器本身就已经支持IPv4,接口上也配置了IPv4的地址,已经能够正常转发IPv4的报文,此刻在激活路由器的IPv6数据转发能力,再为接口分配IPv6的单播地址,那么这个接口又有了IPv6数据转发能力。当然,此时对于路由器而言,IPv4及IPv6协议栈互不干扰,独立工作。
ISP所有的新业务全部部署在ipv6骨干网中,老业务在ipv4骨干网中,ipv6骨干网的数据无法在ipv4骨干网上传递,反之也是一样。
(1)多种链路协议支持双协议栈多种链路协议(如以太网)支持双协议栈。图中的链路层是以太网,在以太网帧上,如果协议ID字段的值为0x0800,表示网络层收到的是IPv4报文,如果为0x86DD,表示网络层是IPv6报文。
(2)多种应用支持双协议栈多种应用(如DNS/FTP/Telnet等)支持双协议栈。上层应用(如DNS)可以选用TCP或UDP作为传输层的协议,但优先选择IPv6协议栈,而不是IPv4协议栈作为网络层协议。
协议栈及双协议栈结构实例如下:
双栈实验
2、 隧道技术:采用数据包封装技术,将IPv6数据封装到IPv4数据包中,利用IPv4的网络中进行通信(6-to-4隧道技术),隧道技术有多种实现, 手动隧道分为ipv6 over ipv4和ipv6 over ipv4 GRE隧道两种,自动隧道分为6to4、ISATAP、ipv4兼容ipv6自动隧道三种。
IPv4 over IPv4隧道是手动隧道的一种,隧道底层源地址和目的地址需要手动指定;用于边界路由器和边界路由器或者主机与边界路由器之间。
IPv6 over IPv4 手动隧道手动隧道直接把IPv6报文封装到IPv4报文中去,IPv6报文作为IPv4报文的净载荷。手动隧道的源地址和目的地址也是手工指定的,它提供了一个点到点的连接。手动隧道可以建立在两个边界路由器之间为被IPv4网络分离的IPv6网络提供稳定的连接,或建立在终端系统与边界路由器之间为终端系统访问IPv6网络提供连接。隧道的边界设备必须支持IPv6/IPv4双协议栈。其它设备只需实现单协议栈即可。因为手动隧道要求在设备上手工配置隧道的源地址和目的地址,如果一个边界设备要与多个设备建立手动隧道,就需要在设备上配置多个隧道,配置比较麻烦。所以手动隧道通常用于两个边界路由器之间,为两个IPv6网络提供连接。
(1)过渡初期使用,用于IPv6网络穿越IPv4网络
(2)通过隧道技术,使用IPv6报文在IPv4网络中传输
(3)手动隧道包括IPv6 over IPv4手动隧道和IPv6 over IPv4 GRE隧道
(4)自动隧道包括IPv4兼容IPv6隧道,6to4隧道和ISATAP隧道
2.1.1 IPV6 over IPv4 GRE 隧道
IPv6 over IPv4 GRE隧道使用标准的GRE隧道技术提供了点到点连接服务,需要手工指定隧道的端点地址。GRE隧道本身并不限制被封装的协议和传输协议,一个GRE隧道中被封装的协议可以是协议中允许的任意协议(可以是IPv4、IPv6、OSI、MPLS等)。
RFC 3068中为中继路由器定义了一个任意播前缀,这样6to4站点路由器就能找到离自己最近的中继。另外,IANA为中继分配了一个任意播前缀192.88.99.0/24,转换为IPv6前缀就是: 2002:c058:6301::/48,6to4边界路由器配置一个默认路由到这个地址就可以。
注:单独的双栈主机也可以与其他6to4路由器建立隧道。
2.2.2 6to4中继 :为了帮助那些6to4站点与非6to4的IPv6网络进行通信,6to4隧道技术定义了6to4中继路由器,这些中继路由器一方面能和6to4路由器建立隧道,同时也接入了IPv6骨干网,通过这些中继路由器,6to4站点就能访问IPv6互联网了。如下图:
站内自动隧道寻址协议(ISATAP: IntraSite Automatic Tunnel Addressing Protocol) 采用了双栈和隧道技术,能实现主机与主机、主机与路由器之间的通信。ISATAP隧道不仅能实现隧道功能,还可以通过IPv4网络承载IPv6网络的ND协议,从而使跨IPv4网络的设备仍然可以进行IPv6设备的自动配置。
在内部网络中,一个简单的ISATAP隧道示例如下:
双栈主机自动使用特殊的地址格式配置本地链路地址, FE80::0:5efe:a.b.c.d ,其中后64比特中5efe为固定,a.b.c.d为接口的IPv4地址。
当两个主机通信时,自动抽取出IPv4地址建立隧道,只要彼此间IPv4网络保持通畅即可实现。
一般情况下,使用私有IPv4地址的主机只能在本地网络中与其他双栈主机建隧道,如果想访问其他外部的IPv6网络,则需要借助ISATAP路由器,通过ISATAP路由器,获取公网IPv6前缀,实现外部路由。
ISATAP路由器通过发送RA,为内网的双栈主机分配IPv6前缀,内网的双栈主机根据RA,自动配置IPv6地址,并将ISATAP路由器作为默认网关借助ISATAP路由器,与外部的IPv6节点建立隧道,转发数据。
3、转换技术:采用类似NAT的方式进行的转换 (NAT-64地址转换技术)