卫星连接的 TCP 窗口缩放

dir*_*ion 7 latency satellite tcp-window tcp-window-scaling

卫星连接通常具有大约 500 毫秒的 RTT。尽管有大量带宽,但连接通常会遭受次优传输速度的影响,因为 TCP 确认需要很长时间才能到达。

我的理解是,解决 TCP 连接问题的一个好方法是将 TCP 窗口大小设置为连接速度(以位为单位)乘以 RTT(以秒为单位)。因此,通过卫星的 1mbps 连接应该具有 512kb 的窗口大小。

这其中有哪些陷阱?是否还有其他类似的调整可以优化卫星连接?我知道许多现代操作系统会自动修改窗口大小,但它们是否足够激进,使窗口大小足够大以用于卫星通信?

顺便说一句,我将假设在经常丢弃数据包的网络上不希望使用大窗口大小,因为重传将以窗口大小进行,并且您可能会将大部分带宽用于重传开销。

谢谢,我仍在学习很多关于网络的知识,感谢您的投入。

pfo*_*pfo 4

您通常应该使用实现适当窗口缩放的 TCP 堆栈。但当然,您的窗口大小需要与带宽延迟乘积(BDP)相匹配,这是对的。如果您有不同的 BDP,您可以将窗口大小设置为您期望的常见“最坏”情况。有趣的是,如果窗口大小比 BDP 大(当然不应该太大),大多数连接不会受到太大影响,但如果窗口大小比 BDP 小得多,则表现出性能下降。

要检查您的 TCP/IP 堆栈是否正确增加了窗口大小,您应该使用 Wireshark 或任何其他流量嗅探器。您可以直接查看标题中的窗口大小标志(考虑到缩放系数!)。Wireshark 还可以通过考虑缩放因子来显示有效窗口大小。

请在此处查看本教程,了解如何将 TCP 窗口大小绘制为时间函数。