如果通过附加 GRE-IP 标头的数据包长度导致大于路由器 MTU 的大小,那么该数据包的 More Fragment Flag 和 Frag Offset 字段会发生什么情况?
GRE分片后的更多Fragment flag和Frag Offset字段
通常,IP 数据包需要在 GRE 封装之前进行分段。隧道接口将具有比物理路由器接口更小的 MTU(物理接口 MTU - GRE 数据包开销)。隧道接口被视为真实接口,进入隧道的IP数据包需要在GRE封装之前进行分片。
请参阅RFC 7588,通用路由封装 (GRE) 分段问题的广泛部署解决方案:
2.2. 广泛部署的解决方案
许多供应商已经实施了可配置的 GRE 分片解决方案。在其默认配置中,该解决方案的行为如下:
- 当 GRE 入口节点接收到一个长度大于 GMTU 的可分片数据包时,它会将传入的数据包分片,并将每个分片封装在一个完整的 GRE 头和 GRE 传递头中。分段逻辑由有效负载协议指定。
- 当 GRE 入口节点收到长度大于 GMTU 的不可分片数据包时,它会丢弃该数据包并向数据包的源发送 ICMP PTB 消息。
- 当 GRE 出口节点收到一个 GRE 交付数据包片段时,它会默默地丢弃该片段,而不尝试重新组装该片段所属的 GRE 交付数据包。
在非默认配置中,GRE 入口节点可以执行 RFC 4459 中定义的任何程序。
上述解决方案以其默认配置广泛部署在 Internet 上。但是,默认配置并不总是适用于承载 IPv6 的 GRE 隧道。
IPv6 要求 Internet 中的每个链路的 MTU 为 1280 字节或更高。在任何不能一次性传送 1280 字节数据包的链路上,必须在低于 IPv6 的层提供特定于链路的分段和重组。
因此,仅当网络经过设计以保证GMTU 为1280 字节或更大时,默认配置才适用于承载IPv6 的隧道。在所有其他情况下,都需要非默认配置。
在非默认配置中,当 GRE 入口路由器接收到比 GMTU 大的数据包时,GRE 入口路由器将整个数据包封装在单个 GRE 和传递报头中。然后,它将交付标头分段并将生成的分段发送到 GRE 出口节点,在那里重新组合它们。
和:
3.3.1.1。IPv4 负载
默认情况下,如果负载是可分片的,GRE 入口节点会对传入的数据包进行分片,并将每个分片封装在一个完整的 GRE 标头和 GRE 交付标头中。因此,GRE 出口节点会收到几个完整的、非分段的传递数据包。每个交付数据包都包含一个 GRE 有效负载片段。GRE 出口节点将有效负载片段转发到它们的最终目的地,在那里它们被重新组装。
同样默认情况下,如果有效负载不可分段,GRE 入口节点会丢弃数据包并向数据包的源发送 ICMPv4 Destination Unreachable 消息。ICMPv4 Destination Unreachable 消息代码等于 4(需要分段并设置 DF)。ICMPv4 Destination Unreachable 消息还包含下一跳 MTU(由 [RFC1191] 指定),并且下一跳 MTU 等于与隧道关联的 GTU。
GRE 入口节点支持调用替代行为的非默认配置选项。如果配置了该选项,则 GRE 入口节点对传递数据包进行分段。有关详细信息,请参阅第 3.3.2 节。
RFC 791, INTERNET PROTOCOL对分片进行了完整的讨论,包括示例:
示例 2:
在这个例子中,我们首先展示一个中等大小的互联网数据报(452 个数据八位字节),然后展示两个互联网碎片,如果允许的最大传输大小为 280 个八位字节,则该数据报的碎片可能会产生两个互联网碎片。
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Ver= 4 |IHL= 5 |Type of Service| Total Length = 472 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Identification = 111 |Flg=0| Fragment Offset = 0 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Time = 123 | Protocol = 6 | header checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | source address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | destination address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | data | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | data | \ \ \ \ | data | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | data | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Example Internet Datagram Figure 6.现在是在 256 个数据八位字节后拆分数据报产生的第一个片段。
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Ver= 4 |IHL= 5 |Type of Service| Total Length = 276 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Identification = 111 |Flg=1| Fragment Offset = 0 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Time = 119 | Protocol = 6 | Header Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | source address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | destination address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | data | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | data | \ \ \ \ | data | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | data | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Example Internet Fragment Figure 7.还有第二个片段。
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Ver= 4 |IHL= 5 |Type of Service| Total Length = 216 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Identification = 111 |Flg=0| Fragment Offset = 32 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Time = 119 | Protocol = 6 | Header Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | source address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | destination address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | data | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | data | \ \ \ \ | data | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | data | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Example Internet Fragment Figure 8.