GRE、MGRE 详解-程序员宅基地

技术标签: 网络  运维  服务器  

目录

一、GRE---通用路由封装

1.1 GRE概念

1.2 GRE报文格式

1.3 GRE报文封装与解封装

1.3.1报文封装

1.3.2报文解封装

1.4案例配置

1.5keepalive机制  

二、MGRE---多点通用路由封装

2.1 MGRE基本概念

2.2 NFRP协议

2.2.1NHRP映射表

2.2.2 NHRP动态表项建立步骤

2.3 Normal方式、Shortcut方式

2.3.1 Normal方式(非Shortcut方式)

2.3.2 Shortcut方式

参考连接:


一、GRE---通用路由封装

 三层隧道技术,并且是属于点到点的隧道

1.1 GRE概念

  • 全称:GRE(Generic Routing Encapsulation):通用路由封装协议。
  • 功能:定义了在一种网络层协议上封装另一种协议(或同一种协议)。
  • 举例:对某些网络层协议(如IP和IPX)的数据报进行封装,使这些被封装的数据报能够在另一个网络层协议(如IP)中传输。
  • 所在层次:GRE是VPN(Virtual Private Network)的第三层隧道协议,即在协议层之间采用了一种被称之为Tunnel(隧道)的技术。

 Tunnel是一个虚拟的点对点的连接,在实际中可以看成仅支持点对点连接的虚拟接口,这个接口提供了一条通路使封装的数据报能够在这个通路上传输,并且在一个Tunnel的两端分别对数据报进行封装及解封 。

 报文在GRE隧道中传输包括封装和解封装两个过程。如图所示,如果X协议报文从Ingress PE向Egress PE传输,则封装在Ingress PE上完成,而解封装在Egress PE上进行。封装后的数据报文在网络中传输的路径,称为GRE隧道。

1.2 GRE报文格式

1.3 GRE报文封装与解封装

1.3.1报文封装

  • Router A连接Group 1的接口收到X协议报文后,首先交由X协议处理;
  • X协议检查报文头中的目的地址域来确定如何路由此包;
  • 若报文的目的地址要经过Tunnel才能到达,则设备将此报文发给相应的Tunnel接口;
  • Tunnel接口收到此报文后进行GRE封装,在封装IP报文头后,设备根据此IP包的目的地址及路由表对报文进行转发,从相应的网络接口发送出去。

1.3.2报文解封装

  • Router B从Tunnel接口收到IP报文,检查目的地址;
  • 如果发现目的地是本路由器,则Router B剥掉此报文的IP报头,交给GRE协议处理(进行检验密钥、检查校验和及报文的序列号等);
  • GRE协议完成相应的处理后,剥掉GRE报头,再交由X协议对此数据报进行后续的转发处理。
  •  随着报文的封装、解封装,会导致有效数据传输效率降低, 从而导致设备对GRE数据转发速率降低。

1.4案例配置

在AR1 上的配置,AR3上的配置与之相似 

[r1]interface Tunnel 0/0/0  ---创建一个虚拟隧道接口
[r1-Tunnel0/0/0]ip address 192.168.3.1 24  --配置虚拟接口IP
[r1-Tunnel0/0/0]tunnel-protocol gre   ---定义隧道所使用的协议
[r1-Tunnel0/0/0]source 12.0.0.1   ---定义封装中的源地址信息
[r1-Tunnel0/0/0]destination 23.0.0.3  ---定义封装中的目的地址信息

添加私网路由信息,将其导入到隧道接口  

[r1]ip route-static 192.168.2.0 24 192.168.3.3
[r3]ip route-static 192.168.1.0 24 192.168.3.1

1.5keepalive机制  

keepalive机制是用来检测隧道对端是否可达。
当某端开启该机制后,会周期性发送keepalive报文,对端收到后会回复keepalive报文。当一定次数未收到回复报文,则认为该隧道不可用。(默认3次,每一次发送时间间隔为5秒)

配置命令

[r1-Tunnel0/0/0]keepalive 
[r1-Tunnel0/0/0]keepalive period 10 retry-times 5
	period:设置发送周期
	retry-times:重传次数

二、MGRE---多点通用路由封装

2.1 MGRE基本概念

  • MGRE:点到多点的GRE隧道,它是对传统的点到点GRE隧道的一种扩展。
  • MGRE与GRE只在构建隧道方式上有所差异,但其报文的封装方式和原理与GRE隧道完全一致。
  • 根据建立机制的不同,可将MGRE隧道分为静态隧道和动态隧道两种:

静态隧道:建立在Hub与Spoke之间,无论是否有流量经过,改隧道一直存在。
动态隧道:建立在spoke与spoke之间,当spoke与spoke之间有流量经过时,隧道会自动被创建;当一定周期没有流量经过时,隧道将自动拆除

2.2 NFRP协议

NHRP全称下一条解析协议,自动学习隧道地址和物理地址(公网地址)的对应关系

解决了MGRE总部与使用动态IP的分支建立隧道、分支与分支建立隧道的问题

使用NHRP协议帮助建立MGRE隧道

2.2.1NHRP映射表

将Tunnel口的地址与公网IP地址做映射,将其映射关系保存在NHRP映射表中,实现点到多点建立GRE隧道

NHRP映射表分为静态映射和动态映射

静态表项

手工配置,用于MGRE静态隧道的建立

在Spoke-分部上手工配置Hub的Tunnel地址和公网地址

动态表项

动态表项建立主要依靠主动注册和动态查询两步来实现,用于MGRE动态隧道的建立

2.2.2 NHRP动态表项建立步骤

步骤一:主动注册——解决了总部与分支动态IP建立MGRE隧道的问题

  • Spoke与Hub建立静态表项之后,会发送主动注册消息到Hub
  • Hub然后发送注册应答消息回应,使得Hub得到Spoke的Tunnel地址和公网地址的映射关系(之后Spoke会定时发送主动注册消息来保持与总部的隧道关系)

步骤二:动态查询——解决了分支与分支建立MGRE隧道的问题

使得Spoke之间互相获得对方的公网IP与Tunnel接口的映射关系,解决了分支与分支建立MGRE隧道的问题。

动态查询有两种实现方式,通过Normal方式、Shortcut方式任意一种来就可以实现

2.3 Normal方式、Shortcut方式

2.3.1 Normal方式(非Shortcut方式)

  • 要Spoke之间都有对方Tunnel口的路由(静态、OSPF都可以),通过Tunnel地址为索引查找出Spoke对应的公网IP地址
  • 要注意在使用OSPF时网络类型必须为广播方式,此种方式推荐使用OSPF

spoke_A与spoke_B之间建立动态MGRE隧道过程如下:

  1. A要和B私网之间进行通信时,首先查找自己的路由表,发现下一跳地址为1.1.1.2(Spoke2 Tunnet接口)。然后根据下一跳查找自己的NHRP映射表,发现里面没有对应表项,A会默认将该报文直接发给Hub,同时出发NHRP地址解析请求(NHRP请求中包含A的tunnel接口和公网接口地址,还有需要解析的B的tunnel地址)。
  2. Hub在接收到请求和业务报文后,会通过自己与B之间的隧道将其转发给B。
  3. B接收到A的NHRP请求后,将A的对应关系加载到自己的NHRP映射表中。同时,B也生成NHRP的应答直接返回给A。
  4. A收到B的应答后,将应答信息加载到本地NHRP映射表中,然后A和B之间动态建立MGRE隧道。

隧道建立后,A和B之间的通信会有A直接发给B,不会再经过中间Hub的中转。

2.3.2 Shortcut方式

  • Spoke只需要有去Hub的路由(静态或OSPF),不需要有去其它分支的路由,通过Hub来得到其它Spoke的公网IP与Tunnel的对应关系
  • 要注意在使用OSPF时网络类型必须为P2MP方式,不过此种方式更推荐使用静态路由

spoke_A与spoke_B之间建立动态MGRE隧道过程如下:

  1. A要和B私网之间进行通信时,首先根据目的地址查找自己的NHRP映射表,发现里面没有对应表项;所以,A会接着查找路由表,发现了目标地址对应的下一跳为Hub的地址,于是将此业务报文发送给Hub(通过静态隧道转发)
  2. Hub在收到A的报文后,将报文转发给B。
  3. 如果Hub在 转发过程中,发现接收此报文的接口和发送此报文的Tunnet接口在同一网段,Hub就会向A发送重定向的消息(携带Hub的Tunnel地址和公网地址、以及需要解析的数据报文的目的地址192.168.2.0)Hub通知A发送的NHRP请求(请求B的公网地址),要求A和B之间建立隧道直接通信,后续报文也不需要经过Hub中转。
  4. 4A向Hub发送NHRP请求(包含了A的私网网段和A的公网接口地址,以及B的私网网段),由于shortcut方式下采用的是路由聚合方案,因此A 无法学习到B的tunnel地址,只能通过B的私网地址来获取B的公网接口地址。
  5. B接收到A的NHRP请求后,将A的对应关系(A的私网地址和公网接口地址)加载到自己的NHRP映射表中。同时,B也生成NHRP的应答返回给A。
  6. A收到B的应答后,将应答信息加载到本地NHRP映射表中(B的私网地址和公网接口地址),然后A和B之间动态建立MGRE隧道。
  7. 隧道建立后,A和B之间的通信会有A直接发给B,不会再经过中间Hub的中转。

      以非shortcut方式进行DSVPN组网时,分支站点可以自主发现NHRP映射表中存在关系缺少的现象,从而主动向hub节点申请通讯对端的映射关系。而在shortcut组网环境下,分支站点无法自主发现,需要hub节点通过重定向报文参与到分支之间的隧道建立过程

参考连接:

防火墙——动态智能隧道DSVPN讲解_nhrp协议-程序员宅基地

HCIE笔记-第十天_nhrp-程序员宅基地

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_74227828/article/details/137024321

智能推荐

使用nginx解决浏览器跨域问题_nginx不停的xhr-程序员宅基地

文章浏览阅读1k次。通过使用ajax方法跨域请求是浏览器所不允许的,浏览器出于安全考虑是禁止的。警告信息如下:不过jQuery对跨域问题也有解决方案,使用jsonp的方式解决,方法如下:$.ajax({ async:false, url: 'http://www.mysite.com/demo.do', // 跨域URL ty..._nginx不停的xhr

在 Oracle 中配置 extproc 以访问 ST_Geometry-程序员宅基地

文章浏览阅读2k次。关于在 Oracle 中配置 extproc 以访问 ST_Geometry,也就是我们所说的 使用空间SQL 的方法,官方文档链接如下。http://desktop.arcgis.com/zh-cn/arcmap/latest/manage-data/gdbs-in-oracle/configure-oracle-extproc.htm其实简单总结一下,主要就分为以下几个步骤。..._extproc

Linux C++ gbk转为utf-8_linux c++ gbk->utf8-程序员宅基地

文章浏览阅读1.5w次。linux下没有上面的两个函数,需要使用函数 mbstowcs和wcstombsmbstowcs将多字节编码转换为宽字节编码wcstombs将宽字节编码转换为多字节编码这两个函数,转换过程中受到系统编码类型的影响,需要通过设置来设定转换前和转换后的编码类型。通过函数setlocale进行系统编码的设置。linux下输入命名locale -a查看系统支持的编码_linux c++ gbk->utf8

IMP-00009: 导出文件异常结束-程序员宅基地

文章浏览阅读750次。今天准备从生产库向测试库进行数据导入,结果在imp导入的时候遇到“ IMP-00009:导出文件异常结束” 错误,google一下,发现可能有如下原因导致imp的数据太大,没有写buffer和commit两个数据库字符集不同从低版本exp的dmp文件,向高版本imp导出的dmp文件出错传输dmp文件时,文件损坏解决办法:imp时指定..._imp-00009导出文件异常结束

python程序员需要深入掌握的技能_Python用数据说明程序员需要掌握的技能-程序员宅基地

文章浏览阅读143次。当下是一个大数据的时代,各个行业都离不开数据的支持。因此,网络爬虫就应运而生。网络爬虫当下最为火热的是Python,Python开发爬虫相对简单,而且功能库相当完善,力压众多开发语言。本次教程我们爬取前程无忧的招聘信息来分析Python程序员需要掌握那些编程技术。首先在谷歌浏览器打开前程无忧的首页,按F12打开浏览器的开发者工具。浏览器开发者工具是用于捕捉网站的请求信息,通过分析请求信息可以了解请..._初级python程序员能力要求

Spring @Service生成bean名称的规则(当类的名字是以两个或以上的大写字母开头的话,bean的名字会与类名保持一致)_@service beanname-程序员宅基地

文章浏览阅读7.6k次,点赞2次,收藏6次。@Service标注的bean,类名:ABDemoService查看源码后发现,原来是经过一个特殊处理:当类的名字是以两个或以上的大写字母开头的话,bean的名字会与类名保持一致public class AnnotationBeanNameGenerator implements BeanNameGenerator { private static final String C..._@service beanname

随便推点

二叉树的各种创建方法_二叉树的建立-程序员宅基地

文章浏览阅读6.9w次,点赞73次,收藏463次。1.前序创建#include<stdio.h>#include<string.h>#include<stdlib.h>#include<malloc.h>#include<iostream>#include<stack>#include<queue>using namespace std;typed_二叉树的建立

解决asp.net导出excel时中文文件名乱码_asp.net utf8 导出中文字符乱码-程序员宅基地

文章浏览阅读7.1k次。在Asp.net上使用Excel导出功能,如果文件名出现中文,便会以乱码视之。 解决方法: fileName = HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8);_asp.net utf8 导出中文字符乱码

笔记-编译原理-实验一-词法分析器设计_对pl/0作以下修改扩充。增加单词-程序员宅基地

文章浏览阅读2.1k次,点赞4次,收藏23次。第一次实验 词法分析实验报告设计思想词法分析的主要任务是根据文法的词汇表以及对应约定的编码进行一定的识别,找出文件中所有的合法的单词,并给出一定的信息作为最后的结果,用于后续语法分析程序的使用;本实验针对 PL/0 语言 的文法、词汇表编写一个词法分析程序,对于每个单词根据词汇表输出: (单词种类, 单词的值) 二元对。词汇表:种别编码单词符号助记符0beginb..._对pl/0作以下修改扩充。增加单词

android adb shell 权限,android adb shell权限被拒绝-程序员宅基地

文章浏览阅读773次。我在使用adb.exe时遇到了麻烦.我想使用与bash相同的adb.exe shell提示符,所以我决定更改默认的bash二进制文件(当然二进制文件是交叉编译的,一切都很完美)更改bash二进制文件遵循以下顺序> adb remount> adb push bash / system / bin /> adb shell> cd / system / bin> chm..._adb shell mv 权限

投影仪-相机标定_相机-投影仪标定-程序员宅基地

文章浏览阅读6.8k次,点赞12次,收藏125次。1. 单目相机标定引言相机标定已经研究多年,标定的算法可以分为基于摄影测量的标定和自标定。其中,应用最为广泛的还是张正友标定法。这是一种简单灵活、高鲁棒性、低成本的相机标定算法。仅需要一台相机和一块平面标定板构建相机标定系统,在标定过程中,相机拍摄多个角度下(至少两个角度,推荐10~20个角度)的标定板图像(相机和标定板都可以移动),即可对相机的内外参数进行标定。下面介绍张氏标定法(以下也这么称呼)的原理。原理相机模型和单应矩阵相机标定,就是对相机的内外参数进行计算的过程,从而得到物体到图像的投影_相机-投影仪标定

Wayland架构、渲染、硬件支持-程序员宅基地

文章浏览阅读2.2k次。文章目录Wayland 架构Wayland 渲染Wayland的 硬件支持简 述: 翻译一篇关于和 wayland 有关的技术文章, 其英文标题为Wayland Architecture .Wayland 架构若是想要更好的理解 Wayland 架构及其与 X (X11 or X Window System) 结构;一种很好的方法是将事件从输入设备就开始跟踪, 查看期间所有的屏幕上出现的变化。这就是我们现在对 X 的理解。 内核是从一个输入设备中获取一个事件,并通过 evdev 输入_wayland

推荐文章

热门文章

相关标签