调整 TCP Reno 参数以减少 20KB 大小的短流所经历的延迟?

网络工程 通讯协议 linux 拥塞
2021-07-26 17:10:20

我正在尝试调整 TCP reno 参数,以便在此处重现图 21 作者使用 TCP New Reno 作为拥塞控制算法。

我正在调整参数:

  1. rto_min = 10 毫秒
  2. 使用 ip route 将 sender cwnd 设置为 10
  3. 使用 ip route 将接收器 rwnd 设置为 10
  4. 禁用slow_start_after_idle
  5. 将 max rmem 和 wmem 设置为 16777216
  6. 默认情况下启用 ECN

所有其他选项都是内核 v 3.19 的默认选项

我的拓扑如下:我有两台通过 1Gbps 链路连接到交换机(由机器模拟)的机器和一个通过 1Gbps 链路连接到交换机的接收器。RTT 约为 590 微秒。
连接到接收器的交换机端口在拖尾模式下运行,最大缓冲区大小为 700KB,使用 tc-pfifo 实现

我使用 iperf3 生成流量。我使用 iperf3 创建了两个长期流,每个流都从一个发送者到公共接收者,如第 4.2.2 节所述。当我开始短流程时,我得到了 150 毫秒的完成时间。我知道队列已满,因此数据包被延迟。我也明白发送方没有使用慢启动并直接进入拥塞避免。我的理解有误吗?根据作者的说法,TCP New Reno 的短传输必须在 15-35 毫秒的数量级。

有人可以帮助我了解我哪里出错并提出可以帮助我克服这个问题的可能解决方案吗?

1个回答

上述问题已解决,我能够重现相同的数字。作者指定,对于 TCP,他们使用 100 个数据包作为缓冲区的限制。我使用 467 个数据包作为缓冲区深度。这是唯一的差异,在纠正后给出了作者获得的结果。不需要其他设置。使用了所有默认设置。

在整个过程中我学到了很多关于TCP的新东西,非常有趣。