TCP面试系列拥塞控制

TCP 面试系列第六弹,TCP 拥塞控制的一般性原理。

拥塞的定义。

在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。这种情况就叫做拥塞。

拥塞常常趋于恶化。

举个例子,如果一个路由器没有足够的缓存空间,它就会丢弃一些新到的分组。但当分组被丢弃时,发送这一分组的源点就会重传这一分组,甚至可能还要重传多次。这样会引起更多的分组流入网络和被网络中的路由器丢弃。可见拥塞引起的重传并不会缓解网络的拥塞,反而会加剧网络的拥塞。

为了针对上述拥塞带来的网络恶化情况,引入拥塞控制方法。

如下图所示:

  • 横坐标是提供的负载(offered load),代表单位时间内输入给网络的分组数目
  • 纵坐标是吞吐量(throughput),代表单位时间内从网络输出的分组数目

根据上图简要分析。

理想网络情况下:

  1. 在吞吐量饱和之前,网络吞吐量应等于提供的负载,故吞吐量曲线是 45° 的斜线。
  2. 当提供的负载超过某一限度时,由于网络资源受限,吞吐量不再增长而保持为水平线,即吞吐量达到饱和。这就表明提供的负载中有一部分损失掉了(例如,输入到网络的某些分组被某个结点丢弃了)。虽然如此,在这种理想的拥塞控制作用下,网络的吞吐量仍然维持在其所能达到的最大值

实际网络情况下:

  1. 随着提供的负载的增大,网络吞吐量的增长速率逐渐减小。也就是说,在网络吞吐量还未达到饱和时,就已经有一部分的输入分组被丢弃了。当网络的吞吐量明显地小于理想的吞吐量时,网络就进入了轻度拥塞的状态
  2. 当提供的负载达到某一数值时,网络的吞吐量反而随提供的负载的增大而下降,这时网络就进入了拥塞状态
  3. 当提供的负载继续增大到某一数值时,网络的吞吐量就下降到零,网络已无法工作,进入到死锁状态。