1. 协议简介

    gre(generic routing encapsulation,通用路由封装)协议是对某些网络层协议(如ip 和ipx)的数据报进行封装,使这些被封装的数据报能够在另一个网络层协议(如ip)中传输。gre 是vpn(virtual private network)的第三层隧道协议,在协议层之间采用了一种被称之为tunnel(隧道)的技术。tunnel 是一个虚拟的点对点的连接,在实际中可以看成仅支持点对点连接的虚拟接口,这个接口提供了一条通路使封装的数据报能够在这个通路上传输,并且在一个 tunnel 的两端分别对数据报进行封装及解封装。

    一个报文要想在tunnel中传输,必须要经过加封装与解封装两个过程,下面以图3-1的网络为例说明这两个过程:

    

    (1) 加封装过程

    连接novell group1 的接口收到ipx 数据报后首先交由ipx 协议处理,ipx 协议检查ipx 报头中的目的地址域来确定如何路由此包。若报文的目的地址被发现要路由经过网号为1f 的网络(tunnel 的虚拟网号),则将此报文发给网号为1f 的tunnel端口。tunnel 口收到此包后进行gre 封装,封装完成后交给ip 模块处理,在封装ip 报文头后,根据此包的目的地址及路由表交由相应的网络接口处理。

    (2) 解封装的过程

    解封装过程和加封装的过程相反。从tunnel 接口收到的ip 报文,通过检查目的地址,当发现目的地就是此路由器时,系统剥掉此报文的ip 报头,交给gre 协议模块处理(进行检验密钥、检查校验和及报文的序列号等);gre 协议模块完成相应的处理后,剥掉gre 报头,再交由ipx 协议模块处理,ipx 协议模块象对待一般数据报一样对此数据报进行处理。

    系统收到一个需要封装和路由的数据报,称之为净荷(payload),这个净荷首先被加上gre 封装,成为gre 报文;再被封装在ip 报文中,这样就可完全由ip 层负责此报文的向前传输(forwarded)。人们常把这个负责向前传输ip 协议称为传输协议(delivery protocol 或者transport protocol)。

    封装好的报文的形式如下图所示:

    

    举例来说,一个封装在ip tunnel 中的ipx 传输报文的格式如下:

    

    2. 应用范围

    gre 主要能实现以下几种服务类型:

    (1) 多协议的本地网通过单一协议的骨干网传输

    

    上图中,group1 和group2 是运行novell ipx 协议的本地网,term1 和term2 是运行ip 协议的本地网。通过在routera 和routerb 之间采用gre 协议封装的隧道(tunnel),group1 和group2、team1 和team2 可以互不影响地进行通信。

    (2) 扩大了步跳数受限协议(如ipx)的网络的工作范围

    

    若上图中的两台终端之间的步跳数超过15,它们将无法通信。而通过在网络中使用隧道(tunnel)可以隐藏一部分步跳,从而扩大网络的工作范围。

    (3) 将一些不能连续的子网连接起来,用于组建vpn

    

    运行novell ipx 协议的两个子网group1 和group2 分别在不同的城市,通过使用隧道可以实现跨越广域网的vpn。

    (4) 与ipsec 结合使用

    

    对于诸如路由协议、语音、视频等数据先进行gre 封装,然后再对封装后的报文进行ipsec 的加密处理。

    另外,gre 还支持由用户选择记录tunnel 接口的识别关键字,和对封装的报文进行端到端校验。

    由于gre 收发双方加封装、解封装处理以及由于封装造成的数据量增加等因素的影响,这就导致使用gre 会造成路由器的数据转发效率有一定程度的下降。

GRE配置 
在各项配置中,必须先创建虚拟Tunnel接口,才能在虚拟Tunnel接口上进行其它功能特性的配置。当删除虚拟Tunnel接口后,该接口上的所有配置也将被删除。 

GRE主要配置包括: 

l              创建虚拟Tunnel接口(必选) 

l              设置Tunnel接口报文的封装模式(可选) 

l              指定Tunnel的源端(必选) 

l              指定Tunnel的目的端(必选) 

l              设置Tunnel接口的网络地址(必选) 

l              设置Tunnel两端进行端到端校验(可选) 

l              设置Tunnel接口的识别关键字(可选) 

l              配置通过Tunnel的路由(可选) 

3.2.1  创建虚拟Tunnel接口 
创建虚拟Tunnel接口,从而在该接口上进行GRE其它参数的配置。这些配置在Tunnel两端必须配置。

请在系统视图下进行下列配置。 

表3-1 创建虚拟Tunnel接口 

操作 
命令 

创建虚拟Tunnel接口 
interface tunnel number 

删除虚拟Tunnel接口 
undo interface tunnel number 

缺省情况下,不创建虚拟Tunnel接口。 

number为设定的接口号,范围0~1023,但实际可建的Tunnel数目将受到接口总数及内存状况的限制。 

3.2.2  设置Tunnel接口报文的封装模式 
设置Tunnel接口的封装协议和传输协议。这些配置在Tunnel两端为可选配置,如果配置则必须确保Tunnel两端的封装模式相同。 

请在Tunnel视图下进行下列配置。 

表3-2 设置Tunnel接口报文的封装模式 

操作 
命令 

设置Tunnel接口报文的封装模式 
tunnel-protocol gre 

删除Tunnel接口报文的封装模式 
undo tunnel-protocol 

缺省情况下,Tunnel接口报文的封装模式为 GRE。 

3.2.3  指定Tunnel的源端 
在创建Tunnel接口后,还要指明Tunnel通道的源端地址,即发出GRE报文的实际物理接口地址。Tunnel的源端地址与目的端地址唯一标识了一个通道。这些配置在Tunnel两端必须配置,且两端地址互为源地址和目的地址。 

请在Tunnel接口视图下进行下列配置。 

表3-3 设置Tunnel接口的源端地址或源端接口 

操作 
命令 

设置Tunnel接口的源端地址或源端接口 
source { ip-addr | interface-type interface-num } 

删除Tunnel接口的源端地址或源端接口 
undo source 

&  说明: 

l      不能对两个或两个以上使用同种封装协议的Tunnel接口配置完全相同的源地址和目的地址。 

l      使用命令source设置的是实际的物理接口地址或实际物理接口,另外还需要设置Tunnel接口的网络地址。在Tunnel接口视图下通过命令ip address可完成这一设置。 

3.2.4  指定Tunnel的目的端 
在创建Tunnel接口后,还要指明Tunnel通道的目的端地址,即接收GRE报文的实际物理接口的IP地址。Tunnel的源端地址与目的端地址唯一标识了一个通道。这些配置在Tunnel两端必须配置,且两端地址互为源地址和目的地址。 

请在Tunnel接口视图下进行下列配置。 

表3-4 设置Tunnel接口的目的端地址 

操作 
命令 

设置Tunnel接口的目的端地址 
destination ip-addr 

删除Tunnel接口的目的端地址 
undo destination 

&  说明: 

使用命令destination设置的是实际的物理接口的IP地址,为支持动态路由协议,还需要设置tunnel接口的网络地址。 

3.2.5  设置Tunnel接口的网络地址 
Tunnel接口的网络地址可以不是申请得到的网络地址。用户设置通道两端的网络地址应该位于同一网段上。这些配置在Tunnel两端都必须配置,并且确保地址在同一网段。 

请在Tunnel接口视图下进行下列设置。 

表3-5 设置Tunnel接口的网络地址 

操作 
命令 

设置Tunnel接口的IP地址 
ip address ip-addr mask 

删除Tunnel接口的IP地址 
undo ip address 

缺省情况下,未设置Tunnel接口的网络地址。 

3.2.6  设置Tunnel两端进行端到端校验 
在RFC1701中规定:若GRE报文头中的Checksum位置位,则校验和有效。发送方将根据GRE头及payload信息计算校验和,并将 包含校验和的报文发送给对端。接收方对接收到的报文计算校验和,并与报文中的校验和比较,如果一致则对报文进一步处理,否则丢弃。 

隧道两端可以根据实际应用需要,配置校验和或禁止校验和。如果本端配置了校验和而对端没有配置,则本端将不会对接收到的报文进行校验和检查,但对 发送的报文计算校验和;相反,如果本端没有配置校验和而对端已配置,则本端将对从对端发来的报文进行校验和检查,但对发送的报文不计算校验和。 

请在Tunnel接口视图下进行下列配置。 

表3-6 设置Tunnel两端进行端到端校验 

操作 
命令 

设置Tunnel两端进行端到端校验 
gre checksum 

禁止Tunnel两端进行端到端校验 
undo gre checksum 

缺省情况下,禁止Tunnel两端进行端到端校验。 

3.2.7  设置Tunnel接口的识别关键字 
在RFC1701中规定:若GRE报文头中的KEY字段置位,则收发双方将进行通道识别关键字的验证,只有Tunnel两端设置的识别关键字完全一致时才能通过验证,否则将报文丢弃。 

请在Tunnel接口视图下进行配置。 

表3-7 设置Tunnel接口的识别关键字 

操作 
命令 

设置Tunnel接口的识别关键字 
gre key key-number 

删除Tunnel接口的识别关键字 
undo gre key 

key-number可取值0~4294967295之间的整数。 

缺省情况下,Tunnel不使用KEY。 

3.2.8  配置通过Tunnel的路由 
在源端路由器和目的端路由器上都必须存在经过Tunnel转发的路由,这样需要进行GRE封装的报文才能正确转发。可以配置静态路由,也可以配置动态路由。 

1. 静态路由配置 
可以手工配置一条到达目的地址(不是Tunnel的目的端地址,而是未进行GRE封装的报文的目的地址)的路由,下一跳是对端Tunnel接口的 地址。在Tunnel的两端都要进行此项配置。配置的详细情况请参见本手册的"静态路由配置"章节,配置命令的详细解释请参见相应的命令手册。 

2. 动态路由配置 
如果路由器上运行了动态路由协议,只需在Tunnel接口上和与私网相连的路由器接口上使能该动态路由协议即可,在Tunnel的两端都必须进行此项配置。配置的详细情况请参见本手册的各个动态路由协议配置章节,配置命令的详细解释请参见相应的命令手册。 

3.2.9  配置keepalive功能 
请在Tunnel接口视图下进行配置。 

表3-8 配置keepalive功能 

操作 
命令 

使能GRE的 keepalive功能 
keepalive interval times 

关闭GRE的 keepalive功能 
undo keepalive [ seconds ] [ times ] 

缺省情况下,不启用GRE的 keepalive功能。 

seconds缺省为10秒。times缺省为3次。

GRE 协议简介的更多相关文章

  1. Fiddler--一、HTTP协议简介

    在学习Fiddler之前,最好先学习一下HTTP协议. HTTP协议简介 什么是HTTP协议 超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端 ...

  2. MODBUS-RTU通讯协议简介

    MODBUS-RTU通讯协议简介   什么是MODBUS? MODBUS 是MODICON公司最先倡导的一种软的通讯规约,经过大多数公司 的实际应用,逐渐被认可,成为一种标准的通讯规约,只要按照这种规 ...

  3. JavaWeb:Web与HTTP协议简介

    JavaWeb:Web与HTTP协议简介 Web的概念 什么是Web: Web是网络上使用最广泛的分布式应用架构. 旨在共享分布在网络上的各个Web服务器中的所有互相连接的信息. 三个特征: 用HTM ...

  4. CC2540开发板学习笔记(九)—— BLE协议简介

    一.BLE协议简介 1.协议是什么? 协议是一系列的通信标准,双方需要共同按照这进行正常数据 协议是一系列的通信标准,双方需要共同按照这进行正常数据发射和 接收.协议栈是的具体实现形式,通俗点来理解就 ...

  5. GRE协议学习与练习

    通用路由封装(英语:Generic Routing Encapsulation,缩写为GRE),一种隧道协议,可以在虚拟点对点链路中封装多种网络层协议.由思科系统开发 以下是GRE协议的简单练习 网络 ...

  6. HTTP 协议简介

    HTTP 协议简介 博客分类: acl开发--HTTP协议篇 网络协议http协议  一.TCP/IP 协议介绍 在介绍 HTTP 协议之前,先简单说一下TCP/IP协议的相关内容.TCP/IP协议是 ...

  7. OAUTH协议简介

    OAUTH协议简介 原文来自:http://blog.csdn.net/hereweare2009/article/details/3968582 分类: Open API2009-03-08 12: ...

  8. HTTP协议简介详解 HTTP协议发展 原理 请求方法 响应状态码 请求头 请求首部 java模拟浏览器客户端服务端

    协议简介 协议,自然语言里面就是契约,也是双方或者多方经过协商达成的一致意见; 契约也即类似于合同,自然有甲方123...,乙方123...,哪些能做,哪些不能做; 通信协议,也即是双方通过网络通信必 ...

  9. Tsung MQTT协议简介及MQTT xml文档配置介绍

    MQTT协议简介及MQTT xml文档配置介绍 by:授客 QQ:1033553122 1. MQTT协议介绍 MQTT(Message Queuing Telemetry Transport,消息队 ...

随机推荐

  1. WeTest+微信:小程序云端测试系统上线

    日前,微信新增小程序测试系统,可便于开发者检测小程序缺陷,评估小程序产品质量.在小程序发布之前,开发者可将小程序代码提交到测试系统,在不同型号的手机真机上运行,执行完毕后自动生成测试报告.小程序云端测 ...

  2. ant安装以及环境变量配置、验证

    (一)安装 ant 下载地址: http://ant.apache.org/     根据自己电脑下载对应版本 下载完成以后,可自行解压到自己常用的盘中,但是要记住解压到哪里了,以便后续的环境变量配置 ...

  3. css编写注意事项(不定时更新)

    CSS的编写是需要积累的,而一个好的css编写习惯对我们将来的成长是非常有利的,我会把我平时看到的或者遇到的会不定时的更新到这里,不时翻一下,但求有所进步. 如果各位看官也有看法和建议,评论下,我也会 ...

  4. centos6/7通用查看系统版本

    查看centos6/7系统版本   要写一个centos系统的初始化脚本,但是centos6和centos7版本有很多命令都不相同,所以为了让脚本在两个版本之间都可以使用,就需要对centos系统版本 ...

  5. pip install python 如何快速安装模块

    之前python安装模块要在网络上下载,从python2.7.9之后,以及python3,python就自带pip 这个命令,能够快速的安装模块 1,  首先打开python的主文件夹 2.在主文件夹 ...

  6. MPLS LDP随堂笔记1

    LDP 的使用原因(对于不同协议来说) LDP的四大功能 发现邻居 hello 5s 15s 224.0.0.2 发现邻居关系 R1 UDP 646端口 R2 UDP 646端口 此时形成邻居 建立邻 ...

  7. Java Collections 源码分析

    Java Collections API源码分析 侯捷老师剖析了不少Framework,如MFC,STL等.侯老师有句名言: 源码面前,了无秘密 这句话还在知乎引起广泛讨论. 我对教授程序设计的一点想 ...

  8. 201521123001《Java程序设计》第7周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 参考资料: XMind 答: 大多数情况下,从性能上来说ArrayList最好,但是当集合内的元素需要频繁插入.删除时Lin ...

  9. 201521123114 《Java程序设计》第7周学习总结

    1. 本章学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 2. 书面作业 Q1. ArrayList代码分析 1.1 解释ArrayList的contains源代码 public b ...

  10. 201521123013 《Java程序设计》第6周学习总结

    1. 本章学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 2. 书面作业 Q1.clone方法 1.1 Object ...