📜  比例速率降低 - TCP 丢失恢复算法(1)

📅  最后修改于: 2023-12-03 15:11:00.532000             🧑  作者: Mango

比例速率降低 - TCP 丢失恢复算法

简介

比例速率降低 - TCP 丢失恢复算法(Proportional Rate Reduction for TCP, PRR)是一种网络拥塞控制算法,用于当 TCP 数据包丢失时自适应地调整发送速率,减少网络拥塞。

在传统的 TCP 丢失恢复算法中,当 TCP 数据包丢失时,TCP 发送方会进入慢启动状态,将发送速率降低到原始值的一半。但是,这种算法可能导致网络中出现更多的拥塞,造成更多的数据包丢失。

PRR 算法则不同,它通过在丢失数据包后对发送速率进行动态调整,降低拥塞程度,避免进一步的数据包丢失。

工作原理

PRR 算法的主要思想是在 TCP 发送方收到 Acknowledgment(ACK)时测量带宽并相应地调整发送速率。

当 TCP 数据包丢失时,TCP 发送方将发送速率降低到最小速率,并等待与丢失数据包相应的 ACK。当发送方接收到 Acknowledgment 时,它将测量从丢失点到 Acknowledgment 点的带宽并根据测量结果相应地调整发送速率。

PRR 算法的具体步骤如下:

  1. 将发送速率从丢失点速率下降到最小速率。
  2. 等待与丢失数据包相应的 ACK。
  3. 收到 ACK 后,计算从丢失点到 ACK 点之间的带宽。
  4. 将发送速率恢复到丢失点速率乘以接收速率与传输速率之比。
  5. 重复步骤 2-4 直到发送速率达到原始速率。
实现

PRR 算法可以在大多数现代 TCP 实现中找到。例如,在 Linux 内核中,TCP PRR 算法已经成为默认的 TCP 丢失恢复算法。

在 Linux 中,可以使用 sysctl 命令配置 PRR 算法。例如,要启用 PRR 算法,可以使用以下命令:

sysctl -w net.ipv4.tcp_congestion_control=prreno
总结

比例速率降低 - TCP 丢失恢复算法是一种有效的网络拥塞控制算法,可以避免数据包丢失和网络拥塞。该算法已经被广泛应用于现代 TCP 实现中,并已成为默认的 TCP 丢失恢复算法。