来自: [url]http://www.huaweisymantec.net.cn/Products___Technology/Technology/IPv4_IPv6_series/Other_technology/Technology_recommend/200711/318724_30003_0.htm#_Toc154457884[/url]

1. IPv6 over IPv4隧道原理

IPv6 over IPv4 隧道机制是将 IPv6 数据报文前封装上 IPv4 的报文头,通过隧道( Tunnel )使 IPv6 报文穿越 IPv4 网络,实现隔离的 IPv6 网络的互通,如图 1-1 所示。
  注意:
IPv6 over IPv4 隧道两端的设备必须支持 IPv4/IPv6 双协议栈。
 
1 IPv6 over IPv4 隧道原理图
IPv6 over IPv4 隧道对报文的处理过程如下:
l               IPv6网络中的设备发送 IPv6报文,到达隧道的源端设备。
l               隧道的源端设备根据路由表判定该报文要通过隧道进行转发,将会在 IPv6报文前封装上 IPv4的报文头,通过隧道的实际物理接口将报文转发出去。
l               封装报文通过隧道到达隧道目的端设备,目的端设备判断该封装报文的目的地是本设备后,将对报文进行解封装。
l               目的端设备根据解封装后的 IPv6报文的目的地址将报文进行转发;如果目的地就是本设备,则将 IPv6报文转给上层协议处理。

2. 配置隧道和自动隧道

IPv6 over IPv4 隧道可以建立在主机 - 主机、主机 - 设备、设备 - 主机、设备 - 设备之间。隧道的终点可能是 IPv6 报文的最终目的地,也可能需要进一步转发。
根据隧道终点的 IPv4 地址的获取方式不同,隧道分为“配置隧道”及“自动隧道”。
l               如果隧道的终点不是 IPv6报文的最终目的地,当 IPv6报文通过隧道到达隧道终点后,隧道终点设备(通常为路由器)会对封装的 IPv6报文进行解封装,并转发 IPv6报文到最终目的地。在这种情况下,不能从 IPv6报文的目的地址中自动获取到隧道终点的 IPv4地址,需要进行手工配置。这样的隧道即为“配置隧道”。
l               如果隧道的终点就是 IPv6报文的最终目的地,则可以采用内嵌 IPv4地址的特殊 IPv6地址形式,实现从 IPv6报文的目的地址中自动获取隧道终点的 IPv4地址。这样的隧道即为“自动隧道”。

3. IPv6 over IPv4隧道模式

根据对 IPv6 报文的封装方式的不同, IPv6 over IPv4 隧道分为以下几种模式:
l               IPv6手动隧道
l               IPv4兼容 IPv6自动隧道
l               6to4隧道
l               ISATAPIntra-Site Automatic Tunnel Addressing Protocol,站点内自动隧道寻址协议)隧道
l               IPv6-over-IPv4 GREGeneric Routing Encapsulation,通用路由封装)隧道(简称 GRE隧道)
在上面列出的隧道模式中, IPv6 手动隧道及 GRE 隧道为配置隧道; IPv4 兼容 IPv6 自动隧道、 6to4 隧道及 ISATAP 隧道为自动隧道。
(1)         IPv6手动隧道
手动隧道是点到点之间的链路,一条链路就是一个单独的隧道。主要用于边缘路由器 - 边缘路由器或主机 - 边缘路由器之间定期安全通信的稳定连接,可实现与远端 IPv6 网络的连接。
(2)         IPv4兼容 IPv6自动隧道
IPv4 兼容 IPv6 自动隧道是点到多点的链路。隧道两端采用特殊的 IPv6 地址: IPv4 兼容 IPv6 地址,其格式为: 0:0:0:0:0:0:a.b.c.d/96 ,其中 a.b.c.d IPv4 地址。通过这个嵌入的 IPv4 地址可以自动确定隧道的终点,使 IPv6 隧道的建立非常方便。但由于它必须使用 IPv4 兼容 IPv6 地址,仍依赖于 IPv4 地址,在使用时有一定的局限性。
(3)         6to4隧道
l               普通 6to4隧道
6to4 隧道是点到多点的自动隧道,主要用于将多个 IPv6 孤岛通过 IPv4 网络连接到 IPv6 网络。 6to4 隧道通过 IPv6 报文的目的地址中嵌入的 IPv4 地址,可以自动获取隧道的终点。 6to4 隧道采用特殊的地址: 6to4 地址,其格式为: 2002:abcd:efgh: 子网号 :: 接口 ID/64 ,其中 2002 表示固定的 IPv6 地址前缀, abcd:efgh 表示该 6to4 隧道对应的 32 IPv4 源地址,用 16 进制表示(如 1.1.1.1 可以表示为 0101:0101 )。通过这个嵌入的 IPv4 地址可以自动确定隧道的终点,使隧道的建立非常方便。
由于 6to4 地址的 64 位地址前缀中的 16 位子网号可以由用户自定义,前缀中的前 48 位已由固定数值、隧道起点或终点设备的 IPv4 地址确定,使 IPv6 报文通过隧道进行转发成为可能。 6to4 隧道可以实现 IPv6 网络的互连,克服了 IPv4 兼容 IPv6 自动隧道使用的局限性。
l               6to4中继
6to4 隧道只能将前缀为 2002::/16 的网络连接起来,但在 IPv6 网络中也会使用像 2001::/16 这样的 IPv6 网络地址。为了使这些地址可达,必须有一台 6to4 路由器作为网关转发到 IPv6 网络的报文,这台路由器就叫做 6to4 中继( 6to4 relay )路由器。如下图所示, 6to4 网络的边缘路由器 Router A 需配置一条静态路由,下一跳地址指向 6to4 中继路由器 Router C 6to4 地址,这样,所有去往 IPv6 网络的报文都会被转发到 6to4 中继路由器,之后再由 6to4 中继路由器转发到 IPv6 网络中,从而实现 6to4 网络(地址前缀以 2002 开始)与 IPv6 网络的互通。
2 6to4 隧道和 6to4 中继原理图
(4)         ISATAP隧道
随着 IPv6 技术的推广,现有的 IPv4 网络中将会出现越来越多的 IPv6 主机, ISATAP 隧道技术为这种应用提供了一个较好的解决方案。 ISATAP 隧道是点到点的自动隧道技术,通过在 IPv6 报文的目的地址中嵌入的 IPv4 地址,可以自动获取隧道的终点。使用 ISATAP 隧道时, IPv6 报文的目的地址和隧道接口的 IPv6 地址都要采用特殊的地址: ISATAP 地址。 ISATAP 地址格式为: Prefix(64bit):0:5EFE:ip-address ip-address 形式为 a.b.c.d 或者 abcd:efgh ,其中 abcd:efgh 表示 32 IPv4 源地址。通过这个嵌入的 IPv4 地址就可以自动建立隧道,完成 IPv6 报文的传送。 ISATAP 隧道主要用于在 IPv4 网络中 IPv6 路由器- IPv6 路由器、 IPv6 主机- IPv6 路由器的连接。
3 ISATAP 隧道原理图
(5)         GRE隧道
使用标准的 GRE 协议可对 IPv6 报文进行封装,使 IPv6 报文能通过隧道穿越 IPv4 网络。与 IPv6 手动隧道相同, GRE 隧道也是点到点之间的链路,每条链路都是一条单独的隧道。 GRE 隧道主要用于边缘路由器-边缘路由器、主机-边缘路由器定期安全通信的稳定连接。相关配置请参见“ ××× 分册”中的“ GRE 配置”。

4. 快速终结

对于到达本机的隧道报文,如果报文的源 IP 地址与快速终结子网地址匹配,则将此隧道报文送到 IPv6 引擎进行转发或者上送 CPU 的处理。
如果是需要转发的报文,则由 IPv6 引擎去掉隧道报文的 IP 封装,取得原始入隧道 IPv6 报文后直接进行转发。
快速终结功能支持的隧道类型为 IPv6 over IPv4 隧道,分为以下两种情况:
l               对于配置隧道(如 GRE over IPv4隧道、 IPv6手动隧道),当使能快速终结后,系统自动将隧道目的地址作为快速终结子网地址,掩码为 255.255.255.255,因此没有用于指定快速终结子网和掩码的命令 expediting subnet
l               对于自动隧道(如 IPv4兼容 IPv6自动隧道、 6to4隧道、 ISATAP隧道),在配置了 expediting enable命令后,需要配置 expediting subnet命令指定快速终结子网和掩码。