如果隧道中发生分段,IP 数据包何时重新组装?

网络工程 虚拟专用网 ip 碎片化
2022-02-04 11:38:11

我已经读到碎片化的 IP 数据包“总是”在它们的最终目的地重新组合,例如接收主机。(例如参见http://www.tcpipguide.com/free/t_IPMessageReassemblyProcess.htm

但是,如果数据包经过一条有 VPN 的路径,例如在隧道模式下运行的 IPsec,IPsec 端点路由器不是最终目的地,并且加密端点对数据包进行分段,会发生什么?数据包不应该在解密端点重新组装吗?

例如,在下图中,假设 PC1 向 PC2 发送数据包,并且 R1 和 R2 之间有一条隧道。数据包在 R1 处变得碎片化。它们是在 R2 还是在 PC2 重新组装?

在此处输入图像描述

2个回答

我已经读到碎片化的 IP 数据包“总是”在它们的最终目的地重新组合,例如接收主机。

这是IP设计者的初衷,但如今并非如此。许多防火墙会对数据包进行碎片整理,因为很难对碎片进行有效的防火墙。

例如,在下图中,假设 PC1 向 PC2 发送数据包,并且 R1 和 R2 之间有一条隧道。数据包在 R1 处变得碎片化。它们是在 R2 还是在 PC2 重新组装?

这取决于它们是如何分散的。

如果它们在封装之前被分片,那么分片的数据包可以单独传输到终端主机(尽管如上所述,许多防火墙会对它们进行碎片整理)

另一方面,如果封装的数据包被分段,那么它必须重新组装,然后才能解封装。

想象这样一种情况,当数据包到达第一个路由器时,它的大小接近路由器物理出口端口的 MTU,然后用 IPSEC 头封装。这些额外的标头可能会超过出口端口的 MTU

在这种情况下,数据包将在加密后被分片 - 分片后。当然,这会强制远程 IPsec 对等方在解密之前执行重组。

如果您在上游数据路径中设置 MTU 以确保在加密之前发生分片(预分片),则可以避免后分片。从性能的角度来看,预碎片化非常重要,因为它将重组任务从远程 IPSEC 对等体转移到了终端主机。