如果是这样,应用程序可以做出任何合理的猜测,或者更好的API调用,以确定空闲时间会导致窗口缩小吗?
需要低延迟的应用程序是否在空闲时定期发送不必要的流量以保留窗口大小?
另一种表达问题的方法 - 谷歌做了什么(除了避免使用tcp本身并仅使用ip / udp)?
答案 0 :(得分:1)
[RFC2581]建议如下:" TCP应该不再设置cwnd 如果是TCP,则在开始传输之前的RW [初始窗口] 没有在超过重传的时间间隔内发送数据 。超时" 重传超时可能是几个往返时间的顺序,因此您需要保持相当高的发送速率以避免这种情况。假设您正在使用的实现遵循此建议。我不确定今天的常见做法是什么。
如果您控制平台,则可以使用tcp配置参数进行设置。在Linux上:tcp_slow_start_after_idle 但请注意,关闭它可能会导致空闲后爆发过大的爆发。当发送处于活动状态时,发送窗口将满,因此只有在到达时才会将新段计量到网络中。闲置一段时间后,您将被允许一次性填充窗口。