一种基于ICMPv6的IPv6隧道通信方法转让专利

申请号 : CN201410058983.4

文献号 : CN103825972B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 崔勇刘聪

申请人 : 清华大学

摘要 :

发明是一种基于ICMPv6协议的IPv6隧道封装方法,包括隧道数据封装格式以及隧道通信交互方式,本发明提出的隧道技术可将任意数据报文封装进ICMPv6报文,通过IPv6网络进行传输,最典型的应用场景是将IPv4数据报文放置于ICMPv6报文内,即IPv4‑in‑ICMPv6隧道,这种IPv4‑in‑ICMPv6隧道可以适用于所有基于隧道技术的IPv6过渡技术方案,如Lightweight4over6、Public4over6、DS‑Lite、MAP‑E等。

权利要求 :

1.一种基于ICMPv6的IPv6隧道通信方法,包括隧道数据封装以及隧道通信交互,其特征在于,所述隧道数据封装中,使用ICMPv6的ECHO REQUEST和ECHO REPLY两种报文作为通信载体,将需要实际传输的数据报文作为ICMPv6报文的负载,在ICMPv6报文头部以及数据负载之间添加控制信息,封装后报文的各部分描述如下:(1)隧道封装后形成的实际报文是IPv6报文,报文的网络层头部是IPv6头,IPv6头的源地址是隧道封装设备自身的IPv6地址,目的地址是隧道对端设备的单播、任播地址,或组播地址,IPv6头部中的协议号是58,即ICMPv6;

(2)IPv6头部的下一层是ICMPv6头部,ICMPv6类型域是128或129,代码域是0,标识域使用的是随机生成数,序列号域的值为L,表示控制信息长度;

(3)ICMPv6的负载包含2部分内容,分别是长度为L的控制信息字段以及负载数据报文,控制信息字段是可选内容,格式由运营商控制;

(4)负载数据报文是由网络层头部开始的完整数据报文,是实际需要传输的报文;

所述隧道通信交互包括点对点隧道场景以及星形隧道场景。

2.根据权利要求1所述的基于ICMPv6的IPv6隧道通信方法,其特征在于,所述控制信息字段内容包括用户认证和/或加密密钥。

3.根据权利要求1所述的基于ICMPv6的IPv6隧道通信方法,其特征在于,所述负载数据报文在默认情况下,采用明文传输的方式,直接将负载报文放置在隧道报文的ICMPv6负载字段。

4.根据权利要求1所述的基于ICMPv6的IPv6隧道通信方法,其特征在于,所述点对点隧道场景独立部署,所述星形隧道场景与具体的IPv6过渡方案结合部署。

5.根据权利要求1所述的基于ICMPv6的IPv6隧道通信方法,其特征在于,所述IPv6过渡方案包括Lightweight 4over6、Public 4over6、DS-Lite以及MAP-E。

6.根据权利要求1所述的基于ICMPv6的IPv6隧道通信方法,其特征在于,在所述点对点隧道场景中,隧道的两端设备对等,每台设备提前配置对方设备的IPv6地址,使用这个IPv6地址作为隧道报文的唯一目的地,将所有隧道报文均发往同一目的设备。

7.根据权利要求6所述的基于ICMPv6的IPv6隧道通信方法,其特征在于,每个隧道的两端设备的隧道报文中的ICMPv6类型字段可任意填写128或129。

8.根据权利要求6所述的基于ICMPv6的IPv6隧道通信方法,其特征在于,每个隧道的两端设备中,一端设备使用128,另一端设备使用129。

9.根据权利要求1所述的基于ICMPv6的IPv6隧道通信方法,其特征在于,在星形隧道场景中,隧道的核心设备称为隧道汇聚点,用户侧设备称为隧道发起点,隧道发起点与一个隧道汇聚点设备通信,每个隧道汇聚点设备可以同时与多个隧道发起点设备通信。

10.根据权利要求9所述的基于ICMPv6的IPv6隧道通信方法,其特征在于,在星形隧道场景中,隧道发起点发出的隧道报文中的ICMPv6类型字段固定使用128,隧道汇聚点发出的隧道报文中的ICMPv6类型字段固定使用129。

说明书 :

一种基于ICMPv6的IPv6隧道通信方法

技术领域

[0001] 本发明属于互联网技术领域,特别涉及一种基于ICMPv6的IPv6隧道通信方法。

背景技术

[0002] 随着互联网近些年来的快速发展,IPv4地址资源逐渐紧缺,互联网向IPv6过渡迫在眉睫。随着互联网由IPv4向IPv6过渡,互联网的格局将会变成以IPv6网络为主,多种网络共存。互联网过渡技术需要实现在IPv6网络中进行IPv4及其它协议的数据传输。
[0003] 实现在IPv6网络中进行IPv4数据传输的方法主要有两种,分别是隧道技术以及翻译技术。隧道技术的核心思想是在IPv4数据报文的外侧封装IPv6报头,从而将IPv4报文转变为IPv6报文,已实现在IPv6网络中的传输。翻译技术的核心思想是将IPv4报文直接翻译成IPv6报文,从而在IPv6网络中传输。
[0004] 目前,IETF已经针对隧道技术与翻译技术分别制定了多种IPv6过渡技术。其中,Lightweight4over6、Public4over6、DS-Lite、MAP-E等技术基于隧道技术,MAP-T、4RD等翻译技术。
[0005] 所有基于隧道技术的IPv6过渡技术方案均依赖于IPv6隧道封装技术。目前,最基本的隧道封装技术是IP-in-IP封装,即在IP报文的外侧直接添加一个新的IP报头。具体而言,在IPv6中的IPv4-in-IPv6封装方法是在被传输的IPv4报文外侧封装一个IPv6头部,从而使得整个报文由IPv4报文变成IPv6报文。IPv4-in-IPv6封装方法需要引入新的IPv6协议号(41),隧道报文有可能被防火墙识别、拦截,且封装方法过于简单,难以扩展。

发明内容

[0006] 为了克服上述现有技术的缺点,本发明的目的在于提供一种基于ICMPv6的IPv6隧道通信方法,改进了IPv4-in-IPv6隧道技术中存在的不足,并且可以扩展支持IPv4以外协议的隧道传输。
[0007] 为了实现上述目的,本发明采用的技术方案是:
[0008] 一种基于ICMPv6的IPv6隧道通信方法,包括隧道数据封装以及隧道通信交互,其中:
[0009] 所述隧道数据封装中,使用ICMPv6的ECHO REQUEST和ECHO REPLY两种报文作为通信载体,将需要实际传输的数据报文作为ICMPv6报文的负载,在ICMPv6报文头部以及数据负载之间添加控制信息,封装后报文的各部分描述如下:
[0010] (1)隧道封装后形成的实际报文是IPv6报文,报文的网络层头部是IPv6头,IPv6头的源地址是隧道封装设备自身的IPv6地址,目的地址是隧道对端设备的单播、任播地址,或组播地址,IPv6头部中的协议号是58,即ICMPv6;
[0011] (2)IPv6头部的下一层是ICMPv6头部,ICMPv6类型域是128(ECHO REQUEST)或129(ECHO REPLY),代码域是0,标识域使用的是随机生成数,序列号域的值为L,表示控制信息长度;
[0012] (3)ICMPv6的负载包含2部分内容,分别是长度为L的控制信息字段以及负载数据报文,控制信息字段是可选内容,格式由运营商控制;
[0013] (4)负载数据报文是由网络层头部(如IPv4头部、IPv6头部等)开始的完整数据报文,是实际需要传输的报文;
[0014] 所述隧道通信交互包括点对点隧道场景以及星形隧道场景。
[0015] 所述控制信息字段内容包括用户认证和/或加密密钥。
[0016] 所述负载数据报文在默认情况下,采用明文传输的方式,直接将负载报文放置在隧道报文的ICMPv6负载字段。
[0017] 所述点对点隧道场景独立部署,所述星形隧道场景与具体的IPv6过渡方案(如Lightweight4over6、Public4over6、DS-Lite、MAP-E等)结合部署。
[0018] 在所述点对点隧道场景中,隧道的两端设备对等,每台设备提前配置对方设备的IPv6地址,使用这个IPv6地址作为隧道报文的唯一目的地,将所有隧道报文均发往同一目的设备。每个隧道端点设备的隧道报文中的ICMPv6类型字段可任意填写128(ECHO REQUEST)或129(ECHO REPLY)。出于一致性的考虑,推荐的配置方式是,每个隧道端点设备中,一端设备使用128(ECHO REQUEST),另一端设备使用129(ECHO REPLY)。
[0019] 在星形隧道场景中,隧道的核心设备称为隧道汇聚点,用户侧设备称为隧道发起点,隧道发起点与一个隧道汇聚点设备通信,每个隧道汇聚点设备可以同时与多个隧道发起点设备通信。在星形隧道场景中,隧道发起点发出的隧道报文中的ICMPv6类型字段固定使用128(ECHO REQUEST),隧道汇聚点发出的隧道报文中的ICMPv6类型字段固定使用129(ECHO REPLY)。
[0020] 本发明定义的ICMPv6隧道报文与普通ICMPv6ping报文格式完全一致。当隧道端点设备需要识别、区分正常ICMPv6报文与本发明定义的隧道报文时,应根据ICMPv6负载中的负载报文进行判断。运营商也可以选择附加控制信息的方式,根据控制信息字段进行区分。
[0021] 本发明提出的隧道技术可将任意数据报文封装进ICMPv6报文,通过IPv6网络进行传输。最典型的应用场景是将IPv4数据报文放置于ICMPv6报文内,即IPv4-in-ICMPv6隧道。这种IPv4-in-ICMPv6隧道可以适用于所有基于隧道技术的IPv6过渡技术方案,如Lightweight4over6、Public4over6、DS-Lite、MAP-E等。

附图说明

[0022] 图1是本发明隧道协议格式示意图。
[0023] 图2是本发明点对点隧道场景示意图。
[0024] 图3是本发明星形隧道场景示意图。

具体实施方式

[0025] 下面结合附图和实施例详细说明本发明的实施方式。
[0026] 本发明使用ICMPv6的ECHO REQUEST和ECHO REPLY两种报文作为通信载体,将需要实际传输的数据报文放置在ICMPv6报文的负载处。为了便于扩展,在ICMPv6头部以及数据负载之间添加了控制信息,控制信息的长度及内容灵活可变。
[0027] 完整的隧道封装格式如图1所示。报文的各部分描述如下:
[0028] (1)隧道封装后形成的实际报文是IPv6报文,因此报文的网络层头部是IPv6头。IPv6头的源地址是隧道封装设备自身的IPv6地址,目的地址是隧道对端设备的单播、任播地址,或组播地址。IPv6头部中的协议号是58,即ICMPv6。
[0029] (2)IPv6头部的下一层是ICMPv6头部。ICMPv6类型域是128(ECHO REQUEST)或129(ECHO REPLY)。代码域是0。标识域使用的是随机生成数。序列号域的值为L,表示控制信息长度。
[0030] (3)ICMPv6的负载包含2部分内容,分别是长度为L的控制信息字段以及负载数据报文。控制信息字段是可选内容,格式由运营商控制,内容可以是用户认证、加密密钥等。
[0031] (4)负载数据报文是由网络层头部(如IPv4头部、IPv6头部等)开始的完整数据报文,是实际需要传输的报文。默认情况下,采用明文传输的方式,直接将负载报文放置在隧道报文的ICMPv6负载字段。需要加密时,运营商可采用任意加密方式对负载报文进行加密,并可利用控制信息字段。
[0032] 1.点对点隧道场景
[0033] 在图2所示的点对点隧道场景中,网络1和网络2均为IPv4单栈网络,假设存在2台隧道传输设备,其IPv6地址分别为2001::1和2001::2。2台隧道传输设备已经预先配置好ICMPv6隧道,并且配置了对端设备地址。
[0034] 当处于网络1种的用户需要访问网络2中的某终端时,用户生成的IPv4报文先到达隧道传输设备1,为向隧道传输设备2发送数据报文,报文参数如下:
[0035] IPv6目的地址:2001::2(预先配置)
[0036] IPv6源地址:2001::1
[0037] IPv6协议号:58(ICMPv6)
[0038] ICMPv6类型:128(ECHO REQUEST)
[0039] ICMPv6代码:0
[0040] ICMPv6校验和:根据IMCPv6协议要求计算
[0041] ICMPv6标识:123(随机生成)
[0042] ICMPv6序列号:0(无控制信息)
[0043] ICMPv6负载:实际被传输的IPv4数据报文
[0044] 当隧道传输设备2收到封装后的报文后,将进行解封装,从而得到原IPv4报文,并转发给相应的终端。
[0045] 终端回复用户时,发出的IPv4报文会先到达隧道传输设备2,为向隧道传输设备1发送数据报文,报文参数如下:
[0046] IPv6目的地址:2001::1(预先配置)
[0047] IPv6源地址:2001::2
[0048] IPv6协议号:58(ICMPv6)
[0049] ICMPv6类型:129(ECHO REPLY)
[0050] ICMPv6代码:0
[0051] ICMPv6校验和:根据IMCPv6协议要求计算
[0052] ICMPv6标识:456(随机生成)
[0053] ICMPv6序列号:0(无控制信息)
[0054] ICMPv6负载:实际被传输的数据报文
[0055] 当隧道传输设备2收到封装后的报文后,将进行解封装,从而得到原IPv4报文,并转发给相应的用户。
[0056] 一次通信过程结束。
[0057] 2.星形隧道场景
[0058] 在图3所示的星形隧道场景中,网络1和网络2均为IPv4单栈网络,假设存在2台隧道发起点设备及1台隧道汇聚点设备。隧道汇聚点的IPv6地址是2001::1,2台隧道发起点设备的IPv6地址分别是2001::2和2001::3。各设备已预先配置好隧道。
[0059] 当处于网络1中的用户需要访问网络2种的某终端时,用户生成的IPv4报文首先到达隧道发起点1,为向隧道汇聚点发送数据报文,报文参数如下:
[0060] IPv6目的地址:2001::1(预先配置)
[0061] IPv6源地址:2001::2
[0062] IPv6协议号:58(ICMPv6)
[0063] ICMPv6类型:128(ECHO REQUEST)
[0064] ICMPv6代码:0
[0065] ICMPv6校验和:根据IMCPv6协议要求计算
[0066] ICMPv6标识:789(随机生成)
[0067] ICMPv6序列号:0(无控制信息)
[0068] ICMPv6负载:实际被传输的数据报文
[0069] 当隧道汇聚点设备收到封装后的报文后,将进行解封装,从而得到原IPv4报文,并转发给相应的终端。
[0070] 终端回复用户时,发出的IPv4报文会先到达隧道汇聚点设备,为向隧道发起点设备1发送数据报文,报文参数如下:
[0071] IPv6目的地址:2001::2(查表得出)
[0072] IPv6源地址:2001::1
[0073] IPv6协议号:58(ICMPv6)
[0074] ICMPv6类型:129(ECHO REPLY)
[0075] ICMPv6代码:0
[0076] ICMPv6校验和:根据IMCPv6协议要求计算
[0077] ICMPv6标识:135(随机生成)
[0078] ICMPv6序列号:0(无控制信息)
[0079] ICMPv6负载:实际被传输的数据报文
[0080] 当隧道发起点设备1收到封装后的报文后,将进行解封装,从而得到原IPv4报文,并转发给相应的用户。
[0081] 当隧道发起点设备2向网络2中的终端发起访问时,将首先生成IPv4报文并将其封装到ICMPv6报文中,然后发送给隧道汇聚点。报文参数如下:
[0082] IPv6目的地址:2001::1(预先配置)
[0083] IPv6源地址:2001::2
[0084] IPv6协议号:58(ICMPv6)
[0085] ICMPv6类型:128(ECHO REQUEST)
[0086] ICMPv6代码:0
[0087] ICMPv6校验和:根据IMCPv6协议要求计算
[0088] ICMPv6标识:789(随机生成)
[0089] ICMPv6序列号:0(无控制信息)
[0090] ICMPv6负载:实际被传输的数据报文
[0091] 隧道汇聚点收到ICMPv6报文后进行解封装得到元IPv4报文,并转发给相应终端。随后隧道汇聚点将终端回复的IPv4报文进行封装并发送给隧道发起点2,报文如下:
[0092] IPv6目的地址:2001::3(查表得出)
[0093] IPv6源地址:2001::1
[0094] IPv6协议号:58(ICMPv6)
[0095] ICMPv6类型:129(ECHO REPLY)
[0096] ICMPv6代码:0
[0097] ICMPv6校验和:根据IMCPv6协议要求计算
[0098] ICMPv6标识:135(随机生成)
[0099] ICMPv6序列号:0(无控制信息)
[0100] ICMPv6负载:实际被传输的数据报文
[0101] 隧道汇聚点需要根据外部返回的数据报文,查表得出隧道对端的IPv6地址。查找算法有多种实现,取决于具体使用的IPv6过渡方案。例如在Lightweight4over6方案中,使用的是查找每用户级状态绑定表的方式,根据数据报文的目的IPv4地址及端口号,查找IPv6地址。