我正在调试高带宽 TCP 连接,其吞吐量明显低于设备和网络的能力。这两台主机之间的网络需要高带宽、高延迟和高质量(较少的数据包丢失)。
在 Wireshark 中,我可以观察到 TCP 接收方的窗口快速增加到最大值1574400之后一直保持不变,发送方经常会遇到TCP Window Full的状态。
在专家信息窗口中,我可以观察到接收方的窗口经常变满,但没有发生重传。(使用过滤器ip.addr == host2 and ((tcp.srcport==36000 and tcp.dstport==23545) or (tcp.dstport==36000 and tcp.srcport==23545))
)
在接收方主机上,我发现可配置的最大窗口大小远高于观察到的最大窗口大小。
$ sysctl net.ipv4.tcp_rmem
net.ipv4.tcp_rmem = 4096 87380 6291456
$ sysctl net.core.rmem_max
net.core.rmem_max = 229376
吞吐量低是高延迟的结果,但接收方的窗口大小应该增加到更高的值,这样吞吐量才能提高。这些 TCP-Window-Full 事件是否表明拥塞窗口高于接收方的窗口,并且接收方的窗口大小不符合网络需求?
我很好奇为什么接收方的窗口广告在以下值时停止增加1574400以及如何增加它。它是由接收器操作系统配置控制的吗?