互联网协议 — GRE 通用路由封装协议

目录

GRE 通用路由封装协议

GRE(Generic Routing Encapsulation,通用路由封装)隧道协议,RFC 1701。

  1. GRE 的协议栈结构:基于 IP 网络层协议来封装 L2/L3 报文
    在这里插入图片描述
  • 传输协议(Transport Protocol / Delivery Protocol):负责对封装后的报文进行转发的协议称为传输协议。
  • 封装协议(Encapsulation Protocol):上述的 GRE 协议称为封装协议,也称为运载协议(Carrier Protocol)。
  • 乘客协议(Passenger Protocol):封装前的报文协议称为乘客协议。
  • 净荷(Payload Packet):系统收到的需要封装和路由的数据报称为净荷。
  1. GRE 解决了异种网络的传输问题,实现跨公网的网络互联

在这里插入图片描述

  1. GRE 扩展了受跳数限制的路由协议的工作范围,支持企业灵活设计网络拓扑

  2. GRE 可以封装组播数据,经常与 IPSec 组合使用。IPSec VPN 用于在两个端点之间提供安全的 IP 通信,但 IPSec 只能加密并传播单播数据流量,例如:ICMP;而无法加密和传输组播数据,例如:语音、视频、动态路由协议。GRE 补充了这一缺陷:首先通过 GRE 对报文进行封装,然后再由 IPSec 对封装后的报文进行加密和传输,从而保证了组播业务的安全。

在这里插入图片描述

GRE 报文格式

    |------------------------------------------------------------------------------|
    |    bit0-3   |      4-12      | 13-15 |                16 - 31                |
    |-------------|----------------|-------|---------------------------------------|
    | C | | K | S |    Reserved0   |  Ver  |            Protocol Type              |
    |--------------------------------------|---------------------------------------|
    |           Checksum(optional)         |         Reserved1(optional)           |         
    |------------------------------------------------------------------------------|
    |                                 Key(optional)                                |
    |------------------------------------------------------------------------------|
    |                           Sequence Number (optional)                         |
    |------------------------------------------------------------------------------|

在这里插入图片描述

在这里插入图片描述

GRE 的实现原理

在这里插入图片描述

Linux 配置指令

加载 GRE 内核模块

Linux 上使用 GRE 需要加载特定的内核模块:

# 开启 IPv4 路由转发
echo 1 > /proc/sys/net/ipv4/ip_forward

# 查看 GRE 内核模块信息
modinfo ip_gre

# 查看 GRE 内核模块是否安装
lsmod | grep ip_gre

# 加载 GRE 内核模块
modprobe ip_gre
modprobe --first-time ip_gre

East side

  1. 创建 GRE Tunnel 虚拟接口设备,并指定 GRE Endpoints 的 Source 和 Destination IP 地址。
ip tunnel add GRE-1 mode gre local 172.16.50.75 remote 172.16.50.8 key 100 ttl 255 dev ens3
  1. 启用 GRE Tunnel 虚拟接口设备。
ip link set dev GRE-1 up
  1. 配置 GRE Tunnel 虚拟接口设备的本地路由 IP 地址(注:仅用于本地路由,不会出现在隧道路径中),作为 Tunnel 的标识,便于配置本地隧道路由。
ip addr add 10.10.10.1 peer 10.10.10.2 dev GRE-1
  1. 配置本地隧道路由,指向隧道设备,以此来引导流量进入隧道。
ip route add 192.168.2.0/24 via 10.10.10.1 dev GRE-1

West side

ip tunnel add GRE-1 mode gre remote 172.16.50.75 local 172.16.50.8 key 100
ip link set GRE-1 up
ip addr add 10.10.10.2 peer 10.10.10.1 dev GRE-1
ip route add 192.168.1.0/24 via 10.10.10.2 dev GRE-1

GRE 的 Keepalive 检测

Keepalive 检测功能用于检测隧道对端是否可达。

在这里插入图片描述

GRE 支持多租户

一个 GRE Enpoints 可能存在多个隧道,因而需要有一个标志位来唯一标识当前网络包属于哪个隧道,这就是 GRE Header 中的 key,简称 GRE Key。

The Key field is used to create separate sub-tunnels within a GRE Tunnel.

在这里插入图片描述

例如:

tunnel-1
 host-1
  ip tunnel add GRE-1 mode gre remote 172.16.50.8 local 172.16.50.75 key 100
  ip link set GRE-1 up
  ip addr add 10.10.10.1 peer 10.10.10.2 dev GRE-1
  ip route add 192.168.2.0/24 via 10.10.10.1 dev GRE-1


 host-2
  ip tunnel add GRE-1 mode gre remote 172.16.50.75 local 172.16.50.8 key 100
  ip link set GRE-1 up
  ip addr add 10.10.10.2 peer 10.10.10.1 dev GRE-1
  ip route add 192.168.1.0/24 via 10.10.10.2 dev GRE-1


tunnel-2
 host-1
  ip tunnel add GRE-2 mode gre remote 172.16.50.8 local 172.16.50.75 key 200
  ip link set GRE-2 up
  ip addr add 10.10.100.1 peer 10.10.100.2 dev GRE-2
  ip route add 192.168.20.0/24 via 10.10.100.1 dev GRE-2


 host-2
  ip tunnel add GRE-2 mode gre remote 172.16.50.75 local 172.16.50.8 key 200
  ip link set GRE-2 up
  ip addr add 10.10.100.2 peer 10.10.100.1 dev GRE-2
  ip route add 192.168.10.0/24 via 10.10.100.2 dev GRE-2
范桂飓 CSDN认证博客专家 云计算 边缘计算 5G
若抽象才是美之定义,追求明确性的我们是否象征着丑陋。
相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付 49.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值