IPv6过渡技术

IPv6过渡技术概述

双栈技术

  • 节点同时支持IPv4和IPv6协议栈。
  • IPv6 over IPv4隧道

过渡初期使用

  • 过渡初期使用
  • 通过隧道技术,使IPv6报文在IPv4网络中传输。
  • 手动隧道包括IPv6 over IPv4手动隧道和IPv6 over IPv4 GRE隧道。
  • 自动隧道包括IPv4兼容IPv6自动隧道、6to4隧道和ISATAP隧道

IPv4 over IPv6隧道

  • 过渡后期使用
  • 通过隧道技术,是IPv4报文在IPv6网络中传输

双栈协议

双栈技术是IPv4向IPv6过渡的一种有效的技术。网络中的节点同时支持IPv4和IPv6协议栈,源节点根据目的节点的不同选用不同的协议栈,而网络设备根据报文的协议类型选择不同的协议栈进行处理和转发。双栈可以在一个单一的设备上实现,也可以是一个双栈骨干网。对于双栈骨干网,其中的所有设备必须同时支持IPv4/IPv6协议栈,连接双栈网络的接口必须同时配置IPv4地址和IPv6地址。

但协议栈和双协议栈结构示例如下:

双栈协议

双协议栈

双协议栈具有以下特点:

  • 多种链路协议支持双协议栈

    多种链路协议(如以太网)支持双协议栈。图中的链路层是以太网,在以太网帧上,如果协议ID字段的值为0x0800,表示网络层收到的是IPv4报文,如果为0x86DD,表示网络层是IPv6报文。

  • 多种应用支持双协议栈

    多种应用(如DNS/FTP/Telnet等)支持双协议栈。上层应用(如DNS)可以选用TCP或UDP作为传输层的协议,但优先选择IPv6协议栈,而不是IPv4协议栈作为网络层协议。

IPv6 over IPv4隧道

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隧道基本原理如下图:

IPv6 over iPhonev

图:IPv6 over IPv4隧道原理图

  1. 边界设备启动IPv4/IPv6双协议栈,并配置IPv6 over IPv4隧道。
  2. 边界设备在收到从IPv6网络侧发来的报文后,如果报文的目的地址不是自身且下一跳出接口为Tunnel接口,就要把收到的IPv6报文作为数据部分,加上IPv4报文头,封装成IPv4报文。
  3. 在IPv4网络中,封装后的报文被传递到对端的边界设备。
  4. 对端边界设备对报文解封装,去掉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报文封装格式

图:IPv6 over IPv4手动隧道封装格式

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 IPv4GRE

图:IPv6 over IPv4 GRE 隧道

IPv6 over IPv4 GRE隧道的在隧道的边界路由器的传输机制和IPv6 over IPv4手动隧道相同。

自动隧道:

自动隧道中,用户仅需要配置设备隧道的起点,隧道的终点由设备自动生成。为了使设备能够自动产生终点,隧道接口的IPv6地址采用内嵌IPv4地址的特殊IPv6地址形式。设备从IPv6报文中的目的IPv6地址中解析出IPv4地址,然后以这个IPv4地址代表的节点作为隧道的终点。

根据IPv6报文封装的不同,自动隧道又可以分为IPv4兼容IPv6自动隧道、6to4隧道和ISATAP隧道三种。

IPv4兼容IPv6自动隧道

IPv4兼容IPv6自动隧道,其承载的IPv6报文的目的地址(即自动隧道所使用的特殊地址)是IPv4兼容IPv6地址。IPv4兼容IPv6地址的前96位全部为0,后32位为IPv4地址。其格式如下:

IPv4兼容地址

图:IPv4兼容IPv6地址

IPv4兼容IPv6自动隧道的转发机制:

IPv4兼容IPv6机制

图:ipv4兼容IPv6隧道

需要经过Router A发给Router B的IPv6报文到达Router A后,以目的地址::2.1.1.1查找IPv6路由,发现路由的下一跳为虚拟的Tunnel口。由于Router A上的配置的隧道的类型是IPv4兼容IPv6自动隧道。于是Router A对IPv6报文进行了封装。封装的时候,IPv6报文被封装为IPv4报文,IPv4报文中的源地址为隧道的起始点地址1.1.1.1,而目的IP地址直接从IPv4兼容IPv6地址::2.1.1.1的后32位拷贝过来即2.1.1.1。这个报文被路由器从隧道口发出后,在IPv4的网络中被路由转发到目的地2.1.1.1,也就是Router B。Router B收到报文后,进行解封装,把其中的IPv6报文取出,送给IPv6协议栈进行处理。Router B返回Router A的报文也是按照这个过程来进行的。

注:如果IPv4兼容IPv6地址中的IPv4地址是广播地址、组播地址、网络广播地址、出接口的子网广播地址、全0地址、环回地址,则该IPv6报文被丢弃,不会进行隧道封装处理。

由于IPv4兼容IPv6隧道要求每一个主机都要有一个合法的IP地址,而且通讯的主机要支持双栈、支持IPv4兼容IPv6隧道,不适合大面积部署。目前该技术已经被6to4隧道所代替。

6to4隧道:

6to4隧道也属于一种自动隧道,隧道也是使用内嵌在IPv6地址中的IPv4地址建立的。与IPv4兼容自动隧道不同,6to4自动隧道支持Router到Router、Host到Router、Router到Host、 Host到Host。这是因为6to4地址是用IPv4地址做为网络标识,其地址格式如下所示:

6to4

图:6to4地址格式

  • 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隧道的封装和装发过程如下图所示:

6to4隧道1

图:6to4隧道示例一


一个IPv4地址只能用于一个6to4隧道的源地址,如果一个边界设备连接了多个6to4网络使用同样的IPv4地址做为隧道的源地址,则使用6to4地址中的SLA ID来区分,但他们共用一个隧道。如下图所示:

6to4隧道2

图:6to4隧道示例二


随着IPv6网络的发展,普通IPv6网络需要与6to4网络通过IPv4网络互通,这可以通过6to4中继路由器方式实现。所谓6to4中继,就是通过6to4隧道转发的IPv6报文的目的地址不是6to4地址,但转发的下一跳是6to4地址,该下一跳为路由器我们称之为6to4中继。隧道的IPv4目的地址依然从下一跳的6to4地址中获得。6to4中继示意图如下所示:

6to4中继

图:6to4中继示例

如果6to4网络2中的主机要与IPv6网络互通,在其边界路由器上配置路由指向的下一跳为6to4中继路由器的6to4地址,中继路由器的6to4地址是与中继路由器的6to4隧道的源地址相匹配的。6to4网络2中去往普通IPv6网络的报文都会按照路由表指示的下一跳发送到6to4中继路由器。6to4中继路由器再将此报文转发到纯IPv6网络中去。当报文返回时,6to4中继路由器根据返回报文的目的地址(为6to4地址)进行IPv4报文头封装,数据就能够顺利到达6to4网络中了。


ISATAP隧道:

ISATAP(Intra-Site Automatic Tunnel Addressing Protocol)是另外一种自动隧道技术。ISATAP隧道同样使用了内嵌IPv4地址的特殊IPv6地址形式,只是和6to4不同的是,6to4是使用IPv4地址做为网络前缀,而ISATAP用IPv4地址做为接口标识。其接口标识符格式如下图所示:

Isatap地址格式

图:ISATAP地址接口标识格式

如果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地址不需要是全局唯一的。

下图为ISATAP隧道一个典型应用场景:

ISaap典型应用

图:ISATAP隧道示例

如上图所示,在IPv4网络内部有两个双栈主机Host B和Host C,它们分别有一个私网IPv4地址。要使其具有ISATAP功能,需要进行如下操作:

  1. 首先配置ISATAP隧道接口,这时会根据IPv4地址生成ISATAP类型的接口ID。
  2. 根据接口ID生成一个ISATAP链路本地IPv6地址,生成链路本地地址以后,主机就有了在本地链路上进行IPv6通信的能力。
  3. 进行自动配置,主机获得IPv6全球单播地址、ULA地址等。
  4. 当主机与其它IPv6主机进行通讯时,从隧道接口转发,将从报文的下一跳IPv6地址中取出IPv4地址作为IPv4封装的目的地址。如果目的主机在本站点内,则下一跳就是目的主机本身,如果目的主机不在本站点内,则下一跳为ISATAP路由器的地址。

IPv6 over IPv4配置示例

配置IPv6 over IPv4手动隧道示例:

实验拓扑如下:

ipv6 over ipv4手动隧道配置

图:IPv6 over IPv4手动隧道配置拓扑

实验要求:

PC1和PC2与路由器之间为IPv6网络。两台路由器之间为IPv4网络,通过配置,要求是PC1与PC2能互通。即使IPv6可以在IPv4网络中通信。

配置文件:

AR1:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<AR1>display current-configuration 
#
sysname AR1
#
ipv6
#
interface GigabitEthernet0/0/0
ipv6 enable
ipv6 address 2000::2/64
#
interface GigabitEthernet0/0/1
ip address 12.1.1.1 255.255.255.0
#
interface Tunnel0/0/0
ipv6 enable
//使能接口的IPv6功能。
ipv6 address 2001::1/64
//设置Tunnel接口的IPv6地址。
tunnel-protocol ipv6-ipv4
//指定Tunnel为手动隧道模式。
source 12.1.1.1
//指定Tunnel的源地址。
destination 12.1.1.2
//指定Tunnel的目的地址
#
ipv6 route-static 3000:: 64 Tunnel0/0/0
//配置静态路由指向Tunnel接口
#
return

AR2:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<AR2>display current-configuration 
#
sysname AR2
#
ipv6
#
interface GigabitEthernet0/0/0
ip address 12.1.1.2 255.255.255.0
#
interface GigabitEthernet0/0/1
ipv6 enable
ipv6 address 3000::2/64
#
interface Tunnel0/0/0
ipv6 enable
ipv6 address 2001::2/64
tunnel-protocol ipv6-ipv4
source 12.1.1.2
destination 12.1.1.1
#
ipv6 route-static 2000:: 64 Tunnel0/0/0
#
return

IPv6 over IPv4报文抓包示例:

IPv6 over IPv4报文

图:IPv6 over IPv4报文抓包示例


配置IPv6 over IPv4自动隧道示例:

实验拓扑如下:

自动隧道

图:IPv6 over IPv4自动隧道配置拓扑示例

实验要求:

如上图:AR1与AR2,AR3之间运行的是IPv4网络。现在需要在IPv4网络之间传输IPv6网络的数据。使用自动隧道配置。

配置文件:

AR1:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<AR1>dis current-configuration 
#
sysname AR1
#
ipv6
#
interface GigabitEthernet0/0/0
ip address 12.1.1.1 255.255.255.0
#
interface Tunnel0/0/0
ipv6 enable
//使能接口的IPv6功能。
ipv6 address ::12.1.1.1/96
tunnel-protocol ipv6-ipv4 auto-tunnel
//指定Tunnel为自动隧道模式
source 12.1.1.1
#
rip 1
//配置rip使IPv4网络能互通
version 2
network 12.0.0.0
#
return

AR2:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<AR2>dis current-configuration 
#
sysname AR2
#
interface GigabitEthernet0/0/0
ip address 12.1.1.2 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 23.1.1.2 255.255.255.0
#
rip 1
version 2
network 12.0.0.0
network 23.0.0.0
#
return

AR3:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<AR3>dis current-configuration 
#
sysname AR3
#
ipv6
#
interface GigabitEthernet0/0/0
ip address 23.1.1.3 255.255.255.0
#
interface Tunnel0/0/0
ipv6 enable
ipv6 address ::23.1.1.3/96
tunnel-protocol ipv6-ipv4 auto-tunnel
source 23.1.1.3
#
rip 1
version 2
network 23.0.0.0
#
return

在以上配置中,AR1和AR3使能了IPv6功能,而AR2没有使能IPv6功能,通过配置了自动隧道,实现IPv6网络在iPv4网络中的互通。


在AR1

图:在AR1上可以ping通AR3上的IPv6网络


自动隧道抓包

图:IPv6 over iPv4 自动隧道抓包示例


配置IPv6 over IPv4GRE隧道示例:

实验拓扑如下:

GRE

图:IPv6 over IPv4 GRE隧道

实验要求:

PC1和PC2与路由器之间为IPv6网络。两台路由器之间为IPv4网络,通过配置,要求是PC1与PC2能互通。即使IPv6可以在IPv4网络中通信。通过配置GRE隧道实现要求。

配置文件:

AR1:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<AR1>dis current-configuration 
#
sysname AR1
#
ipv6
#
interface GigabitEthernet0/0/0
ipv6 enable
ipv6 address 2000::2/64
#
interface GigabitEthernet0/0/1
ip address 12.1.1.1 255.255.255.0
#
interface Tunnel0/0/0
ipv6 enable
ipv6 address 2001::1/64
tunnel-protocol gre
//指定隧道模式为GRE
source 12.1.1.1
destination 12.1.1.2
#
ipv6 route-static :: 0 Tunnel0/0/0
#
return

AR2:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<AR2>dis current-configuration  
#
sysname AR2
#
ipv6
#
interface GigabitEthernet0/0/0
ip address 12.1.1.2 255.255.255.0
#
interface GigabitEthernet0/0/1
ipv6 enable
ipv6 address 3000::2/64
#
interface Tunnel0/0/0
ipv6 enable
ipv6 address 2001::2/64
tunnel-protocol gre
source 12.1.1.2
destination 12.1.1.1
#
ipv6 route-static :: 0 Tunnel0/0/0
#
return

GRE隧道

图:IPv6 over IPv4 GRE隧道抓包示例


配置6to4隧道示例:

实验拓扑如下:

6TO

图:6to4隧道配置拓扑

实验要求:

PC1和PC2与路由器之间为IPv6网络。两台路由器之间为IPv4网络,通过配置,要求是PC1与PC2能互通。即使IPv6可以在IPv4网络中通信。通过配置6to4隧道实现要求。

配置文件:

AR1:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[AR1]dis current-configuration 
#
sysname AR1
#
ipv6
#
interface GigabitEthernet0/0/0
ipv6 enable
ipv6 address 2002:C01:101::2/64
#
interface GigabitEthernet0/0/1
ip address 12.1.1.1 255.255.255.0
#
interface Tunnel0/0/0
ipv6 enable
ipv6 address 2000::1/64
tunnel-protocol ipv6-ipv4 6to4
source GigabitEthernet0/0/1
#
ipv6 route-static :: 0 Tunnel0/0/0
#
return

AR2:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<AR2>dis current-configuration 
#
sysname AR2
#
ipv6
#
interface GigabitEthernet0/0/0
ip address 12.1.1.2 255.255.255.0
#
interface GigabitEthernet0/0/1
ipv6 enable
ipv6 address 2002:C01:102::2/64
//6to4中,ipv4地址会汇聚在IPv6的网络前缀中
#
interface Tunnel0/0/0
ipv6 enable
ipv6 address 2000::2/64
tunnel-protocol ipv6-ipv4 6to4
source GigabitEthernet0/0/0
#
ipv6 route-static :: 0 Tunnel0/0/0
#
return

6to4抓包

图:IPv6 over IPv4 6to4隧道报文抓包


ISATAP隧道配置示例:

实验拓扑如下:

ISATAP配置

图:ISATAP隧道配置示例

实验要求:

主机与路由器直连为iPv4网络,通过配置ISATAP隧道,使主机可以访问IPv6网络。

配置文件:

AR1:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<AR1>dis current-configuration 
#
sysname AR1
#
ipv6
#
interface GigabitEthernet0/0/0
ip address 192.168.65.2 255.255.255.0
//配置与主机直连的接口IP地址
#
interface Tunnel0/0/0
ipv6 enable
ipv6 address 2009::/64 eui-64
//配置isatap隧道,IPv6地址前缀
undo ipv6 nd ra halt
//允许发布路由器通告消息
tunnel-protocol ipv6-ipv4 isatap
//指定Tunnel为ISATAP模式。
source 192.168.65.2
//指定源地址
#
return

主机上的配置:

1
2
3
4
5
netsh interface ipvt isatap set state enable
//开启主机的Isatap隧道功能
netsh interface ipv6 isatap set router 192.168.65.2
netsh interface ipv6 isatap set router 192.168.65.2 enabled
//添加到边界设备的静态路由

配置成功够,状态如下,可以由路由器通告的IPv6地址前缀自动生成ISATAP地址:

主机配置

图:主机isatap隧道配置 成功后的状态


TUnel地址

图:在AR1上tunnel口自动生成的IPv6地址


ping

图:在主机上可以ping通路由器上的IPv6地址,即ISATAP隧道配置成功


ISatap抓包

图:ISATAP隧道报文抓包示例


IPv4 over IPv6隧道

利用隧道技术可以在IPv6网络上创建隧道,从而实现IPv4孤岛的互联,IPv4孤岛能通过IPv6公网访问其他IPv4网络。

在IPv4 Internet向IPv6 Internet过渡的后期,IPv6网络已被大量部署,此时可能出现IPv4孤岛。利用隧道技术可在IPv6网络上创建隧道,从而实现IPv4孤岛的互连。这类似于在IP网络上利用隧道技术部署VPN。在IPv6网络上用于连接IPv4孤岛的隧道,称为IPv4 over IPv6隧道。

IPv4 over IPv6隧道技术原理如下图:

IPv4 over IPv6

图:IPv4 over IPv6 隧道原理

  1. 边界设备启动IPv4/IPv6双协议栈,并配置IPv4 over IPv6隧道。
  2. 边界设备在收到从IPv4网络侧发来的报文后,如果报文的目的地址不是自身,就要把收到的IPv4报文作为负载,加上IPv6报文头,封装到IPv6报文里。
  3. 在IPv6网络中,封装后的报文被传递到对端的边界设备。
  4. 对端边界设备对报文解封装,去掉IPv6报文头,然后将解封装后的IPv4报文发送到IPv4网络。

IPv4 over IPv6配置示例:

实验拓扑如下:

配置拓扑

图:IPv4 over IPv6实验拓扑

实验要求:

PC1和PC2与路由器之间为IPv4网络。两台路由器之间为IPv6网络,通过配置,要求是PC1与PC2能互通。即使IPv4可以在IPv6网络中通信。

配置文件:

AR1:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<AR1>dis current-configuration 
#
sysname AR1
#
ipv6
#
interface GigabitEthernet0/0/0
ip address 192.168.1.254 255.255.255.0
#
interface GigabitEthernet0/0/1
ipv6 enable
ipv6 address 2000::1/64
#
interface Tunnel0/0/0
ip address 12.1.1.1 255.255.255.0
tunnel-protocol ipv4-ipv6
//指定隧道模式为ipv4-ipv6
source 2000::1
destination 2000::2
#
ip route-static 192.168.2.0 255.255.255.0 Tunnel0/0/0
#
return

AR2:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[AR2]display current-configuration 
#
sysname AR2
#
ipv6
#
interface GigabitEthernet0/0/0
ipv6 enable
ipv6 address 2000::2/64
#
interface GigabitEthernet0/0/1
ip address 192.168.2.254 255.255.255.0
#
interface Tunnel0/0/0
ip address 12.1.1.2 255.255.255.0
tunnel-protocol ipv4-ipv6
source 2000::2
destination 2000::1
#
ip route-static 192.168.1.0 255.255.255.0 Tunnel0/0/0
#
return

AR1路由表

图:AR1的路由表,出口指向Tnunel0/0/0口


报文抓包

图:IPv4 over IPv6报文抓包示例


IPv4 over IPv6其他配置项:

1
2
3
4
5
6
7
8
9
10
11
12
13
interface tunnel 0/0/0
tunnel ipv4-ipv6 encapsulation-limit 4
// 指定本次IPv6封装后的报文可被再次进行多少次IPv6封装。
//缺省情况下,允许IPv4-over-IPv6封装4次。
tunnel ipv4-ipv6 flow-labe 0
//设置流量标识值。
//缺省情况下,流量标识值为0。
tunnel ipv4-ipv6 hop-limit 64
//设置跳数限制值。
//缺省情况下,跳数限制值为64。
tunnel ipv4-ipv6 traffic-class 0
//设置流量级别。
//缺省情况下,流量级别为0。
坚持原创技术分享,您的支持将鼓励我继续创作!