设为首页收藏本站language→→ 语言切换

鸿鹄论坛

 找回密码
 论坛注册

QQ登录

先注册再绑定QQ

查看: 3029|回复: 10
收起左侧

[书籍] 华为GRE隧道VPN配置指南

[复制链接]
 成长值: 63265
发表于 2021-7-15 14:02:09 | 显示全部楼层 |阅读模式
GRE简介
介绍GRE的定义和受益。
定义
通用路由封装协议GRE(Generic Routing Encapsulation)可以对某些网络层协议(如IPX、ATM、IPv6、AppleTalk等)的数据报文进行封装,使这些被封装的数据报文能够在另一个网络层协议(如IPv4)中传输。
GRE提供了将一种协议的报文封装在另一种协议报文中的机制,是一种三层隧道封装技术,使报文可以通过GRE隧道透明的传输,解决异种网络的传输问题。

受益
  • GRE实现机制简单,对隧道两端的设备负担小。
  • GRE隧道可以通过IPv4网络连通多种网络协议的本地网络,有效利用了原有的网络架构,降低成本。
  • GRE隧道扩展了跳数受限网络协议的工作范围,支持企业灵活设计网络拓扑。
  • GRE隧道可以封装组播数据,和IPSec结合使用时可以保证语音、视频等组播业务的安全。
  • GRE隧道支持使能MPLS LDP,使用GRE隧道承载MPLS LDP报文,建立LDP LSP,实现MPLS骨干网的互通。
  • GRE隧道将不连续的子网连接起来,用于组建VPN,实现企业总部和分支间安全的连接。

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

                               
登录/注册后可看大图


  • 封装
    • Ingress PE从连接X协议网络的接口接收到X协议报文后,首先交由X协议处理。
    • X协议根据报文头中的目的地址在路由表或转发表中查找出接口,确定如何转发此报文。如果发现出接口是GRE Tunnel接口,则对报文进行GRE封装,即添加GRE头。
    • 根据骨干网传输协议为IP,给报文加上IP头。IP头的源地址就是隧道源地址,目的地址就是隧道目的地址。
    • 根据该IP头的目的地址(即隧道目的地址),在骨干网路由表中查找相应的出接口并发送报文。之后,封装后的报文将在该骨干网中传输。

    关于封装后详细的报文格式,请参见报文格式
  • 解封装
    解封装过程和封装过程相反。
    • Egress PE从GRE Tunnel接口收到该报文,分析IP头发现报文的目的地址为本设备,则Egress PE去掉IP头后交给GRE协议处理。
    • GRE协议剥掉GRE报头,获取X协议报文,再交由X协议对此数据报文进行后续的转发处理。



报文格式GRE封装后的报文格式如图3-2所示。
  • 乘客协议(Passenger Protocol):封装前的报文称为净荷,封装前的报文协议称为乘客协议。
  • 封装协议(Encapsulation Protocol):GRE Header是由封装协议完成并填充的,封装协议也称为运载协议(Carrier Protocol)。
  • 传输协议(Transport Protocol或者Delivery Protocol):负责对封装后的报文进行转发的协议称为传输协议。


图3-2  GRE报文结构

                               
登录/注册后可看大图


GRE头的各字段解释如表3-1所示。
表3-1  GRE头的各字段解释
GRE头字段
字段解释

C
校验和验证位。
  • 该位置1,表示GRE头插入了校验和(Checksum)字段。
  • 该位置0,表示GRE头不包含校验和字段。


K
关键字位。
  • 该位置1,表示GRE头插入了关键字(Key)字段。
  • 该位置0,表示GRE头不包含关键字字段。


Recursion
表示GRE报文被封装的层数。完成一次GRE封装后将该字段加1。如果封装层数大于3,则丢弃该报文。该字段的作用是防止报文被无限次的封装。
说明:
  • RFC1701规定该字段默认值为0。
  • RFC2784规定当发送和接收端该字段不一致时不会引起异常,且接收端必须忽略该字段。
  • 设备实现时该字段仅在加封装报文时用作标记隧道嵌套层数,GRE解封装报文时不感知该字段,不会影响报文的处理。




Flags
预留字段。当前必须置为0。

Version
版本字段。必须置为0。

Protocol Type
标识乘客协议的协议类型。常见的乘客协议为IPv4协议,协议代码为0800。
Ethernet over GRE协议的协议代码为0x6558。

Checksum
对GRE头及其负载的校验和字段。

Key
关键字字段,隧道接收端用于对收到的报文进行验证。


                               
登录/注册后可看大图
因为目前实现的GRE头不包含源路由字段,所以Bit 1、Bit 3和Bit 4都置为0。

GRE的安全机制
GRE本身提供两种基本的安全机制:
  • 校验和验证
  • 识别关键字

校验和验证
校验和验证是指对封装的报文进行端到端校验。
若GRE报文头中的C位标识位置1,则校验和有效。发送方将根据GRE头及Payload信息计算校验和,并将包含校验和的报文发送给对端。接收方对接收到的报文计算校验和,并与报文中的校验和比较,如果一致则对报文进一步处理,否则丢弃。
隧道两端可以根据实际应用的需要决定配置校验和或禁止校验和。如果本端配置了校验和而对端没有配置,则本端将不会对接收到的报文进行校验和检查,但对发送的报文计算校验和;相反,如果本端没有配置校验和而对端已配置,则本端将对从对端发来的报文进行校验和检查,但对发送的报文不计算校验和。

识别关键字
识别关键字(Key)验证是指对Tunnel接口进行校验。通过这种弱安全机制,可以防止错误识别、接收其它地方来的报文。
若GRE报文头中的K位为1,则在GRE头中插入一个四字节长关键字字段,收发双方将进行识别关键字的验证。
关键字的作用是标志隧道中的流量,属于同一流量的报文使用相同的关键字。在报文解封装时,GRE将基于关键字来识别属于相同流量的数据报文。只有Tunnel两端设置的识别关键字完全一致时才能通过验证,否则将报文丢弃。这里的“完全一致”是指两端都不设置识别关键字,或者两端都设置相同的关键字。



游客,如果您要查看本帖隐藏内容请回复















发表于 2021-7-15 16:33:25 | 显示全部楼层
感谢楼主分享资料!!!
板凳 2021-7-15 16:33:25 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2021-9-6 20:28:46 | 显示全部楼层
多谢楼主分享
7# 2021-9-6 20:28:46 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2022-5-8 17:12:25 | 显示全部楼层
华为GRE隧道VPN配置指南
9# 2022-5-8 17:12:25 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2024-5-14 10:45:07 | 显示全部楼层
华为认证,值得拥有!
11# 2024-5-14 10:45:07 回复 收起回复
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-1-24 01:27 , Processed in 0.114198 second(s), 13 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表