IPv6 over IPv4隧道简介
IPv6 over IPv4隧道可实现IPv6网络孤岛之间通过IPv4网络互连。由于IPv4地址的枯竭和IPv6的先进性,IPv4过渡为IPv6势在必行。因为IPv6与IPv4的不兼容性,所以需要对原有的IPv4设备进行替换。但是如果贸然将IPv4设备大量替换所需成本会非常巨大,且现网运行的业务也会中断,显然并不可行。所以,IPv4向IPv6过渡是一个渐进的过程。在过渡初期,IPv4网络已经大量部署,而IPv6网络只是散落在各地的“孤岛”,IPv6 over IPv4隧道就是通过隧道技术,使IPv6报文在IPv4网络中传输,实现IPv6网络之间的孤岛互连。
双协议栈
双栈技术是IPv4向IPv6过渡的一种有效的技术。网络中的节点同时支持IPv4和IPv6协议栈,源节点根据目的节点的不同选用不同的协议栈,而网络设备根据报文的协议类型选择不同的协议栈进行处理和转发。双栈可以在一个单一的设备上实现,也可以是一个双栈骨干网。对于双栈骨干网,其中的所有设备必须同时支持IPv4/IPv6协议栈,连接双栈网络的接口必须同时配置IPv4地址和IPv6地址。单协议栈和双协议栈结构示例如图1所示。
双协议栈具有以下特点:
-
多种链路协议支持双协议栈
多种链路协议(如以太网)支持双协议栈。图中的链路层是以太网,在以太网帧上,如果协议ID字段的值为0x0800,表示网络层收到的是IPv4报文,如果为0x86DD,表示网络层是IPv6报文。
-
多种应用支持双协议栈
多种应用(如DNS/FTP/Telnet等)支持双协议栈。上层应用(如DNS)可以选用TCP或UDP作为传输层的协议,但优先选择IPv6协议栈,而不是IPv4协议栈作为网络层协议。
如图2为双协议栈的一个典型应用:
如图所示,主机向DNS服务器发送DNS请求报文,请求域名www.example.com对应的IP地址。DNS服务器将回复该域名对应的IP地址。如图所示,该IP地址可能是10.1.1.1或fc00::1。主机系统发送A类查询,则向DNS服务器请求对应的IPv4地址;系统发送AAAA查询,则向DNS服务器请求对应的IPv6地址。
图中Switch支持双协议栈功能。如果主机访问IPv4地址为10.1.1.1的网络服务器,则可以通过Switch的IPv4协议栈访问目标节点。如果主机访问IPv6地址为fc00::1的网络服务器,则可以通过Switch的IPv6协议栈访问目标节点。
IPv6 over IPv4隧道
隧道(Tunnel)是一种封装技术。它利用一种网络协议来传输另一种网络协议,即利用一种网络传输协议,将其他协议产生的数据报文封装在自身的报文中,然后在网络中传输。隧道是一个虚拟的点对点的连接。一个Tunnel提供了一条使封装的数据报文能够传输的通路,并且在一个Tunnel的两端可以分别对数据报文进行封装及解封装。隧道技术就是指包括数据封装、传输和解封装在内的全过程。隧道技术是IPv6向IPv4过渡的一个重要手段。
由于IPv4地址的枯竭和IPv6的先进性,IPv4过渡为IPv6势在必行。因为IPv6与IPv4的不兼容性,所以需要对原有的IPv4设备进行替换。但是IPv4设备大量替换所需成本会非常巨大,且现网运行的业务也会中断,显然并不可行。所以,IPv4向IPv6过渡是一个渐进的过程。在过渡初期,IPv4网络已经大量部署,而IPv6网络只是散落在各地的“孤岛”,IPv6 over IPv4隧道就是通过隧道技术,使IPv6报文在IPv4网络中传输,实现IPv6网络之间的孤岛互连。
IPv6 over IPv4 隧道技术的基本原理如图1所示。
-
边界设备启动IPv4/IPv6双协议栈,并配置IPv6 over IPv4隧道。
-
边界设备在收到从IPv6网络侧发来的报文后,如果报文的目的地址不是自身且下一跳出接口为Tunnel接口,就要把收到的IPv6报文作为数据部分,加上IPv4报文头,封装成IPv4报文。
-
在IPv4网络中,封装后的报文被传递到对端的边界设备。
-
对端边界设备对报文解封装,去掉IPv4报文头,然后将解封装后的IPv6报文发送到IPv6网络中。
一个隧道需要有一个起点和一个终点,起点和终点确定了以后,隧道也就可以确定了。IPv6 over IPv4隧道的起点的IPv4地址必须为手工配置,而终点的确定有手工配置和自动获取两种方式。根据隧道终点的IPv4地址的获取方式不同可以将IPv6 over IPv4隧道分为手动隧道和自动隧道。
- 手动隧道:手动隧道即边界设备不能自动获得隧道终点的IPv4地址,需要手工配置隧道终点的IPv4地址,报文才能正确发送至隧道终点。
- 自动隧道:自动隧道即边界设备可以自动获得隧道终点的IPv4地址,所以不需要手工配置终点的IPv4地址,一般的做法是隧道的两个接口的IPv6地址采用内嵌IPv4地址的特殊IPv6地址形式,这样路由设备可以从IPv6报文中的目的IPv6地址中提取出IPv4地址。
手动隧道
根据IPv6报文封装的不同,手动隧道又可以分为IPv6 over IPv4手动隧道和IPv6 over IPv4 GRE隧道两种。
IPv6 over IPv4手动隧道
手动隧道直接把IPv6报文封装到IPv4报文中去,IPv6报文作为IPv4报文的净载荷。手动隧道的源地址和目的地址也是手工指定的,它提供了一个点到点的连接。手动隧道可以建立在两个边界路由器之间为被IPv4网络分离的IPv6网络提供稳定的连接,或建立在终端系统与边界路由器之间为终端系统访问IPv6网络提供连接。隧道的边界设备必须支持IPv6/IPv4双协议栈。其它设备只需实现单协议栈即可。因为手动隧道要求在设备上手工配置隧道的源地址和目的地址,如果一个边界设备要与多个设备建立手动隧道,就需要在设备上配置多个隧道,配置比较麻烦。所以手动隧道通常用于两个边界路由器之间,为两个IPv6网络提供连接。
IPv6 over IPv4手动隧道封装格式如图2所示。
IPv6 over IPv4手动隧道转发机制为:当隧道边界设备的IPv6侧收到一个IPv6报文后, 根据IPv6报文的目的地址查找IPv6路由转发表,如果该报文是从此虚拟隧道接口转发出去,则根据隧道接口配置的隧道源端和目的端的IPv4地址进行封装。封装后的报文变成一个IPv4报文,交给IPv4协议栈处理。报文通过IPv4网络转发到隧道的终点。隧道终点收到一个隧道协议报文后,进行隧道解封装。并将解封装后的报文交给IPv6协议栈处理。
IPv6 over IPv4 GRE隧道
IPv6 over IPv4 GRE隧道使用标准的GRE隧道技术提供了点到点连接服务,需要手工指定隧道的端点地址。GRE隧道本身并不限制被封装的协议和传输协议,一个GRE隧道中被封装的协议可以是协议中允许的任意协议(可以是IPv4、IPv6、OSI、MPLS等)。
IPv6 over IPv4 GRE隧道封装和传输过程如图3所示:
IPv6 over IPv4 GRE隧道的在隧道的边界路由器的传输机制和IPv6 over IPv4手动隧道相同。GRE隧道的原理请参见《S300, S500, S2700, S5700, S6700 V200R022C10 配置指南-VPN》 GRE配置。
自动隧道
自动隧道中,用户仅需要配置设备隧道的起点,隧道的终点由设备自动生成。为了使设备能够自动产生终点,隧道接口的IPv6地址采用内嵌IPv4地址的特殊IPv6地址形式。设备从IPv6报文中的目的IPv6地址中解析出IPv4地址,然后以这个IPv4地址代表的节点作为隧道的终点。
根据IPv6报文封装的不同,自动隧道又可以分为6to4隧道和ISATAP隧道两种。
6to4隧道
6to4隧道也属于一种自动隧道,隧道也是使用内嵌在IPv6地址中的IPv4地址建立的。与IPv4兼容自动隧道不同,6to4自动隧道支持Router到Router、Host到Router、Router到Host、 Host到Host。这是因为6to4地址是用IPv4地址做为网络标识,其地址格式如图4所示:
- FP:可聚合全球单播地址的格式前缀(Format Prefix),其值为001。
- TLA:顶级聚合标识符(Top Level Aggregator),其值为0x0002。
- SLA:站点级聚合标识符(Site Level Aggregator)。
6to4地址可以表示为2002::/16,而一个6to4网络可以表示为2002:IPv4地址::/48。6to4地址的网络前缀长度为64bit,其中前48bit(2002: a.b.c.d)被分配给路由器上的IPv4地址决定了,用户不能改变,而后16位(SLA)是由用户自己定义的。6to4隧道的封装和转发过程如图5所示。
一个IPv4地址只能用于一个6to4隧道的源地址,如果一个边界设备连接了多个6to4网络使用同样的IPv4地址作为隧道的源地址,则使用6to4地址中的SLA ID来区分,但这些6to4网络共用一个隧道。如图6即上述情况:
ISATAP隧道
ISATAP(Intra-Site Automatic Tunnel Addressing Protocol)是另外一种自动隧道技术。ISATAP隧道同样使用了内嵌IPv4地址的特殊IPv6地址形式,只是和6to4不同的是,6to4是使用IPv4地址做为网络前缀,而ISATAP用IPv4地址做为接口标识。其接口标识符格式如图7所示:
如果IPv4地址是全局唯一的,则u位为1,否则u位为0。g位是IEEE群体/个体标志。由于ISATAP是通过接口标识来表现的,所以,ISATAP地址有全局单播地址、链路本地地址、ULA地址、组播地址等形式。ISATAP地址的前64位是通过向ISATAP路由器发送请求来得到的,它可以进行地址自动配置。在ISATAP隧道的两端设备之间可以运行ND协议。ISATAP隧道将IPv4网络看作一个非广播的点到多点的链路(NBMA)。
ISATAP过渡机制允许在现有的IPv4网络内部署IPv6,该技术简单而且扩展性很好,可以用于本地站点的过渡。ISATAP支持IPv6站点本地路由和全局IPv6路由域,以及自动IPv6隧道。ISATAP同时还可以与NAT结合,从而可以使用站点内部非全局唯一的IPv4地址。典型的ISATAP隧道应用是在站点内部,所以,其内嵌的IPv4地址不需要是全局唯一的。
图8为ISATAP隧道一个典型应用场景:
如上图所示,在IPv4网络内部有两个双栈主机Host B和Host C,它们分别有一个私网IPv4地址。要使其具有ISATAP功能,需要进行如下操作:
- 首先配置ISATAP隧道接口,这时会根据IPv4地址生成ISATAP类型的接口ID。
- 根据接口ID生成一个ISATAP链路本地IPv6地址,生成链路本地地址以后,主机就有了在本地链路上进行IPv6通信的能力。
- 进行自动配置,主机获得IPv6全球单播地址、ULA地址等。
- 当主机与其它IPv6主机进行通讯时,从隧道接口转发,将从报文的下一跳IPv6地址中取出IPv4地址作为IPv4封装的目的地址。如果目的主机在本站点内,则下一跳就是目的主机本身,如果目的主机不在本站点内,则下一跳为ISATAP路由器的地址。
6PE
6PE是一种IPv4到IPv6的过渡技术,ISP可以利用已有的IPv4骨干网为分散用户的IPv6网络提供接入能力。6PE的主要思想是:IPv6供应商边缘6PE(IPv6 Provider Edge)设备将用户的IPv6路由信息转换为带有标签的IPv6路由信息,并且通过内部边界网关协议IBGP(Internal Border Gateway Protocol)会话扩散到ISP的IPv4骨干网中。6PE设备转发IPv6报文时,首先会将进入骨干网隧道的数据流打上标签。隧道可以是GRE隧道或者MPLS LSP等。当ISP想利用自己原有的IPv4或MPLS网络,使其通过MPLS具有IPv6能力时,只需要升级PE设备。所以对于运营商来说,使用6PE技术作为IPv6过渡机制是一个高效的解决方案。
6PE的典型组网图如图9所示:
6PE的原理请参见《S300, S500, S2700, S5700, S6700 V200R022C10 配置指南-MPLS》。
IPv6 over IPv4隧道配置注意事项
V200R022C10版本特性支持情况
仅如下款型支持IPv6 over IPv4隧道:
S5720I-SI、S5735-S、S5735S-S、S5735-S-I、S5735S-H、S5736-S、S5731-H、S5731-H-K、S5731-S、S5731S-H、S5731S-S、S5732-H、S5732-H-K、S6735-S、S6720-EI、S6720S-EI、S6730-H、S6730-H-K、S6730S-H、S6730-S和S6730S-S
如需了解交换机软件配套详细信息,请点击Info-Finder,在选择产品系列或产品型号后,在“硬件中心”进行查询。
S5731-L和S5731S-L属于远端模块,不支持Web管理、YANG和命令行,仅支持通过中心交换机对其下发配置,相关操作请参见《S300, S500, S2700, S5700, S6700 V200R022C10 配置指南-设备管理》中的“智能极简园区网络配置(小行星方案)”。
特性依赖和限制
- 设备堆叠情况下不支持IPv6 over IPv4隧道功能。
- 6PE网络不支持直接引入路由到MPLS TE隧道,需要配置peer tnl-policy。
使能IPv6报文转发能力
背景信息
如果要使能接口对IPv6报文进行转发的功能,必须同时使能系统视图下和接口视图下的IPv6功能。
操作步骤
- 执行命令system-view,进入系统视图。
- 执行命令ipv6,使能IPv6报文转发能力。
缺省情况下,设备不使能对IPv6报文的转发能力。
如果要对IPv6报文进行转发,必须先在系统视图下使能设备的IPv6报文转发能力。否则即使在接口上配置有IPv6地址,设备无法转发IPv6的报文。
- 执行命令interface interface-type interface-number,进入需要使能IPv6功能的接口视图。
- 执行命令ipv6 enable,使能接口的IPv6功能。
如果要在接口视图下进行IPv6的相关配置,必须先在接口视图下使能IPv6功能。
缺省情况下,接口下不使能IPv6功能。
配置接口的IPv4和IPv6地址
背景信息
需要使能双协议栈的设备必须在IPv4网络侧和IPv6网络侧分别配置IPv4地址和IPv6地址。
操作步骤
- 执行命令system-view,进入系统视图。
- 执行命令interface vlanif vlan-id,进入IPv4网络侧的接口视图。
- 执行命令ip address ip-address { mask | mask-length },配置接口的IPv4地址。
- 执行命令quit,返回系统视图。
- 执行命令interface vlanif vlan-id,进入IPv6网络侧的接口视图。
- 请根据不同情况进行以下配置。
-
配置接口的自动链路本地地址,请执行命令ipv6 address auto link-local。
-
配置接口的自定义链路本地地址,请执行命令ipv6 address ipv6-address link-local。
-
配置接口的全球单播地址,请执行命令ipv6 address { ipv6-address prefix-length | ipv6-address/prefix-length }。
-
配置接口的IPv6 EUI-64格式地址,请执行命令ipv6 address { ipv6-address prefix-length | ipv6-address/prefix-length } eui-64。
-
检查IPv4/IPv6双协议栈配置结果
操作步骤
- 执行命令display ipv6 interface [ interface-type interface-number | brief ],查看接口的IPv6属性。
配置业务环回聚合接口
背景信息
配置业务环回聚合接口时,请注意以下情况:在整个设备上只需要一个业务环回聚合接口。此处做业务环回聚合的接口必须是空闲的,没有承载业务的接口。
操作步骤
- 执行命令system-view,进入系统视图。
- 执行命令interface eth-trunk trunk-id,进入Eth-Trunk接口视图。
- 执行命令service type tunnel,指定该接口为业务环回聚合接口。
说明:
同一Eth-Trunk接口下service type tunnel命令不能与URPF功能同时配置。
使能业务环回聚合接口功能的Eth-Trunk接口,其STP功能自动去使能。去使能Eth-Trunk接口的业务环回聚合接口功能后,STP功能自动使能。
- 执行命令quit,返回系统视图。
- 执行命令interface interface-type interface-number,进入接口视图。
- 执行命令eth-trunk trunk-id,将当前接口加入到指定Eth-Trunk中。
检查配置结果
在Eth-Trunk接口视图下执行命令display this include-default,查看该Eth-Trunk接口是否配置为业务环回聚合接口。
配置IPv6 over IPv4手动隧道
背景信息
配置IPv6 over IPv4手动隧道时,请注意以下情况:
-
创建Tunnel接口,然后才能配置Tunnel的其他参数。
-
在Tunnel两端的设备上都需要进行下列配置。
-
在边界设备与IPv6网络相连的接口上必须配置IPv6地址,在边界设备与IPv4网络相连的接口上必须配置IPv4地址。为了支持动态路由协议,也需要配置Tunnel接口的网络地址。
操作步骤
- 执行命令system-view,进入系统视图。
- 执行命令interface tunnel interface-number,创建Tunnel接口。
- 执行命令tunnel-protocol ipv6-ipv4,指定Tunnel为手动隧道模式。
- 执行命令eth-trunk trunk-id,将当前接口加入到指定Eth-Trunk中。
- 执行命令source { ip-address | interface-type interface-number },指定Tunnel的源地址或源接口。
- 执行命令destination dest-ip-address,指定Tunnel的目的地址。
说明:
Tunnel的目的地址可以是物理接口地址,也可以是Loopback接口的地址。
- 执行命令ipv6 enable,使能接口的IPv6功能。
- 执行命令ipv6 address { ipv6-address prefix-length | ipv6-address/prefix-length },设置Tunnel接口的IPv6地址。
说明:
此时指定的Tunnel接口的IPv6地址的前缀,应该与边界设备所属的IPv6网络的地址前缀相同。