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. 网络性能的平衡
拥塞控制需要在以下两个方面找到平衡:
• 高利用率:尽量接近网络容量,避免资源浪费。
• 低延迟与低丢包率:防止过载导致性能下降。
五、拥塞控制的具体方法
拥塞控制通常从两方面入手:
终端设备的拥塞控制(End-to-End Congestion Control):由发送端和接收端直接调节数据发送速率。
网络层的拥塞控制(Network-Assisted Congestion Control):由网络设备(如路由器)协助调节。
以下是一些常见的方法:
1. 终端设备的拥塞控制:TCP协议的拥塞控制机制
a. TCP的核心机制
TCP(传输控制协议)内置了拥塞控制功能,通过动态调整发送窗口大小控制流量。其核心机制包括:
- 慢启动(Slow Start):
• 发送端初始以较低速率发送数据,并逐步加快。
• 通过指数增长发送窗口大小,快速找到网络的最大吞吐量。
- 拥塞避免(Congestion Avoidance):
• 当接近网络容量时,发送窗口以线性方式增长。
• 防止网络因过快增长进入拥塞状态。
- 快速重传和快速恢复(Fast Retransmit and Fast Recovery):
• 当检测到数据包丢失(通过重复ACK信号),立即重传丢失的数据包。
• 同时降低发送窗口大小,快速适应网络状态。
b. TCP中的拥塞窗口(Congestion Window, CWND)
• CWND是发送端控制流量的一个动态窗口大小。
• 根据网络反馈,CWND动态调整:
• 增加:如果网络没有拥塞,CWND逐步增加,提升发送速率。
• 减少:如果检测到拥塞(如数据包丢失),CWND减小,降低发送速率。
2. 网络层的拥塞控制
a. 主动队列管理(Active Queue Management, AQM)
在路由器中,通过管理队列中的数据包,减少拥塞发生的可能性。常见的AQM算法包括:
- RED(Random Early Detection):
• 路由器在缓冲区接近满载时,随机丢弃部分数据包。
• 丢包信号反馈给发送端,提醒其减缓发送速率。
• 优点:在拥塞发生前主动干预,避免全面拥塞。
- 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)在数据网络中的应用

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