关于 Linux 和 Windows 的 TCP 实现的性能

AIB*_*AIB 13 windows linux tcp tcpip

据我了解,windows 和 Linux 中 TCP 堆栈的实现是不同的。Windows 使用称为 TCP Reno 的拥塞控制算法,而 Linux 使用 Cubic。

这两种协议在同一网络中共存时如何比较?说 Cubic(Linux) 更具侵略性并且最终可能会获得更高的带宽份额是真的吗?

hai*_*img 12

首先,您所说的实际上并不正确:

  • 内核版本 2.6.18 以下的 Linux默认使用BIC
  • Linux 内核 2.6.19 及更高版本默认使用CUBIC
  • Linux 的 TCP 拥塞控制机制是可插入的,例如,您可以即时更改它们。
  • Windows XP 及更早版本使用 TCP Reno(或New Reno
  • Windows Vista 及更高版本还具有复合 TCP,它在 Server 2008 中默认启用,如果需要,可以在 Vista 和 Windows 7 中启用。

所有这些算法都根据可用的网络带宽、延迟、可用内存等进行自我调整。它们还有许多配置参数,让您可以手动调整它们。

因此,如果不查看确切的特定网络拓扑、使用的硬件和软件等,您就无法真正地比较两者。它不像一个比另一个更好,或者将使用更大份额的可用带宽。CUBIC 确实不如 BIC 激进,但在实践中,其他考虑因素通常比使用哪种 TCP 拥塞算法更重要。

除非您尝试调整到范围非常窄且不寻常的网络场景,否则这些算法都可以很好地运行并且开箱即用。


wnr*_*rph 4

请注意,拥塞控制算法仅影响上行流量,因此仅影响上行带宽。

话虽这么说,Cubic 实际上更具攻击性,尤其是对于具有高带宽延迟乘积的网络。Linux 实现中甚至内置了一条规则,以便在相同情况下永远不会使用比 reno 更小的发送速率:

Linux Cubic 算法还包括确保三次算法至少与标准 TCP 一样激进的代码

——Leith、Shorten、McCullagh,Cubic-TCP 的实验评估

因此,当您在观看 Youtube 视频的同时下载 Windows 更新时,您的 Youtube 流量可能会导致您的 Microsoft 流量不足,而您对此无能为力。