通用路由封装(GRE)定义了在任意一种网络层协议上封装任意一个其它网络层协议的协议。
在大多数常规情况下,系统拥有一个有效载荷(或负载)包,需要将它封装并发送至某个目的地。首先将有效载荷封装在一个 GRE 包中,然后将此 GRE 包封装在其它某协议中并进行转发。此外发协议即为发送协议。当 IPv4 被作为 GRE 有效载荷传输时,协议类型字段必须被设置为 0x800。当一个隧道终点拆封此含有 IPv4 包作为有效载荷的 GRE 包时,IPv4 包头中的目的地址必须用来转发包,并且需要减少有效载荷包的 TTL。值得注意的是,在转发这样一个包时,如果有效载荷包的目的地址就是包的封装器(也就是隧道另一端),就会出现回路现象。在此情形下,必须丢弃该包。当 GRE 包被封装在 IPv4 中时,需要使用 IPv4 协议 47。
GRE 下的网络安全与常规的 IPv4 网络安全是较为相似的,GRE 下的路由采用 IPv4 原本使用的路由,但路由过滤保持不变 。包过滤要求防火墙检查 GRE 包,或者在 GRE 隧道终点完成过滤过程。在那些这被看作是安全问题的环境下,可以在防火墙上终止隧道。
协议结构
| 1 | 13 | 16 | 32 bit |
| C | Reserved 0 & 1 | Ver | Protocol Type |
| Checksum (optional) | Reserved | ||
- C ― 当前校验和。
- Reserved 0 & 1 ― 预留以备后用。
- Ver ― 版本号,当前为0。
- Protocol Type ― 包括有效载荷数据包的协议类型。
- Checksum ― 包括 GRE 头和有效负载数据包中所有16位字的 IP 校验和总数
相关协议:IPv4
组织来源:GRE 由 IETF(www.ietf.org)定义在 RFC 2784中。
相关链接:http://www.javvin.com/protocol/rfc2784.pdf: Generic Routing Encapsulation (GRE)


