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. js封装成插件-------Canvas统计图插件编写

    之前就说过,我想写一个canvas画统计图的插件,现在写好了 先说下实现的功能吧: 1.可以通过自定义X轴坐标属性和Y轴坐标属性按比例画出统计图 2.可以选择画折现图还是柱形统计图,或者两者都实现 3 ...

  2. 汇编指令-位置无关码(BL)与绝对位置码(LDR)(2)

    位置无关码,即该段代码无论放在内存的哪个地址,都能正确运行.究其原因,是因为代码里没有使用绝对地址,都是相对地址.  位置相关码,即它的地址与代码处于的位置相关,是绝对地址 BL :带链接分支跳转指令 ...

  3. ospf剩余笔记

    OSPF 流程图: 带宽 开销 10     100 100    19 1000   4 10000 2 区域的划分减少lsdb的大小 有利于网络管理员故障排除 网络故障不会影响到其他区域 邻接关系 ...

  4. 团队作业10——Beta版本事后诸葛亮

    事后诸葛亮分析 1.总结的提纲内容: a. 项目管理之事后诸葛亮会议. 一.设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们的软件要解决的是教师需要 ...

  5. Swing-setOpaque()用法-入门

    先看API: public void setOpaque(boolean isOpaque) 如果为 true,则该组件绘制其边界内的所有像素.否则该组件可能不绘制部分或所有像素,从而允许其底层像素透 ...

  6. 201521123025 <<java程序设计>>第3周学习总结

    1. 本周学习总结 2. 书面作业 Q1.代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; ...

  7. 201521123111《Java程序设计》第11周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 本次PTA作业题集多线程 互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) 1. ...

  8. 201521123004 《Java程序设计》第13周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 协议.IP.域名.端口号 协议:网络中为了进行数据交换(通信)而建立的规则.标准或约定(=语义+语法+规则 ...

  9. 陈敏 Java课设实验报告

    1.团队课程设计博客链接 http://www.cnblogs.com/ohanna/p/7064305.html 2.个人负责模板或任务说明 1.负责完成主界面 2.随机数的产生, 3.数字大小的比 ...

  10. 基于socket.io的实时在线选座系统

    基于socket.io的实时在线选座系统(demo) 前言 前段时间公司做一个关于剧院的项目,遇到了这样一种情况. 在高并发多用户同时选座的情况下,假设A用户进入选座页面,正在选择座位,此时还没有提交 ...