TCP的拥塞控制
一. 基本概念
-
在某段时间,若对网络中的某一资源的需求超过了该资源所能提供的可用部分,网络性能就要被破坏,这种情况就叫做拥塞
-
在计算机网络中的链路容量(即带宽)、交换结点中的缓存和处理机等,都是网络的资源
-
若出现拥塞而不进行控制,整个网络的吞吐量将随着负荷的增大而下降
我们使用下图来说明拥塞控制的作用
横坐标是输入负载,代表单位时间内输入给网络的分组数量
纵坐标是吞吐量,代表单位时间内从网络输出的分组数量
具有理想拥塞控制的网络,在吞吐量达到饱和之前,网络吞吐量应等于输入的负载,故吞吐量曲线是45°的斜线
但当输入负载超过某一限度时,吞吐量就不再增长而保持水平线:
也就是吞吐量达到饱和,这就表明输入的负载中有一部分损失掉了。
例如,输入到网络中的某些分组被某个节点丢弃了
虽然如此,网络的吞吐量仍然维持在其所能达到的最大值。
然而,实际的网络就很不同了,我们再来看这条吞吐量曲线
随着输入负载的增大,网络吞吐量的增长率逐渐减小,也就是在网络吞吐量还未达到饱和时,就已经有一部分的输入分组被丢弃了。
再来看下图:
当网络的吞吐量明显地小于理想的吞吐量时,网络就进入了轻度拥塞的状态。
更值得注意的是,当输入负载到达某一数值时,网络的吞吐量反而随着负载的增大而减小,这是网络就进入了拥塞状态。
当输入负载继续增大到某一数值时,网络的吞吐量就减小为0,此时网络就无法工作了,这就是所谓的死锁。
因此,进行拥塞控制是非常有必要的,实际的拥塞曲线,应该尽量接近理想的拥塞控制曲线。