今天是:   
院校首页  |   收藏本站  |   设为首页

校园网中GRE隧道技术的应用

2013-03-15 20:56:28 责任编辑:admin 来源: 浏览次数: [字体: ]

 隧道技术(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字节)。

GRE隧道的应用实例

  应用背景

  高校网络管理人员一般管理着多条ISP线路,必须配置、调整内部网络设备以达到最优化,确保线路的连通性。高校一般用户类型较多,需要为不同的用户分配不同的IP地址段,并使用不同出口。图2所示的高校,有教育网、电信和新联通出口线路。

图2 某高校拓扑

  由于部分使用教育网的用户访问电信、联通、国外速度较慢,利用外地较为廉价的联通线路,在至外地教育网速度较为理想的情况下,构建一条教育网内部之间的点对点GRE 封装隧道,再将用户的http/https请求通过隧道加PBR(策略路由/Policy Based Route)方式将其指向到外地的某台网络设备上,该网络设备同时连接着比本地更廉价的联通线路与教育网,这样一来除了达到降低上网资费的目的,也缓解了本地电信/ 网络出口线路资源不足的问题。

具体配置

  硬件环境为Cisco6509三层交换机,并使用了SUP720-3B双引擎,IOS软件版本为12.2(18)SXF8,目标是新建一个隧道接口,与远端路由器构建起一个虚拟的点对点连接。

  第一步,在特权模式下转入全局配置模式,并建立并启用一个接口号为3 的隧道。

  C6509(config)# interface tunnel 3
  C6509(config)# no shut

  第二步,为这个接口配置IP 地址。

  C6509(config-if)#ip address 10.0.0.26 255.255.255.252

  第三步,设置这个隧道的源IP地址及目的端IP 地址。

  C6509(config-if)#tunnel source 10.1.0.1
  C6509(config-if)#tunnel destination 10.0.0.142

  第四步,为防止中间线路出现不可预见性的故障后,此隧道能自动断开,以便后续设置生效,诸如策略路由在检测到后线路中断状态后,会改走其他默认路由,故需要配置keepalive命令,这里将设置为每60秒进行一次探测,如3次后远端无应答,系统将认为此线路已中断,进而自动关闭隧道接口。Keepalive命令是基于发送icmp(Internet Control Message Protocol/互联网控制消息协议)应答数据包,所以在这段路径中必须允许icmp数据包畅通,如有屏蔽,将无法获取远端网络设备的存活信息,导致端口自动关断。

  C6509(config-if)# keepalive 60 3

  第五步,在另一端路由器上也需要配置相应的隧道接口以及对应的IP地址等。

  C7206 (config)#interface Tunnel1
  C7206 (config-if)#ip address 10.
  0.0.25 255.255.255.252
  C7206 (config-if)#keepalive 60 3
  C7206 (config-if)#tunnel source
  10.0.0.142
  C7 20 6 (conf ig-i f)#tu nne l
  destination 10.1.0.1

  两端完成配置后,可以互相尝试ping对端地址做连通性测试,如能够返回目的地可达的信息,即代表配置的隧道已正常工作。

  两点注意事项

  GRE隧道在很大程度上方便了跨越多个节点的网络与网络之间的连接,使得两个网络之间的应用更通畅,但是因为数据包的再封装,对线路产生一些额外的基本开销,利用率不如之前高,不过这些开销只占到之前的百分之一左右,即如果原先100Mbit的线路,在使用GRE隧道后由于增加包头,所以将会打上一个折扣,大约可以用到98~99Mbit左右带宽,所以基本上可以忽略不计。

  另外,GRE隧道因自身的特性关系,其并不是一条可见的实体物理链路,所以在实际应用当中,会发生一端隧道关闭,但另一端却还是开启,或者隧道的两点之间ISP的网络设备故障中断通信后,但两端隧道依然开启但实际已经无法正常通讯的状态的情况。因此,需要在GRE隧道的接口使用keepalive 命令,可选参数依次为间隔时间、尝试次数,例如:keepalive 60 3,代表每隔60秒钟循环一次探测对端设备是否可达,如果尝试3次失败后,将自动关闭隧道接口。这样,关键业务的通信数据流将因最高优先级的策略路由失效而由第二优先的默认路由生效,改走其他接口,最长中断时间也仅仅在3分钟左右,不会长时间影响正常业务。

(文章来自网络) 

最新图片文章