来自: [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
ISATAP(
Intra-Site Automatic Tunnel Addressing Protocol,站点内自动隧道寻址协议)隧道
l
IPv6-over-IPv4 GRE(
Generic 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命令指定快速终结子网和掩码。