GRE/MGRE详解

2024-04-13 15:44
文章标签 详解 mgre gre

本文主要是介绍GRE/MGRE详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

GRE

GRE:通用路由封装,是标准的三层隧道技术,是一种点对点的隧道技术;

该技术可以实现不同的网络之间安全的访问;

如上:可以使用该技术搭建一条专线,实现公司A与分公司A1之间相互通信;使用双IP头部;

通常在设备边界上做VPN;

在创建隧道时要确保隧道的两端能够通信;隧道的两端IP地址可以在同一个网段,也可以在不同网段;

当在不同网段时,只能通过静态路由的方式使两个私网通信;当在同一个网段时可以通过动态路由的方式来使两个私网通信;

GRE的协议号是47;

配置:
AR3:
[r1]interface Tunnel 0/0/0					----创建隧道
[r1-Tunnel0/0/0]ip address 10.1.1.1 24		----给隧道配置IP
[r1-Tunnel0/0/0]tunnel-protocol ?			----选择隧道的模式:GRE模式gre        Generic Routing Encapsulationipsec      IPSEC Encapsulationipv4-ipv6  IP over IPv6 encapsulationipv6-ipv4  IPv6 over IP encapsulationmpls       MPLS Encapsulationnone       Null Encapsulation
[r1-Tunnel0/0/0]tunnel-protocol gre 
[r1-Tunnel0/0/0]source 12.1.1.1			 -----隧道的源IP(就是本端边界设备接口的IP)
[r1-Tunnel0/0/0]destination 23.1.1.2	 -----隧道的目标IP(就是对端边界设备接口的IP)标识一条唯一的隧道是通过源IP和目标IP;AR5:
[r3]interface Tunnel 0/0/1
[r3-Tunnel0/0/1]ip address 10.1.1.2 24
[r3-Tunnel0/0/1]tunnel-protocol gre 
[r3-Tunnel0/0/1]source 23.1.1.2 
[r3-Tunnel0/0/1]destination12.1.1.1

在思科中,确定一条唯一的隧道是通过源IP,目标IP,keyID来确定;也就是说在两端可以创建很多条隧道;

GRE数据包:

该数据包使用了双IP头部,Type表示的是上层使用了什么协议:0800表示使用的是IPV4;

GRE的缺点:GRE是点对点的,每一条隧道都要由唯一 的源和目标确定,当我们需要创建的隧道的数量过多时就会不合适;

MGRE

MGRE:多点通用路由封装协议;

在MGRE中,我们只定义源,不定义目标;但是我们在使用的时候又必须知道目标,所以在MGRE中我们要借助:下一跳可达协议(NHRP);

NHRP协议:

NHRP-----下一跳可达协议;该协议类似于ARP协议;在所有的隧道口都要运行NHRP协议;

指定好NHRP服务器后,所有的客户端都会配置谁是NHRP服务器;

之后所有的客户端都会将隧道接口的IP,物理IP信息都会封装在NHRP注册包里面发送给NHRP服务器进行注册,NHRP服务器是手工指定的;

所有的MGRE接口将自己的MGRE接口IP地址和对应隧道接口地址信息发送给NHS进行注册,NHS上存在所有接入MGRE的接口映射关系。其他MGRE接口之间彼此通信时向NHS进行请求,形成隧道的目标地址。

MGRE配置:

配置:
NHRP服务器端:
[r1]interface Tunnel 0/0/0
[r1-Tunnel0/0/0]tunnel-protocol gre p2mp  -----配置GRE的模式为点到多点
[r1-Tunnel0/0/0]ip address 10.1.1.1 24
[r1-Tunnel0/0/0]source 12.1.1.1 		  -----配置源IP
[r1-Tunnel0/0/0]nhrp network-id 100		  -----配置NHRP的ID,唯一标识一个NHRP服务器,在客户端中也要标识;客户端:
[r3]interface Tunnel 0/0/0
[r3-Tunnel0/0/0]tunnel-protocol gre p2mp ------配置GRE的模式为点到多点
[r3-Tunnel0/0/0]ip a 10.1.1.2 24
[r3-Tunnel0/0/0]source 23.1.1.1          ------配置源IP
[r3-Tunnel0/0/0]nhrp network-id 100		 ------配置NHRP的ID,唯一标识,具有全局意义
[r3-Tunnel0/0/0]nhrp entry 10.1.1.1 12.1.1.1 register -----表示向NHRP服务器进行注册,10.1.1.1代表的是NHRP服务端的隧道接口地址,12.1.1.1代表的是NHRP服务器真实的物理接口地址;

[r1]display nhrp peer all ----------查看NHRP所有的对等体的信息;

在将隧道建立好了之后,我们在A,A1,A2上启用RIP,看看对端是否能够学习到路由;当运行RIP后发现:只有AR1能够学习到对端的路由,而AR3,AR4都无法学习到路由;因为这种结构是hub-spoke结构,A1,A2在发送路由时源地址是自己的隧道接口地址和物理地址,目标地址是224.0.0.9(组播地址),由于AR1是中心站点所以只会给AR1发送;这种网络类型默认是非广播的多路访问(NBMA);所以,我们要在NHRP服务器(AR1)上开启伪广播功能;伪广播:将动态学习到的路由向NHRP中的各个站点分别发送;[r1-Tunnel0/0/0]nhrp entry multicast dynamic   ------开启伪广播功能
[r1-Tunnel0/0/0]undo rip split-horizon			-----关闭水平分割

当我们开启伪广播功能之后,我们发现此时还是只能学习到一条路由;出现该现象的是RIP的水平分割,我们只需要在中心站点关闭水平分割功能;

当关闭之后,就可以发现各个站点可以学习到所有路由;

这篇关于GRE/MGRE详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/900548

相关文章

Java注解之超越Javadoc的元数据利器详解

《Java注解之超越Javadoc的元数据利器详解》本文将深入探讨Java注解的定义、类型、内置注解、自定义注解、保留策略、实际应用场景及最佳实践,无论是初学者还是资深开发者,都能通过本文了解如何利用... 目录什么是注解?注解的类型内置注编程解自定义注解注解的保留策略实际用例最佳实践总结在 Java 编程

MySQL数据库约束深入详解

《MySQL数据库约束深入详解》:本文主要介绍MySQL数据库约束,在MySQL数据库中,约束是用来限制进入表中的数据类型的一种技术,通过使用约束,可以确保数据的准确性、完整性和可靠性,需要的朋友... 目录一、数据库约束的概念二、约束类型三、NOT NULL 非空约束四、DEFAULT 默认值约束五、UN

Python使用Matplotlib绘制3D曲面图详解

《Python使用Matplotlib绘制3D曲面图详解》:本文主要介绍Python使用Matplotlib绘制3D曲面图,在Python中,使用Matplotlib库绘制3D曲面图可以通过mpl... 目录准备工作绘制简单的 3D 曲面图绘制 3D 曲面图添加线框和透明度控制图形视角Matplotlib

MySQL中的分组和多表连接详解

《MySQL中的分组和多表连接详解》:本文主要介绍MySQL中的分组和多表连接的相关操作,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录mysql中的分组和多表连接一、MySQL的分组(group javascriptby )二、多表连接(表连接会产生大量的数据垃圾)MySQL中的

Java 实用工具类Spring 的 AnnotationUtils详解

《Java实用工具类Spring的AnnotationUtils详解》Spring框架提供了一个强大的注解工具类org.springframework.core.annotation.Annot... 目录前言一、AnnotationUtils 的常用方法二、常见应用场景三、与 JDK 原生注解 API 的

redis中使用lua脚本的原理与基本使用详解

《redis中使用lua脚本的原理与基本使用详解》在Redis中使用Lua脚本可以实现原子性操作、减少网络开销以及提高执行效率,下面小编就来和大家详细介绍一下在redis中使用lua脚本的原理... 目录Redis 执行 Lua 脚本的原理基本使用方法使用EVAL命令执行 Lua 脚本使用EVALSHA命令

SpringBoot3.4配置校验新特性的用法详解

《SpringBoot3.4配置校验新特性的用法详解》SpringBoot3.4对配置校验支持进行了全面升级,这篇文章为大家详细介绍了一下它们的具体使用,文中的示例代码讲解详细,感兴趣的小伙伴可以参考... 目录基本用法示例定义配置类配置 application.yml注入使用嵌套对象与集合元素深度校验开发

Python中的Walrus运算符分析示例详解

《Python中的Walrus运算符分析示例详解》Python中的Walrus运算符(:=)是Python3.8引入的一个新特性,允许在表达式中同时赋值和返回值,它的核心作用是减少重复计算,提升代码简... 目录1. 在循环中避免重复计算2. 在条件判断中同时赋值变量3. 在列表推导式或字典推导式中简化逻辑

Java Stream流使用案例深入详解

《JavaStream流使用案例深入详解》:本文主要介绍JavaStream流使用案例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录前言1. Lambda1.1 语法1.2 没参数只有一条语句或者多条语句1.3 一个参数只有一条语句或者多

SpringBoot整合mybatisPlus实现批量插入并获取ID详解

《SpringBoot整合mybatisPlus实现批量插入并获取ID详解》这篇文章主要为大家详细介绍了SpringBoot如何整合mybatisPlus实现批量插入并获取ID,文中的示例代码讲解详细... 目录【1】saveBATch(一万条数据总耗时:2478ms)【2】集合方式foreach(一万条数