为什么我们通过 IPSec 逐站隧道获得 TCP 重传

为什么我们通过 IPSec 逐站隧道获得 TCP 重传

我们在两个地点使用两个 pfsense 防火墙,并使用 IPsec 逐个站点连接这些地点。这种方法长期以来一直运行良好,但现在我们在两个地点都安装了 2.6.0 更新,速度突然大幅下降。我对此进行了一些分析,并阅读了几篇相关帖子。

隧道在第 1 阶段和第 2 阶段均处于在线状态,我也可以 ping 另一个网络中的主机,并且使用 ICMP ping 不会丢失数据包。如果我现在使用 iperf 从主机到远程防火墙进行测量,我的吞吐量很差,仅在 Kbit/s 范围内,使用 Wireshark 我看到大量的 TCP 重传,如果我从另一端测试,速度几乎处于正常水平。

iperf 结果

使用 wireshark 时,会出现大量 TCP 重传

wireshark 分析

我在网上看到我们应该调整 PFsense 上的 MTU 和 MSS,我也试过了,但没有任何变化。由于它在更新之前有效,我真的不知道可能是什么原因以及如何解决此问题。

更新 我在两个防火墙上都创建了跟踪并分析了数据包。一个数据包到达远程防火墙时出现错误,但这到底意味着什么,或者我如何确定到底出了什么问题?

下图是标记了原始数据包的跟踪快照。

源防火墙转储

在此图中,您可以在目标防火墙上看到相同的数据包。

目标防火墙转储

更新2

我找到了更多信息,在调试此 ipsec 隧道时,我发现数据包大小是问题所在,数据包碎片化时会出现一些问题。如果我对ping -f 192.168.3.1 -l 969数据包大小为 969 字节的数据包执行 ping (),则一切正常,如果数据包大小为 970 字节,则会出现数据包丢失。

因此存在碎片问题,我在防火墙选项卡中设置了以下选项:

防火墙选项卡

相关内容