Congestion Control in Data Networks and Internets

Introduction

Congestion occurs when number of packets transmitted approaches network capacity

Objective of congestion control:

– keep number of packets below level at which performance drops off dramatically

以下是对**数据网络与互联网中的拥塞控制(Congestion Control in Data Networks and Internets)**的详细解读,重点是拥塞控制的背景、产生原因、目标及其在网络性能中的意义。

一、拥塞控制简介(Introduction to Congestion Control)

1. 什么是拥塞?

拥塞是指网络中的流量超过了其可用资源(例如带宽、处理能力或缓冲区)的承载能力,导致网络性能下降的现象。具体表现为:

• 数据包的延迟增加。

• 数据包丢失(由于路由器或交换机的缓冲区满)。

• 网络吞吐量下降,甚至崩溃。

2. 拥塞如何发生?

拥塞通常在以下情况下发生:

高负载:大量数据流同时进入网络,导致传输链路或路由器处理能力不足。

网络资源受限:某些网络节点的带宽、计算能力或内存不足,导致数据包无法及时转发。

突发流量:某些应用程序(如视频流、文件传输)突然产生高流量,超过网络的短时承载能力。

拥塞的本质

当网络中传输的数据包数量接近或超过网络的容量时,网络的正常数据传输性能会受到显著影响。

二、拥塞控制的目标(Objective of Congestion Control)

1. 保持网络性能的稳定性

拥塞控制的主要目标是防止网络进入拥塞崩溃状态,即在网络负载增加时,避免性能急剧下降。

无拥塞状态:当网络负载较低时,增加传输速率会提高吞吐量。

拥塞状态:当负载接近网络容量时,传输速率的进一步增加可能导致大量数据包丢失或延迟,网络性能显著下降。

2. 优化资源利用

拥塞控制旨在高效利用网络资源,尽可能接近网络的最大吞吐量,同时避免过载。

3. 公平性

确保网络资源的公平分配,避免某些数据流占用过多带宽而导致其他流受阻。

4. 动态适应性

能够动态适应网络条件的变化,例如负载波动、带宽变化、链路故障等。

三、拥塞对网络性能的影响

当网络流量接近或超过容量时,会引发以下问题:

1. 延迟(Delay)

• 数据包在网络中等待转发时的队列长度增加,导致延迟显著上升。

• 在严重拥塞情况下,延迟可能达到不可接受的水平,影响实时应用(如语音通话、视频会议)。

2. 数据包丢失(Packet Loss)

• 路由器或交换机的缓冲区被占满时,新到的数据包会被丢弃。

• 数据包丢失会导致传输协议(如TCP)触发重传机制,进一步增加网络负载。

3. 吞吐量(Throughput)下降

• 随着拥塞的加剧,实际的网络吞吐量可能下降到远低于网络的理论容量。

• 这是由于大量数据包丢失和重传,浪费了网络资源。

4. 网络崩溃(Network Collapse)

• 在严重的拥塞情况下,网络可能陷入崩溃状态,无法有效传输任何数据。

四、拥塞控制的基本原则

1. 主动控制(Preventive Control)

• 在网络流量接近容量之前采取措施,防止拥塞发生。

• 例如,通过限制数据发送速率或优化流量调度来避免超载。

2. 被动控制(Reactive Control)

• 在拥塞发生后检测拥塞,并采取措施缓解问题。

• 例如,减少发送窗口大小或丢弃过载数据包。

3. 网络性能的平衡

拥塞控制需要在以下两个方面找到平衡:

高利用率:尽量接近网络容量,避免资源浪费。

低延迟与低丢包率:防止过载导致性能下降。

五、拥塞控制的具体方法

拥塞控制通常从两方面入手:

  1. 终端设备的拥塞控制(End-to-End Congestion Control):由发送端和接收端直接调节数据发送速率。

  2. 网络层的拥塞控制(Network-Assisted Congestion Control):由网络设备(如路由器)协助调节。

以下是一些常见的方法:

1. 终端设备的拥塞控制:TCP协议的拥塞控制机制

a. TCP的核心机制

TCP(传输控制协议)内置了拥塞控制功能,通过动态调整发送窗口大小控制流量。其核心机制包括:

  1. 慢启动(Slow Start)

• 发送端初始以较低速率发送数据,并逐步加快。

• 通过指数增长发送窗口大小,快速找到网络的最大吞吐量。

  1. 拥塞避免(Congestion Avoidance)

• 当接近网络容量时,发送窗口以线性方式增长。

• 防止网络因过快增长进入拥塞状态。

  1. 快速重传和快速恢复(Fast Retransmit and Fast Recovery)

• 当检测到数据包丢失(通过重复ACK信号),立即重传丢失的数据包。

• 同时降低发送窗口大小,快速适应网络状态。

b. TCP中的拥塞窗口(Congestion Window, CWND)

• CWND是发送端控制流量的一个动态窗口大小。

• 根据网络反馈,CWND动态调整:

增加:如果网络没有拥塞,CWND逐步增加,提升发送速率。

减少:如果检测到拥塞(如数据包丢失),CWND减小,降低发送速率。

2. 网络层的拥塞控制

a. 主动队列管理(Active Queue Management, AQM)

在路由器中,通过管理队列中的数据包,减少拥塞发生的可能性。常见的AQM算法包括:

  1. RED(Random Early Detection)

• 路由器在缓冲区接近满载时,随机丢弃部分数据包。

• 丢包信号反馈给发送端,提醒其减缓发送速率。

• 优点:在拥塞发生前主动干预,避免全面拥塞。

  1. Explicit Congestion Notification (ECN)

• 通过标记而不是丢弃数据包,通知发送端减少流量。

• 避免了数据包丢失的代价。

b. 流量整形(Traffic Shaping)

通过在源头控制数据流量的速率和模式,避免在网络中引发拥塞。例如:

令牌桶算法(Token Bucket Algorithm):允许短时间内的突发流量,但限制长期流量速率。

漏桶算法(Leaky Bucket Algorithm):平滑流量模式,限制突发流量。

3. 多路径传输与负载均衡

通过分散数据流量,避免某条路径过载。

多路径传输控制协议(MPTCP):利用多条路径同时传输数据,提升吞吐量和可靠性。

负载均衡器:将流量分配到多条链路或多台设备上,避免单点过载。

六、拥塞控制的挑战与现代技术

1. 实时流量的拥塞控制

传统拥塞控制机制(如TCP)对实时流量(如视频流、语音通话)效果有限。现代方法包括:

QUIC协议:基于UDP,内置拥塞控制和快速重传机制,优化实时应用。

OFDMA:在无线网络中动态分配资源,避免无线链路的拥塞。

2. 大规模分布式系统

在数据中心和云计算环境中,大规模分布式系统需要高效的拥塞控制算法。例如:

数据中心TCP(DCTCP):针对低延迟、高吞吐量需求的优化版本TCP。

BBR拥塞控制算法:根据带宽和延迟动态调整流量。

七、总结

拥塞控制是现代网络设计中的关键技术,其目标是:

• 保持网络流量在可控范围内,避免性能崩溃。

Queuing Theory

Data network is a network of queues

If arrival rate > transmission rate

then queue size grows without bound and packet delay goes to infinity

排队论(Queuing Theory)在数据网络中的应用

截屏2024-12-20 20.35.37.png

At Saturation Point, 2 Strategies

Discard any incoming packet if no buffer available

Saturated node exercises flow control over neighbors

– May cause congestion to propagate throughout network

以下是对 “At Saturation Point, 2 Strategies” 的详细解读。这里讨论了在网络节点(如路由器、交换机)达到**饱和点(Saturation Point)**时的两种常见策略,以及它们的影响和适用场景。

Ideal Performance

I.e., infinite buffers, no overhead for packet transmission or congestion control