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