IPv4/IPv6隧道技术的通信研究[摘要]随着网络的高速发展,IPv4由于地址不足,将不能满足未来用户的需求。
而IPv6的出现,正好能解决这一问题。
所以研究从IPv4到IPv6的平滑过渡,加快整个过渡过程就是当前的首要之急,便于对整个IPv6网络进行部署。
[关键词]IPv4;IPv6;GRE;隧道技术引言目前使用的IP 协议版本IPv4 正面临着IP 地址即将耗尽等问题,IETF 从1995 年开始,着手研究开发下一代IP 协议,即IPv6。
IPv6 具有长达128 位的地址空间,能为日后分配更多的IP地址。
为了能让IPv4到IPv6平滑过渡,前人已经研究出了多种隧道技术,大致上可以分为双协议栈技术、隧道技术和网络地址翻译技术。
而在这里,我们对GRE隧道进行了研究。
1 IPv4与IPv61.1 IPv4现状Internet 的起源是由ARPANET于1968 年开始进行研究的, 当时的研究者们为了给ARPANET建立一个标准的网络通信协议而开发出了一种IP协议,即IPv4协议。
但是当时IP协议的开发者认为ARPANET 的网络个数不会超过数十个, 因此他们只将IP协议的地址长度设定为32个二进制数位,其中前8 位标识网络, 其余24 位标识主机。
然而随着ARPANET日益膨胀,IP协议的开发者认识到原先设想的网络个数已经无法满足当前的实际需求。
1.2 IPv6概念IPv6 被称为下一代互联网协议,它是由国际互联网工程任务组(IETF)设计的一种用来替代IPv4 的新协议。
IPv6 将现有的IPv4 地址长度扩大4 倍,即当前由的32bit 扩充到128bit,可以提供3.4E+38 个地址,这将从根本上解决目前IP 地址短缺的严重问题。
IPv6 地址采用16 进制的表示方法,将128bit 分为8 组,分得的每组为16bit,用4 个16 进制数表示,分组之间用“:”隔开,每组中最前面的0 可以省略,但每组必须有一个数。
同IPv4 地址一样,IPv6 也被划分为若干类型。
主要有三种地址:单播地址(Unicast )、任播地址(Anycast )、组播地址(Multicast)。
1.3 IP格式1.3 .1 IPv4格式IPv4中规定IP地址长度为32(按TCP/IP参考模型划分) ,即有2的32次方-1个地址。
一般的书写法为4个用小数点分开的十进制数。
也有人把4位数字化成一个十进制长整数,但这种标示法并不常见。
过去IANAIP地址分为A,B,C,D 4类,IPv4报头指明了IP数据包的大小和上层的协议类型,以及源IP地址和目的IP地址,并提供了IP分片重组的必要信息。
下图为IPv4数据包结构。
图1 IPv4数据包格式1.3.2 IPv6格式IPV6的每一个分组由必须要有的基本首部和跟随在后面的有效载荷组成。
有效载荷有两部分组成:可选的扩展首部和从上层来的数据(不超65535字节)。
如下图示图2 IPv6数据包格式IPv6地址包括16个字节(八位组);它共有128比特长。
1.3.3 IPv6优点IPv6保持了IPv4赖以成功的许多特点, 设计中有部分处理是对IPv4不足之处的修正。
作为新一代的IP协议, IPv6有着如下方面的特性:1.扩展地址空间, 增强路由;2.地址的自动配置;3.IP数据报报头的简化;4.安全控制;5.服务质量QoS;2 隧道技术在IPv4网络还没有完全流行于全球之前,一定会有一些网络首先采用IPv6协议,而这些首先采用IPv6协议的网络就像是在IPv4海洋中的一些小岛一样,如果能在IPv4的“海底”建立一条“隧道”实现这些小岛之间的连接,那么这些所谓的IPv6小岛就可以跨越IPv4海洋,从而实现彼此之间的通信,这就是隧道(Tunne)技术。
隧道技术是一种封装技术,它是利用一种网络协议来传输另一种网络协议,即利用一种网络传输协议,将其他协议产生的数据报文封装在它自己的报文中,随后在网络中传输。
实际上隧道可以看作一个虚拟的点到点连接。
例如,GRE隧道支持点到点的业务接入。
其实隧道技术就是指包括数据封装、传输和解封装在内的全过程。
简单来说就是:原始报文在A地进行封装,然后在通道上传送,到达B地后把封装去掉,还原成原始报文,这样就形成了一条由A到B的通信隧道。
在隧道的端点可以是主机,也可以是路由器,但必须是双协议栈的结点,它们连接两种网络,进行报文的封闭与解封。
由于隧道技术只要求在隧道的入口和出口端对报文进行修改,在其他地方没有什么要求,相对于其他两种过渡技术来说,这种技术是很容易实现的。
3 几种常用隧道技术1、配置隧道配置隧道的建立是手工配置的, 需要隧道两个端点所在网络的管理员协作完成。
但进行通信的站点之间必须有可用的 IPv4 连接, 并且至少要具有一个全球唯一的 IPv4地址。
站点中的每个主机都至少需要支持 IPv6, 路由器需要支持双栈。
所以配置隧道在隧道要经过 NAT设施的情况下不可用。
2、自动隧道自动隧道的建立和拆除是动态的, 隧道终点根据分组目的地址确定。
适用于单个IPv6 主机之间或偶尔交换数据的站点之间。
但自动隧道无法在 NAT域内的隧道工作, 不能从根本上解决 IPv4 地址耗尽问题。
3、隧道代理隧道代理不是一种隧道机制, 而是一种方便构造隧道的机制, 可以简化隧道的配置过程。
适用于单个主机获取 IPv6 连接的情况。
隧道代理在穿过 NAT 设施时可能无法工作, 需要配置隧道服务器、安全的 DNS自动更新、激活机制等,不过这种技术相对繁琐一些。
4、ISATAP 隧道ISATAP 是一种自动隧道技术, 用于连接被 IPv4 隔离的 IPv6 孤岛, 通过将IPv4 地址嵌入到 IPv6 地址当中,并将 IPv6 封包封装在 IPv4 中传送, 从而在主机相互通信时抽出 IPv4 地址建立隧道。
ISATAP 用于内部私有网络中各双栈主机之间进行 IPv6 通信。
ISATAP 不要求隧道端节点必须具有全球惟一的 IPv4 地址, 只要求双栈主机具有 IPv4 单播地址。
因此ISATAP 无法为 IPv6 组播业务提供解决方案。
5、GRE隧道GRE隧道技术可在IPv4的GRE隧道上承载IPv6数据报文。
GRE隧道是两点之间的链路,每条链路都是一条单独的隧道。
隧道把IPv6作为乘客协议,把GRE作为承载协议。
所配置的IPv6地址是在Tunnel接口上配置的,而所配置的IPv4地址是Tunnel源地址和目的地址,也就是隧道的起点和终点。
GRE隧道主要用于两个边缘路由器后中端系统与边缘路由器之间定期安全通信的稳定连接。
采用GRE隧道技术的优点是:通用性好 ,技术成熟 ,易于理解。
因此,通过这几种隧道技术的比较后,本文对GRE隧道技术进行研究。
4 GRE隧道简介GRE(Generic Routing Encapsulation,通用路由封装协议)是由Cisco和Net Smiths 公司于1994年提交给IETF的协议。
GRE是对某些网络层协议(如:IP,IPX,AppleTalk 等)的数据报文进行封装,使这些被封装的数据报文能够在另一个网络层协议(如IP)中传输。
这是GRE最初的定义,最新的GRE封装规范,已经可以封装二层数据帧了,如PPP帧、MPLS等。
在RFC2784中,GRE的定义是“X over Y”,X和Y可以是任意的协议。
GRE真的变成了“通用路由封装”。
GRE协议实际上是一种封装协议,它提供了将一种协议的报文封装在另一种协议报文中的机制,使报文能够在异种网络中传输。
异种报文传输的通道就被称为tunnel(隧道)。
GRE隧道不能配置二层信息,但可以配置IP地址。
GRE利用为隧道指定的实际物理接口完成转发,转发过程如下:(1)所有发往远端VPN的原始报文,首先被发送到隧道源端。
(2)原始报文在隧道源端进行GRE封装,填写隧道建立时确定的隧道源地址和目的地址,然后再通过公共IP网络转发到远端VPN网络。
Tunnel是一个虚拟的点对点的连接,提供了一条通路使封装的数据报文能够在这个通路上传输,并且在一个Tunnel的两端分别对数据报进行封装及解封装。
一个X协议的报文要想穿越IP网络在Tunnel中传输,必须要经过封装与解封装两个过程,下面以图3的网络为例说明这两个过程:图3 封装解封过程5 GRE协议GRE 协议可以实现对 IP、IPX、AppleTalk 等协议数据包的封装,这里我们以使用最为广泛的 IP 协议为例。
使用标准的 GRE隧道技术 ,可在 IPv4 的 GRE隧道上承载IPv6数据报文。
通过 GRE 协议封装过的数据包格式如下图所示:图4 GRE隧道报文C R K S S Recur flags Ver Protocol TypeChecksum(optional) Offset(optional)keySequence Numiber(optional)Routing(optional)图5 GRE包头部结构在 GRE 数据包结构中,前面的 IP 包头部结构是传送数据报头部,用于将其他被封装的数据包封装成 IP 包并在 IP 网络中传输,在本文中称之为外部 IP 报头。
GRE 报头部用来传送与有效负载数据包有关的控制信息,用来在控制 GRE 数据包在隧道中的传输以及 GRE报文加封装和解封装过程,其结构如图 5 所示。
有效载荷数据包是被封装的其他协议的数据包,若被封装的协议为 IP 数据包,则有效载荷数据包就是一个IP 数据包。
6 GRE隧道封装过程不管是哪一种隧道协议,其数据包格式都是由乘客协议、封装协议和运输协议3部分组成的。
6.1乘客协议乘客协议是指用户要传输的数据,也就是被封闭的数据。
为了能对GRE的协议栈能有更好的理解,在这里我们用邮政系统为例。
乘客协议就相当于我们所写的信,信的语言可以是汉语、英语、法语等,但具体要如何选择,这个由写信人和读信人自己负责。
这就对应于多种乘客协议,对乘客协议数据的解释由隧道双方负责。
6.2封装协议封装协议用于建立,保持和拆卸隧道。
GRE就属于封装协议,它把乘客协议报文进行了包装,加上了一个GRE头部,然后再把封闭好的原始报文和GRE善,放在IP报文的数据区中,由IP进行传输。
封装协议我们可以把它当作是信封,也可以是平信、挂号、EMS等,这对应于多种封装协议。
每种封装协议的功能和安全级别都有所不同。
6.3 运输协议运输协议是乘客协议被封装之后应用的运输协议,IP协议就是常见的运输协议,一般使用IP协议对GRE协议进行运输。
运输协议也可以看作是信的运输方式,可以是路运、海运、空运,这就对应于不同的运输协议。
6.4 GRE的封装过程图6 GRE的封装过程图6中的原始数据包,可以是IP报文。