分享

GRE

 昵称2409069 2010-07-27

 

 

 

 

 

 

  

                                  目 


第1章 GRE简介

1.1 GRE概述

GREGeneric Routing Encapsulation(通用路由封装)的简称。简单而言,GRE就是对某些网络层协议(如:IPV4IPV6IPX等)的数据报进行封装,使这些被封装的数据报能够在另一个网络层协议(如IPV4IPV6等)中传输。

GRE通过创建一条点到点的tunnel来完成二次封装数据的转发。

企业私有网络的IP地址通常是自己规划,无法和外部互联网进行正确的路由。而在企业网络的出口,通常会有一个互联网唯一的IP地址,这个地址可以在互联网中唯一识别出来。GRE就是对目的IP地址和源地址为企业内部地址的数据报文进行封装,加上一个IP头,其目的地址为远端机构互联网出口的IP地址,源地址为本地互联网出口的IP地址,从而通过互联网进行正确的传输,实现最简单的VPN技术。

实现VPN的应用只是GRE的功能之一,GRE的隧道功能还能为IPV4IPV6的过渡发挥积极的作用。

1.2 GRE报文格式

GRE的报文由传递协议和负载协议构成,如1.2?1所示。

1.2?1  GRE报文格式

Delivery Header:传递协议的协议头在传递协议为IPv4的情况下,这里占用20个字节并且将协议号置为47,表明这个报文是GRE报文。

GRE HeaderGRE协议头占用8个字节,其中包含了2个字节的Protocol Type,用于表明负载协议是什么类型,当负载协议为IP时需要将这两个字节数据标注为0x800

Payload:负载协议的数据包。

1.3 GRE工作原理

1.3.1 隧道源端的加封装过程

当路由器发送或转发一个IP数据报时,如果IP数据报经路由查找要从GRE隧道接口发出,就需要进行GRE封装。在封装时需要根据该GRE隧道接口的选项设置情况进行GRE报头选项字段的处理,最后根据封装后的目的地址查找路由把数据报送到输出的网络接口,实现数据报的转发。

目前GER隧道的MTU1476字节,如果要发送的数据报长度大于接口的MTU,还需要进行分片操作,然后再经过GRE封装后发出,即先分片后封装。当该IP数据报头DF位置1表明该数据包进行了分片,当接口接收到的报文大于自己的MTU时,则回送ICMP消息表明自己需要分片接收数据包(type3code4,附带该接口的MTU)。

1.3.2 隧道对端的解封装过程

当路由器收到一个IP数据报时,如果其目的地址是本地且其报头的协议字段为47,说明该数据报是经过GRE封装的,需要在本路由器上进行解析。

GRE报文经过合法性检查后,需要根据GRE报文的源地址和目的地址映射到本地保存的GRE隧道编号,若对应的GRE隧道不存在,则丢弃该数据报。

接着进行GRE选项的处理,目前我司路由器仅支持key选项而忽略其他选项。若GRE报头中flag字段的key标记与本路由器对应隧道的key标记不同,或者都置了key标记而key值不同,则丢弃该数据报。

把去除GRE封装的IP数据报头的TTL1,然后进行进一步的处理。通过查找路由判断数据报是要本地投递还是转发。TTL的处理方法表明,藏在外网IP后的内网IP不会在隧道转发的过程中将TTL递减。

注意:

解封装时,如果内部IP头的地址是原封装设备,则会造成路由环路。要避免这种情况的发生。

1.4 设备版本信息

设备类型

测试版本

支持的版本

硬件配置

ZXR10 GER

GER08 V2.6.03b42

所有版本

 

ZXR10 GAR/ZSR系列

GAR V2.8.01.A30.P9

所有版本

 

 


第2章 配置GRE

2.1 GRE配置思路

GRE的主要配置步骤包括:

1   创建隧道,设置隧道模式为GRE

2   配置隧道源地址和目的地址;

3  配置私网路由的出口为tunnel接口或者将下一跳设置为对端的tunnel ip

此外可根据需要启用密钥、tunnel sequence选项、tunnel checksum选项等。

2.2 GRE配置命令

下面介绍GRE的主要配置命令。

1   创建隧道,并进入该隧道接口配置模式

命令格式

命令模式

命令功能

interface <tunnel-number>

全局

创建一个tunnel隧道接口

<tunnel-number>的格式为tunnel+<id>,如tunnel1id取值范围在1~64

2   配置隧道为GRE隧道

命令格式

命令模式

命令功能

tunnel mode gre ip

接口

配置隧道为GRE隧道

3   为所在隧道配置一个隧道源地址

命令格式

命令模式

命令功能

tunnel source {ipv4 | ipv6} <ip-address>

接口

为所在隧道配置一个隧道源地址

4   为所在隧道配置一个隧道目的地址

命令格式

命令模式

命令功能

tunnel destination {ipv4 | ipv6} <ip-address>

接口

为所在隧道配置一个隧道目的地址

5   为隧道配置密钥

命令格式

命令模式

命令功能

tunnel key <key>

接口

为隧道配置密钥

隧道两端的密钥必须相同。

6   配置本道启用tunnel sequence选项

命令格式

命令模式

命令功能

tunnel sequence

接口

配置本GRE道启用tunnel sequence选项

7   配置本隧道启用tunnel checksum选项

命令格式

命令模式

命令功能

tunnel checksum

接口

配置本GRE隧道启用tunnel checksum选项

 

 


第3章 GRE配置实例

3.1 网络拓扑

3.1?1所示,某公司为了连接两个部门之间的网络,启用了GRE构建隧道。规划中路由器的loopback作为tunnel sourcetunnel destination,并设置两个私网地址作为tunnel地址,打通100.100.100.0/24200.200.200.0/24的隧道通路。

3.1?1  GRE典型配置组网

3.2 配置步骤

GERfei_1/1连接的是100.100.100.0/24的内部网络,fei_1/2连接到运营商提供的公网接口,接口IP地址为1.1.1.1/30GARfei_1/1连接的是200.200.200.0/24的内部网络,fei_2/1连接到运营商提供的公网接口,接口IP地址为2.2.2.1/30

GER配置:

GER(config)#int loopback1

GER(config-if)#ip address 10.10.10.10 255.255.255.255

GER(config)#int fei_1/1

GER(config-if)#ip address 100.100.100.1 255.255.255.0

GER(config)#int fei_1/2

GER(config-if)#ip address 1.1.1.1 255.255.255.252

GER(config)#int tunnel1

GER(config-if)#ip address 172.16.1.1 255.255.255.252

GER(config-if)#tunnel mode gre ip

GER(config-if)#tunnel source 10.10.10.10

GER(config-if)#tunnel destination 20.20.20.20

GER(config)#ip route 0.0.0.0 0.0.0.0 1.1.1.2

GER(config)#ip route 200.200.200.0 255.255.255.0 tunnel1

GAR配置:

GAR(config)#int loopback1

GAR(config-if)#ip address 20.20.20.20 255.255.255.255

GAR(config)#int fei_1/1

GAR(config-if)#ip address 200.200.200.1 255.255.255.0

GAR(config)#int fei_2/1

GAR(config-if)#ip address 2.2.2.1 255.255.255.252

GAR(config)#int tunnel1

GAR(config-if)#ip address 172.16.1.1 255.255.255.252

GAR(config-if)#tunnel mode gre ip

GAR(config-if)#tunnel source 20.20.20.20

GAR(config-if)#tunnel destination 10.10.10.10

GAR(config)#ip route 0.0.0.0 0.0.0.0 2.2.2.2

GAR(config)#ip route 100.100.100.0 255.255.255.0 tunnel1

配置要点:要使tunnel接口协议uptunnel sourcetunnel destination之间必须路由可达。建议tunnel sourcetunnel destinationIP地址取用设备的loopback,这样可以防止物理接口异常导致隧道故障,并充分利用公网上的冗余路由,保证GRE隧道的稳定性。Tunnel接口的IP地址可以用ip unnumber配置,但是推荐配置私有IP地址使配置更加清晰。

 

 


第4章 GRE维护与诊断

使用以下命令可以检查Tunnel接口状态:

命令格式

命令模式

命令功能

show ip interface [brief] <interface-name>

除用户模式外所有模式

显示接口状态

GRE出现故障时,可以通过以下步骤确认问题。

1   查看tunnel接口是否协议UP

GER(config)#show ip interface brief

2   检查tunnel sourcetunnel destination之间是否路由可达

GER(config)#ping 20.20.20.20 source 10.10.10.10

3   检查tunnel接口是否能够相互ping

GER(config)#ping 172.16.1.2 source 172.16.1.1

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多