1. GRE协议简介
GRE(General Routing Encapsulation ,通用路由封装)是对某些网络层协议(如IP和IPX)的数据报文进行封装,使这些被封装的报文能够在另一网络层协议(如IP)中传输。此外 GRE协议也可以作为VPN的第三层隧道协议连接两个不同的网络,为数据的传输提供一个透明的通道。
GRE主要有以下特点:
- 机制简单,无需维持状态,对隧道两端设备的CPU负担小;
- 本身不提供数据的加密,如果需要加密,可以与IPSec结合使用;
- 不提供流量控制和QoS
2. GRE报文格式
其中:
- Payload (净荷): 系统接收到的需要封装和路由的原始数据报;
- Passenger Protocol(乘客协议):报文封装之前所属的协议称为乘客协议
- Encapsulation Protocol(封装协议): 用来封装乘客协议的协议称为封装协议,这里的GRE便是一个封装协议,也成为运载协议(Carrier Protocol);
- Transport Protocol(传输协议):负责对封装后的报文进行转发的协议称为传输协议;不同于传输层协议。
GRE头部各字段含义:
字段 | 长度 | 含义 |
---|---|---|
C | 1bit | 校验和验证标识。设置为1,表示Checksum字段生效;0表示Checksum字段不生效 |
K | 1bit | 关键字标识。设置为1,表示头部中Key字段生效;0表示Key字段不生效 |
Recursion | 3bits | 用来表示报文被封装的层数。每封装一次该值加1,最多封装3次 |
Flags | 5bits | 预留。值为0 |
Version | 3bits | 版本号。值为0 |
Protocol Typ |