通用路由封装

通用路由封装(英语:Generic Routing Encapsulation,缩写:GRE)是一种可以在虚拟点对点链路中封装多种网络层协议的隧道协议。由思科系统开发,在RFC 2784中定义。


协议栈举例

OSI模型分层 协议
5. 会话层 X.225
4. 传输层 UDP
3. 网络层 (GRE封装) IPv6
封装 GRE
3. 网络层 IPv4
2. 数据链路层 以太网
1. 物理层 以太物理层

从上面的图表可以看出,协议封装(非特指GRE)打破了OSI模型中定义的分层。这可以被看成两个不同协议栈中间的分割器,一个承载另一个。


报文头

GRE报文头结构如下图所示。[最新的RFC 2784 && RFC 2890]

Bits 0–3 4–12 13–15 16–31
C K S Reserved1 Version Protocol Type
Checksum (optional) Reserved2
Key (optional)
Sequence Number (optional)
  • C:校验码标记位,标为1为代表启用校验码。
  • K:键码标记位,标为1为代表启用键码。
  • S:序列号标记位,标为1为代表启用序列号。
  • Reserved1、Reserved2:预留,默认为填0。
  • Version:版本号,默认值为0。
  • Protocol Type:负载得网络层以太类型
  • Checksum:校验码,C位启用时可用。为GRE头与负载的校验码。
  • Key:键码,K位启用时可用。特定用语所需的键值。
  • Sequence Number,序列号,S位启用时可用。为GRE数据包的发送序列号。

参考资料

外部链接