我已经在Linux(3.5内核)中试验TCP参数。基本上关于此连接:
服务器:数据中心的千兆上行链路,从另一个数据中心进行测试时,实际带宽(由于共享上行链路)约为70 MB / s。
客户端:连接到200mbit光纤的千兆本地局域网。实际上,获取测试文件的速度为20 MB / s。
延迟:大约50毫秒往返。
远程服务器用作10到100mb范围内文件的文件服务器。我注意到,使用10的initcwnd传输这些文件的时间会受到TCP缓慢启动的严重影响,由于加载速度缓慢,然后加载速度提高,因此加载10mb所需的时间为3.5秒(达到最高速度:3.3 MB / s)。在达到最大速度之前完成。我的目标是调整这些文件的最小加载时间(因此,不是最高的原始吞吐量或最低的往返延迟,如果这会减少加载文件的实际时间,我愿意牺牲两者)
因此,我尝试了一个简单的计算来确定理想的initcwnd应该是什么,而忽略了其他任何连接以及对其他连接的可能影响。带宽延迟乘积为200 Mbit / s * 50ms = 10 Mbit或1.310.720字节。考虑到initcwnd是以MSS为单位设置的,并且假设MSS约为1400字节,则需要设置为:1.310.720 / 1400 = 936
此值与默认值相差很远(Linux中为10 * MSS,Windows中为64kb),因此将其设置为这样不是一个好主意。像这样配置它的预期缺点是什么?例如:
- 会影响同一网络的其他用户吗?
- 会为其他连接造成不可接受的拥塞吗?
- 在路径上某处泛洪路由器缓冲区?
- 增加少量丢包的影响?
70 MB/s
而不是几兆字节?只是需要澄清。