如何调试涉及 TCP 中继的慢速 TCP 连接

How to debug a slow TCP connection involving a TCP relay

我有一个应用程序需要在服务器和客户端之间传输数据。两端都在公司防火墙后面,但它们需要安全通信。我写了一个 TCP 中继服务器,可以在 2 个应用程序之间建立通信。

我的问题是 TCP 流的性能现在急剧下降,我想找出原因。我将服务器、客户端和中继的 TCP 接收和发送缓冲区大小设置为 10 MB。性能问题在较大的 RTT 时最为明显,因此我当前的 RTT 为 60 毫秒。完成初始握手后,中继会在服务器和客户端之间通过管道传输原始 TCP 流,而无需额外的帧。

我已经检查了 TCP window 大小比例并且设置正确。尝试在 wireshark 中搜索 tcp.analysis.flags 以查看接收 window 是否已满,但从未产生过此类警告。

我该怎么做才能弄清楚为什么性能会这样下降?提前致谢!

以下是我使用 Wireshark 收集到的一些数据:

显示速度下降点的捕获(黄色=下载节点,青色=上传节点)

正在上传对端的吞吐量图

正在下载对等方的吞吐量图表

原来这是我用来模拟长途连接的VPN连接造成的。一旦我能够与世界另一端的真人一起测试系统,问题就消失了,我得到了很好的波形图,而不是尖峰。