计算机网络:TCP 的拥塞控制的一般原理

拥塞控制的一般原理

在某段时间,若对网络中某资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。这种现象称为拥塞 (congestion)。

若网络中有许多资源同时产生拥塞,网络的性能就要明显变坏,整个网络的吞吐量将随输入负荷的增大而下降。

出现拥塞的原因:

对资源需求 > 可用资源

增加资源能解决拥塞吗?

不能。这是因为网络拥塞是一个非常复杂的问题。简单地采用上述做法,在许多情况下,不但不能解决拥塞问题,而且还可能使网络的性能更坏。

网 络拥塞往往是由许多因素引起的。例如:

  • 增大缓存,但未提高输出链路的容量和处理机的速度,排队等待时间将会大大增加,引起大量超时重传,解决不了网络拥塞;
  • 提高处理机处理的速率会会将瓶颈转移到其他地方;

拥塞常常趋于恶化

如果一个路由器没有足够的缓存空间,它就会丢弃一些新到的分组。 但当分组被丢弃时,发送这一分组的源点就会重传这一分组,甚至可能还要重传多次。

这样会引起更多的分组流入网络和被网络中的路由器丢弃。

可见拥塞引起的重传并不会缓解网络的拥塞,反而会加剧网络的拥塞。

示例通俗解释:

可以用一个简单的餐厅服务例子来解释这个现象,从而让人更容易理解:

想象一下,你在一家非常繁忙的餐厅就餐。这家餐厅只有有限的厨房空间(类似于路由器的缓存空间)。每次有新订单(分组)进来,如果厨房已经满了,厨师就不得不把新订单的食材丢掉(丢弃分组)。

然而,当你的订单被丢弃后,你就会再重新下单(重传分组)。如果你的订单一次又一次地被丢弃,你可能会不断地下单(频繁重传),希望最终能有机会被处理。

与此同时,其他顾客也在做同样的事情——他们的订单也不断被丢弃,然后他们也反复重新下单。结果,餐厅的订单系统变得越来越拥挤(网络拥塞加剧),厨师更加难以处理所有进来的订单。这不仅没有解决问题,反而造成了更多的混乱和延误。

这个例子展示了,在网络中,当路由器没有足够的缓存空间导致分组丢失时,源点的重传行为实际上会增加网络的负担,加剧拥塞问题,而不是缓解它。

拥塞控制与流量控制的区别

拥塞控制就是防止过多的数据注入到网络中,使网络中的路由器或链路不致过载。

拥塞控制所要做的都有一个前提,就是网络能够承受现有的网络负荷。

拥塞控制是一个全局性的过程,涉及到所有的主机、所有的路由器,以及与降低网络传输性能有关的所有因素。


流量控制往往指点对点通信量的控制,是个端到端的问题(接收端控制发送端)。

流量控制所要做的就是抑制发送端发送数据的速率,以便使接收端来得及接收。

拥塞控制所起的作用

拥塞控制的一般原理

实践证明,拥塞控制是很难设计的,因为它是一个动态的(而不是静态的)问题。

当前网络正朝着高速化的方向发展,这很容易出现缓存不够大而造成分组的丢失。但分组的丢失是网络发生拥塞的征兆而不是原因。

在许多情况下,甚至正是拥塞控制本身成为引起网络性能恶化甚至发生死锁的原因。这点应特别引起重视。

开环控制和闭环控制

开环控制方法就是在设计网络时事先将有关发生拥塞的因素考虑周到,力求网络在工作时不产生拥塞。

闭环控制方法是基于反馈环路的概念。属于闭环控制的有以下几种措施:

  • (1) 监测网络系统以便检测到拥塞在何时、何处发生。
  • (2) 将拥塞发生的信息传送到可采取行动的地方。
  • (3) 调整网络系统的运行以解决出现的问题。

监测网络的拥塞的指标

主要指标有:

  • 由于缺少缓存空间而被丢弃的分组的百分数;
  • 平均队列长度;
  • 超时重传的分组数;
  • 平均分组时延;
  • 分组时延的标准差,等等。

上述这些指标的上升都标志着拥塞的增长。

总结:

TCP的拥塞控制就像在高速公路上开车:起初,你会慢慢加速(慢启动),以防止堵车。然后,你逐渐增加速度(拥塞避免),直到发现前方车流变密或开始堵车(检测到丢包)。一旦发现拥堵,你就减速(乘法减小),然后再逐步恢复速度,找到一个既不太慢也不太快的合适速度(重新拥塞避免)。这种机制帮助网络在高峰期保持畅通,避免因拥塞导致的数据丢失和重

希望对你有帮助!加油!

若您认为本文内容有益,请不吝赐予赞同并订阅,以便持续接收有价值的信息。衷心感谢您的关注和支持!