隧道技术(Tunneling)是一种通过使用互联网络的基础设施在网络之间传递数据的方式。使用隧道传递的数据(或负载)可以是不同协议的数据帧或包。隧道协议将其它协议的数据帧或包重新封装然后通过隧道发送。新的帧头提供路由信息,以便通过互联网传递被封装的负载数据。与VPN类似,隧道也可以直接将两个处于互联网上不同物理位置的网络,通过路由器、服务器或三层(IP网络层)网络设备间接连接后,使用户感觉到处在同一个内部网络之中,并无需使用类似VPN的客户端。
目前使用较多隧道技术包括GRE(通用路由协议封装)隧道、IPv4 over IPv6隧道、IPv6 over IPv4隧道等。GRE隧道是两台或两台以上跨越多个网络的设备之间将所支持的各种数据包封装在一个普通IP数据包中进行传输;IPv4 over IPv6隧道是将IPv4的数据包封装在IPv6数据包中互相通讯,目的是为了解决某些特殊地点纯IPv6单链路情况下的IPv4通讯或利用IPv6目前较为空闲的带宽承载日益紧张的IPv4流量问题;IPv6 over IPv4是将IPv6的数据包封装在IPv4数据包中进行传输,主要是为了解决因两个节点中间设备过于陈旧而不支持IPv6协议产生的信息孤岛问题。
GRE隧道技术剖析
GRE(通用路由协议封装)是隧道中应用范围较广,也是最常见的一种隧道,由Cisco和Net-smiths等公司于1994年提交给IETF,标号为RFC1701和RFC1702。目前绝大部分厂商的网络设备均支持GRE隧道协议。
GRE规定了如何用一种网络协议去封装另一种网络协议的方法。GRE的隧道由两端的源IP地址和目的IP地址来定义,允许用户使用IP包封装IP、IPX、等各种协议数据包,并支持全部的路由协议(如EIGRP、OSPF等)。GRE协议数据包的格式是由乘客协议、封装协议和运输协议三部分组成的:
1) 乘客协议:乘客协议是指用户要传输的数据,也就是被封装的数据。这是用户真正要传输的数据,它们可以是IP、IPX等。如果是IP 协议,其中包含的地址有可能是保留IP 地址,例如企业内部的私有保留IP 地址。
2) 封装协议:封装协议用于建立、保持和拆卸隧道。它把乘客协议报文进行了“包装”,加上了一个GRE 头部,然后再把封装好的原始报文和GRE 头部,放在IP 报文的“数据区”中,由IP 进行传输。
3) 运输协议:运输协议是乘客协议被封装之后应用的运输协议。IP 协议就是最常见的运输协议,一般使用IP 协议对GRE协议报文进行运输。
通过GRE,用户可以使用保留地址进行网络互连,或者对公网隐藏企业网的IP地址。虽然GRE并不支持加密,但是可以配合IPsec,或者通过tunnel key命令(CiscoIOS)在隧道的两头各设置一个相同的明文密钥,密钥匹配后设备才能通讯。
图1 GRE数据包结构
在使用GRE隧道后,发送出去的IP数据包封装会产生如图1所示的变化:
由于GRE封装后,数据包容量增加,因此可能会遇到GRE的数据包大于网络接口所设定的数据包最大传输单元(MTU)的情况,此时,无需调整每一个所经过的网络设备MTU值,只需要将两端网络设备的TCP分段值设置为1436字节(GRE数据包头24字节+IP包头20字节+TCP包头20字节+分段后的TCP载荷1436字节=1500字节)。
特别声明:本站注明稿件来源为其他媒体的文/图等稿件均为转载稿,本站转载出于非商业性的教育和科研之目的,并不意味着赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。