系统收到需要进行封装和路由的某网络层协议(如IPX)数据时,将首先对其加上GRE报文头,使之成为GRE报文,再将其封装在另一协议(如IP)中。这样,此报文的转发就可以完全由IP协议负责。封装后的报文的格式如下图所示:
其中:
GRE首部各字段解释如下:
字段 | 长度 | 描述 |
---|---|---|
C | 1 bit | 校验和验证位。如果该位置1,表示GRE头插入了校验和(Checksum)字段;该位为0表示GRE头不包含校验和字段。 |
K | 1 bit | 关键字位。如果该位置1,表示GRE头插入了关键字(Key)字段;该位为0表示GRE头不包含关键字字段。 |
Recursion | 3 bits | 用来表示GRE报文被封装的层数。完成一次GRE封装后将该字段加1。如果封装层数大于3,则丢弃该报文。该字段的作用是防止报文被无限次的封装。 |
Flags | 5 bits | 预留字段。当前必须设为0。 |
Version | 3 bits | 版本字段,必须置为0。Version为1是使用在RFC2637的PPTP中。 |
Protocol Type | 16 bits | 乘客协议的协议类型。 |
Checksum | 16 bits | 对GRE头及其负载的校验和字段。 |
Key | 31 bits | 关键字字段,隧道接收端用于对收到的报文进行验证。 |
因为VRP中的GRE头不包含源路由字段,因此Bit 1、Bit 3和Bit 4都置为0。
标准 | 描述 |
---|---|
RFC 1701 | Generic Routing Encapsulation (GRE) |
RFC 2784 | Generic Routing Encapsulation (GRE) |