了解 IPv6 数据包的路径 MTU 消息
本主题介绍路径最大传输单元 (MTU),并说明 SRX 系列防火墙的流量模块如何处理和使用路径 MTU 消息。
每个链路都有一个 MTU 大小,用于指定链路可以传输的最大数据包的大小。MTU 越大,意味着传输一定数量数据所需的数据包越少。为了获得最佳的数据传输性能,从一个节点(源)发送到另一个节点(目标)的 IPv6 数据包应该是可以遍历节点之间路径的最大可能大小。(数据包越大越少会限制数据包标头处理和路由过程的成本,从而影响传输性能。
但是,要使数据包成功遍历从源节点到目标节点的路径,源节点接口的 MTU 大小不得大于源和目标之间路径上所有节点的最小 MTU 大小。此值称为路径最大传输单元(路径 MTU)。如果数据包大于链路的 MTU 大小,则链路很可能会丢弃它。对于 IPv6,中间节点无法对数据包进行分段。
IPv6 定义了一种称为路径 MTU 发现的标准机制,源节点可以使用该机制来学习数据包可能遍历的路径的路径 MTU。如果在该路径上发送的任何数据包太大,无法由路径上的节点转发,则该节点将丢弃该数据包并返回 ICMPv6 数据包太大消息。然后,源节点可以将 MTU 大小调整为小于丢弃它并发送 ICMPv6 消息的节点的大小,然后重新传输数据包。源节点可能会重复收到数据包太大消息,直到其数据包成功遍历路径上的所有节点。
在所有 SRX 系列防火墙上,路由引擎无法检测到 IPv6 组播地址(包含大型数据包)的路径 MTU。
确定路径 MTU 大小并设置适当的 MTU 大小后,传出数据包可能会沿其他路径路由,其节点的链路 MTU 大小小于之前确定的路径 MTU 大小。在这种情况模块将再次启动路径 MTU 发现进程。
当流模块收到带有属于它的目标地址的 ICMP 数据包太大消息时,它会:
如果数据包是中转数据包,则流模块将搜索与数据包的嵌入式 5 元组数据匹配的会话。它找到一个匹配的会话,将数据包传递给它。如果没有匹配的会话,则会丢弃数据包。
当流模块收到数据包时,在将其传输到出口接口之前,它会检查以确定出口接口的 MTU 大小是否大于数据包长度。
如果 MTU 大小大于数据包长度,它将继续处理数据包。
如果 MTU 大小小于数据包长度,则会丢弃数据包并向源节点发送 ICMPv6 数据包太大消息。
配置 机箱群集 且路径 MTU 更新隧道接口的 MTU 时,流模块不会将新 MTU 同步到对等节点。MTU 大小可能会由对等节点上的较大数据包再次更新,这对数据包传输没有影响。