GRE 协议rfc总结

一、简介

GRE(Generic Routing Encapsulation):通用路由封装。

GRE是一个通用的路由封装协议,它描述在任意的网络层之上封装另一个网络协议。

RFC:2784.

二、报文格式

封装格式:

GRE 协议rfc总结_第1张图片
payload是网络层,delivery是网络层
GRE 协议rfc总结_第2张图片

1)     校验和存在位(1位:0)

如果为1,则checksum和reserved1有效。

2)     reserved0位(12位:1-12)

接收到的报文如果reserved0的1-5位(对应上图)不为0,那么接收段必须丢弃该报文,除非该接收端明确支持RFC1701。6-12位为保留位,必须设置为0,接收端必须不关系这些位。

3)     版本字段(3位:13-15)

版本字段必须设置为0.当版本字段为1时,成为PPTP协议。

4)     协议类型(16位)

协议类型字段包含负载的协议。协议类型的值由RFC1700的ETHER TYPES部分指定。

5)     校验和字段(16位:0-15)

只有当校验和存在位为1,该校验和字段才有效。

该字段初始为0,表示要计算校验和。

校验和包括该16位校验和字段和负载部分。

6)     reserved1字段(16位:16-31)

只有到校验和存在位为1,该字段有效。

该字段为保留位,必须设置为0.

三、IPv4作为运输协议

IPv4的协议字段为47,表示ipv4封装的是GRE包。

四、IPv4作为负载

对应的协议字段为0x800.

传输该IPv4负载时:

接收GRE隧道端,使用负载的IP地址来传输解封装的负载报文,负载报文的TTL必须减1。注意,当负载报文的IP地址为GRE隧道的另一端地址时,会出现循环,这时必须丢弃该报文。

五、PMUT的影响

当用IPv4作为传送协议时,现有实现并不实现路径MTU发现和不设置禁止分片标志。当传送大包时,在隧道中会分片,在隧道端再重组。

如果一个隧道端希望实现Path MTU发现,那么该隧道也需要实现把ICMP不可达错误信息报文(需要分片,设置DF位)回复给报文产生者。

否则,假如报文产生者设置了不分片标志,那么报文在隧道中可能会被丢弃,但没有把该ICMP错误信息传回给产生者,那么后续的报文也将使用相同的PMTU,导致后续报文都被丢弃。

你可能感兴趣的:(每周一协议)