4.9 TCP 拥塞控制算法

欢迎大家订阅【计算机网络】学习专栏,开启你的计算机网络学习之旅!

文章目录

  • [1 TCP 拥塞控制算法](#1 TCP 拥塞控制算法)
    • [1.1 慢开始(Slow Start)](#1.1 慢开始(Slow Start))
    • [1.2 拥塞避免(Congestion Avoidance)](#1.2 拥塞避免(Congestion Avoidance))
    • [1.3 快重传(Fast Retransmit)](#1.3 快重传(Fast Retransmit))
    • [1.4 快恢复(Fast Recovery)](#1.4 快恢复(Fast Recovery))
  • [2 主动队列管理(AQM)](#2 主动队列管理(AQM))
    • [2.1 FIFO 与尾部丢弃策略](#2.1 FIFO 与尾部丢弃策略)
    • [2.2 随机早期检测(RED)](#2.2 随机早期检测(RED))
    • [2.3 主动队列管理的挑战与发展](#2.3 主动队列管理的挑战与发展)

1 TCP 拥塞控制算法

根据 RFC 5681,TCP 拥塞控制包括四个关键算法:慢开始拥塞避免快重传快恢复 。这些算法通过动态调整拥塞窗口大小,确保数据流的高效传输,避免网络拥塞。

1.1 慢开始(Slow Start)

①目的

探测网络的负载能力,避免过早地过载网络。

②算法

从小到大逐渐增大拥塞窗口。

初始时,拥塞窗口通常为1个报文段,每收到一个确认报文,拥塞窗口增加1个最大报文段大小(SMSS)。这种增长方式是指数级的,迅速提升传输速率。

③慢开始门限(ssthresh)

当拥塞窗口达到一定大小时,TCP会切换到拥塞避免 阶段。ssthresh定义了慢开始和拥塞避免之间的分界点

④传输轮次

传输轮次强调把拥塞窗口 cwnd 所允许发送的报文段都连续发送出去,并收到了对已发送的最后一个字节的确认。

例如:拥塞窗口 cwnd = 4,这时的往返时间 RTT 就是发送方连续发送 4 个报文段,并收到这 4 个报文段的确认,总共经历的时间。

一个传输轮次所经历的时间 = 往返时间 RTT

1.2 拥塞避免(Congestion Avoidance)

①目的

让拥塞窗口 cwnd 缓慢地增大,避免出现拥塞。

②算法

当拥塞窗口达到慢开始门限(ssthresh)后,TCP会转入拥塞避免阶段。在此阶段,拥塞窗口的增长采用加法增大(AIMD)策略,即每经过一个往返时间(RTT),拥塞窗口增加1个报文段(SMSS)。
增长速度较慢,避免过快增加窗口导致网络过载。

【示例】









【注意】

  • "慢开始"是指一开始向网络注入的报文段少,并不显指拥塞窗口cwd增长速度慢;
  • "拥塞避免"并非指完全能够避免拥塞,而是指在拥塞避免阶段将拥塞窗口控制为按线性规律增长,使网络比较不容易出现拥塞

1.3 快重传(Fast Retransmit)

①目的

减少因丢包引起的延迟,快速恢复数据传输。

②算法
当发送方连续收到三个重复的确认报文时,TCP立即重传丢失的报文段,而无需等待超时重传。这样可以减少丢包后的等待时间,提高数据传输效率。

【示例】

③作用

使整个网络的吞吐量提高约 20%

1.4 快恢复(Fast Recovery)

当发送端收到连续三个重复的确认时,不执行慢开始算法,而是执行快恢复算法 FR (Fast Recovery) 算法。

①目的

避免丢包后进入慢开始,快速恢复数据传输速率。

②算法

在快重传后,TCP不会回到慢开始阶段,而是执行快恢复算法。此时,慢开始门限 设置为当前拥塞窗口的一半,拥塞窗口减小并迅速进入拥塞避免阶段。这样可以减少网络的震荡,保证网络高效运行。

【示例】

【TCP拥塞控制流程图】

【练习】

2 主动队列管理(AQM)

TCP 拥塞控制与网络层的队列管理策略密切相关。路由器的队列管理方式会影响到TCP的性能,特别是重传和拥塞的发生。

2.1 FIFO 与尾部丢弃策略

最简单的队列管理策略是FIFO(First In First Out) ,即按到达顺序处理数据包。若队列已满,采用尾部丢弃策略 (tail-drop policy),丢弃新到达的分组。

该策略的问题在于:

  • 丢包会导致发送方进行重传,可能触发TCP进入慢开始阶段,降低网络吞吐量。
  • 在高负载情况下,尾部丢弃可能导致网络全局同步,即多个TCP连接同时进入慢开始状态,严重影响性能。

2.2 随机早期检测(RED)

为避免尾部丢弃导致的全局同步问题,提出了随机早期检测(RED) 机制。在RED中,路由器根据队列的平均长度决定是否丢弃包:

  • 队列长度小于最小阈值(THmin):正常排队;
  • 队列长度超过最大阈值(THmax):丢弃包;
  • 队列长度介于两个阈值之间:按一定概率丢弃包。


通过这种方式,RED能够更早地检测到网络拥塞,并减少全局同步的发生。

2.3 主动队列管理的挑战与发展

尽管RED等AQM算法能够在一定程度上优化队列管理,但它们仍存在一些问题,如过于复杂的参数设置和对网络实际负载的响应迟缓。

随着网络需求的不断变化,新的AQM算法不断涌现,以期解决这些问题。目前,新的AQM算法仍在实验阶段,尚未形成统一的标准。

相关推荐
代码欢乐豆1 小时前
计算机网络——期末复习(2)1-3章考试重点
网络·计算机网络·智能路由器
重生之我在VS写bug2 小时前
【计算机网络2】计算机网络的性能能指标
计算机网络
njnu@liyong4 小时前
计算机网络-HTTP协议
网络协议·计算机网络·http
Heaven6454 小时前
4.8 TCP 的拥塞控制
网络协议·tcp/ip·计算机网络·智能路由器
黑客Jack6 小时前
【网络安全】浅谈IP溯源的原理及方法
网络·tcp/ip·web安全
Danileaf_Guo9 小时前
H3C路由器配置基于路由的IPsec VPN
运维·服务器·网络·智能路由器
阿落ovo11 小时前
访问控制列表ACL
java·运维·服务器·网络·数据库·华为·智能路由器
hrhcode12 小时前
计算机网络知识点全梳理(一.TCP/IP网络模型)
网络·tcp/ip·计算机网络
4v1d12 小时前
Cisco Packet Tarcer配置计网实验笔记
网络·笔记·智能路由器