在我的集群中,我正在运行一些大量使用网络带宽的实验。 (在 Cent OS 7 Linux 上)
实验开始后,机器立即使用最大网络带宽。短时间后,他们的网络速度显着下降(变慢20~25倍)。
很长一段时间后,当大多数机器终止时,剩下的少数机器仍在与缓慢的网络速度作斗争。
我怀疑 TCP 的拥塞控制,所以我正在考虑尝试将其关闭。
如何才能完全关闭TCP拥塞控制?
答案1
由于 TCP 的工作原理,您无法将其关闭。
TCP 是一种提供有保证的传送并提供数据流的协议。这意味着所有数据都需要由接收者确认。在此完成之前,TCP 堆栈需要重试数据包传送,为此它需要缓冲尚未确认的任何数据。此外,如果数据流中间丢失数据包,则接收者需要等待这些数据包到达,然后才能将后续数据转发到应用程序,因为需要保持数据流中数据的顺序。
当网络被过度使用时,数据包会被丢弃,要么是数据本身,要么是确认。这会隐式限制连接,因为它必须等待数据包的重新传送。有多种算法和参数可以根据环境(低带宽与高带宽、低延迟与高延迟...)调整 TCP 堆栈的确切行为,但由于 TCP 的传送保证,无法禁用拥塞完全控制。