卫星连接一般有大约500毫秒的RTT。连接通常遭受次优传输速度,尽管有大量的带宽,因为TCP确认需要太长时间才能到达。
我的理解是,解决TCP连接问题的一个好方法是将TCP窗口大小设置为连接速度(以位为单位)乘以RTT (以秒为单位)。因此,1 1mbps的卫星连接应该有一个512 of的窗口大小。
这其中涉及哪些陷阱?是否还有其他类似的调整,以优化卫星连接?我知道许多现代操作系统将自动修改窗口大小,但它们是否具有足够的进攻性,使窗口大小足以用于卫星通信?
顺便说一句,我将假设在频繁丢弃数据包的网络中,大窗口大小是不可取的,因为重传将以窗口大小进行,而且您可能会将大部分带宽用于重传开销。
谢谢你,我还在学习很多关于人际关系的知识,非常感谢你的投入。
发布于 2012-10-15 17:23:57
您通常应该使用实现适当窗口缩放的TCP堆栈。但是,您当然是对的,您的窗口大小需要处理带宽延迟产品(BDP)。如果您有不同的BDP,您可以将窗口大小设置为常见的“最坏”情况。有趣的是,如果窗口大小大于BDP (当然不应该太大),大多数连接不会受到太多的影响,但是如果窗口大小比BDP小得多,则会显示降低的性能。
要检查您的TCP/IP堆栈是否正确地增加了窗口大小,您应该使用Wireshark或任何其他流量嗅探器。您可以直接查看标题中的窗口大小标志(考虑到缩放因素!)。Wireshark还可以通过考虑缩放因子来显示有效的窗口大小。
请查看本教程,了解如何将TCP窗口大小绘制为时间这里的函数。
发布于 2012-10-15 18:48:26
这完全是学术性的,因为没有人通过卫星连接运行TCP。我不知道有哪个卫星供应商会这么做。它们都在卫星上运行特定于卫星的协议,并将TCP端点放置在地面站。
当网络上的机器向卫星终端发送TCP SYN数据包时,卫星终端向卫星发送TCP代理请求。这指示地面站打开到Internet上某个服务器的TCP连接。地面站将TCP与Internet服务器进行通信。卫星终端不是在卫星上讲TCP,而是讲一种为卫星使用而优化的协议。地面站充当卫星终端和因特网服务器之间的代理。
发布于 2012-10-15 17:45:56
为了方便起见,有可用的带宽延迟积计算器-- 这里就是这样的一个计算器。至于在数据包丢失时引起问题的大窗口,这正是TCP窗口是可变的原因。在丢包时,窗口大小将减小,从而减少飞行中的数据,从而降低传输速度。一段时间后,窗口大小将重新协商。
你的延迟实际上对卫星来说并没有那么糟糕-- 1s RTT @ 1M只是一个125 K的窗口。大量的现代操作系统将很容易地支持这种开箱即用的方式,因此可能不需要进行额外的修改。
作为一个旁白-一些已经有了非常好的运气,各种广域网优化器在市场上可用。这既可以优化TCP窗口的大小,也可以利用缓存和压缩来推动更多的链接,并提高明显的响应能力。
https://serverfault.com/questions/438587
复制相似问题