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。

GRE(Generic Routing Encapsulation)通用路由封装:是对某些网络层协议(如IP和IPX)的报文进行封装,使这些被封装的报文能够在另一网络层协议(如IP)中传输。GRE可以作为第三层隧道协议,在协议层之间采用隧道(Tunnel)技术。Tunnel是一个虚拟的点对点的连接,可以看成仅支持点对点连接的虚拟接口,这个接口提供了一条通路,使封装的数据报能够在这个通路上传输,并在一个Tunnel的两端分别对数据报进行封装及解封装。 
  我们使用两台AR28进行互联,并在之间创建GRE最简单的隧道。互联拓扑图如下: 
  AR28-31<++++++++++>AR28-31 
  【AR28-1】 
  # 
  sysname AR28-1 
  # 
  interface Ethernet2/0 
  ip address 202.101.1.2 255.255.255.0 /公网IP/ 
  # 
  interface Ethernet2/1 
  ip address 192.168.1.1 255.255.255.0 //内部私网IP 
  # 
  interface Tunnel0 //创建GRE隧道 tunnel 0 
  ip address 192.168.0.1 255.255.255.252 // tunnel IP和对方tunnel IP在同一网段 
  source 202.101.1.2 //GRE隧道源地址 
  destination 202.101.2.2 //GRE隧道目的地址 
  # 
  ip route-static 0.0.0.0 0.0.0.0 202.101.1.1 preference 60 
  //到公网的默认路由 
  ip route-static 192.168.2.0 255.255.255.0 Tunnel 0 preference 60 
  //通过tunnel访问对方私网的路由 
  # 
  【AR28-2】 
  # 
  sysname AR28-2 
  # 
  interface Ethernet2/0 
  ip address 202.101.2.2 255.255.255.0 //内部私网IP 
  # 
  interface Tunnel0 //创建tunnel 0 
  ip address 192.168.0.2 255.255.255.252 //tunnel IP和对方tunnel IP在同一网段 
  source 202.101.2.2 /源地址 
  destination 202.101.1.2 //目的地址 
  # 
  ip route-static 0.0.0.0 0.0.0.0 202.101.2.1 preference 60 
  //到公网的默认路由 
  ip route-static 192.168.1.0 255.255.255.0 Tunnel 0 preference 60 
  //通过tunnel访问对方私网的路由 
  
  GRE 
  GRE(Generic Routing Encapsulation)通用路由封装:是对某些网络层协议(如IP和IPX)的报文进行封装,使这些被封装的报文能够在另一网络层协议(如IP)中传输。GRE可以作为第三层隧道协议,在协议层之间采用隧道(Tunnel)技术。Tunnel是一个虚拟的点对点的连接,可以看成仅支持点对点连接的虚拟接口,这个接口提供了一条通路,使封装的数据报能够在这个通路上传输,并在一个Tunnel的两端分别对数据报进行封装及解封装。 
  我们使用两台AR28进行互联,并在之间创建GRE最简单的隧道。互联拓扑图如下: 
  AR28-31<++++++++++>AR28-31 
  【AR28-1】 
  # 
  sysname AR28-1 
  # 
  interface Ethernet2/0 
  ip address 202.101.1.2 255.255.255.0 //公网IP 
  # 
  interface Ethernet2/1 
  ip address 192.168.1.1 255.255.255.0 //内部私网IP 
  # 
  interface Tunnel0 //创建GRE隧道 tunnel 0 
  ip address 192.168.0.1 255.255.255.252 // tunnel IP和对方tunnel IP在同一网段 
  source 202.101.1.2 //GRE隧道源地址 
  destination 202.101.2.2 //GRE隧道目的地址 
  # 
  ip route-static 0.0.0.0 0.0.0.0 202.101.1.1 preference 60 
  //到公网的默认路由 
  ip route-static 192.168.2.0 255.255.255.0 Tunnel 0 preference 60 
  //通过tunnel访问对方私网的路由 
  # 
  【AR28-2】 
  # 
  sysname AR28-2 
  # 
  interface Ethernet2/0 
  ip address 202.101.2.2 255.255.255.0 //内部私网IP 
  # 
  interface Tunnel0 //创建tunnel 0 
  ip address 192.168.0.2 255.255.255.252 //tunnel IP和对方tunnel IP在同一网段 
  source 202.101.2.2 /源地址 
  destination 202.101.1.2 //目的地址 
  # 
  ip route-static 0.0.0.0 0.0.0.0 202.101.2.1 preference 60 
  //到公网的默认路由 
  ip route-static 192.168.1.0 255.255.255.0 Tunnel 0 preference 60 
  //通过tunnel访问对方私网的路由 
  GRE隧道建立之后,我们在任何一台AR28上面都可以Ping通对方的私网地址,这个就是GRE隧道发挥的作用。GRE隧道还有更加复杂的应用,我们将陆续介绍基于华为路由器、华为交换机设备进行的GRE各种应用配置。

华为路由器GRE配置的更多相关文章

  1. 华为路由器DHCP配置基本命令

    配置基于接口地址池DHCP (动态主机配置协议) [R1]dhcp enable 路由器上开启DHCP [R1]int g0/0/0 [R1-GigabitEthernet0/0/0]dhcp sel ...

  2. 华为路由器OSPF配置常用命令

    OSPF单区域配置 ospf 1 进入ospf视图1代表进程号 area 0 创建区域并进入OSPF区域视图,输入要创建的区域ID,骨干区域即区域0 network +IP +匹配码 display ...

  3. 华为路由器AR1220F-S的端口映射NAT配置(拨号光纤上网)

    telnet 登录 或者ssh登录路由器 //进入系统试图界面 sys-view //第一步. 添加acl规则, 允许内网本身访问对外的公网ip. 否则,只能外部人员访问你的公网ip [Huawei] ...

  4. win7下利用ftp实现华为路由器的上传和下载

    win7下利用ftp实现华为路由器的上传和下载 1.  Win7下ftp的安装和配置 (1)开始->控制面板->程序->程序和功能->打开或关闭Windows功能 (2)在Wi ...

  5. win7下利用ftp实现华为路由器的配置文件上传和下载

    win7下利用ftp实现华为路由器的配置文件上传和下载 1.  Win7下ftp的安装和配置 (1)开始—>控制面板—>程序—>程序和功能—>打开或关闭Windows功能 (2 ...

  6. HCNP学习笔记之史上最全华为路由器交换机配置命令大合集

    先来一张思科和华为命令的对照表: 史上最全华为路由器交换机配置命令大合集,熟练掌握下面的华为路由器交换机配置知识点,你只需花几分钟的时间就能明白华为路由器交换机配置.交换机的配置命令等等. 华为路由器 ...

  7. Zabbix监控华为路由器配置

    zabbix监控华为路由器 一.配置路由器界面: 开启snmpv2c功能,同时勾选v2c版本(不要勾v1,不安全,其实v2也不安全,如果很注重安全的话,一定要只配置v3). 手里没有路由器登录账号,大 ...

  8. zabbix4.2配置监控华为路由器:基于ENSP模拟器

    一.基于ENSP模拟器的华为路由器 这里是华为模拟器中的设备,并不是真机,所以要先保证华为模拟器中的网络设备可以和物理主机.虚拟机能通信,这是前提.如何保证通信请看之前的文章:https://www. ...

  9. 华为路由器RIP路由协议配置命令

    RIP路由协议配置 rip 创建开启协议进程 network + ip 对指定网段接口使能RIP功能IP地址是与路由器直连的网段 debugging rip 1 查看RIP定期更新情况 termina ...

随机推荐

  1. Mac下django简单安装配置步骤

    一.安装软件包并创建项目 $sudo pip install django$sudo python -c "import django;print django.VERSION"( ...

  2. LeetCode[Linked List]: Remove Duplicates from Sorted List II

    Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numb ...

  3. 例说Linux内核链表(一)

    介绍 众所周知,Linux内核大部分是使用GNU C语言写的.C不同于其它的语言,它不具备一个好的数据结构对象或者标准对象库的支持. 所以能够借用Linux内核源代码树的循环双链表是一件非常值得让人高 ...

  4. Manning Hadoop in Practice 翻译【6.2.2】

    不是从第一章开始. 6.2.2 Map的困境 技巧 29 鉴别map阶段的数据差异问题 数据差异是非常常见的.在map阶段,数据差异主要以少量不可以分割的大文件或者大量小文件为代表. 问题 你想要确认 ...

  5. logstash匹配多行日志

    在工作中,遇到一个问题就是日志的处理,首选的方案就是ELFK(filebeat+logstash+es+kibana) 因为之前使用过logstash采集日志的时候,非常的消耗系统的资源,所以这里我选 ...

  6. C语言浮点数存储结构

    float类型占四个字节,每个字节占8位,总共32位,其内存结构如下图: 31位为符号位:0表示正数,1表示负数 31~23位:共8位表示指数位,内存存储数据从0~2^8-1=255,由于指数可以是正 ...

  7. JQuery设置获取下拉菜单选项的值 多实例

    分享下JQuery如何设置获取下拉菜单某个选项的值,多种方法,值得收藏. JQuery获取和设置Select选项 获取Select :获取select 选中的 text :$(“#ddlRegType ...

  8. socket.io笔记二之事件监听回调函数接收一个客户端的回调函数

    //服务端 socket.on('test', function (name, fn) { console.log(name) //输出yes fn('woot'); }); //客户端 socket ...

  9. What-are-P-NP-NP-complete-and-NP-hard

    https://www.amazon.com/Computational-Complexity-Approach-Sanjeev-Arora/dp/0521424267 http://theory.c ...

  10. (原创)c++11中的日期和时间库

    c++11提供了日期时间相关的库chrono,通过chrono相关的库我们可以很方便的处理日期和时间.c++11还提供了字符串的宽窄转换功能,也提供了字符串和数字的相互转换的库.有了这些库提供的便利的 ...