问题标签 [congestion-control]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
761 浏览

android - 你能改变TCP拥塞控制算法吗?

从 Android 应用程序中,您可以更改 TCP 拥塞控制算法吗?Android API 中是否有获取和设置 TCP 拥塞控制算法的函数?在 Linux 中,您可以读取或写入/proc/sys/net/ipv4/tcp_congestion_control以获取或设置算法。Android中是否存在这样的事情?

0 投票
1 回答
731 浏览

java - 如何在java中模拟TCP(流量控制和拥塞控制)?

我正在尝试在java中模拟流量控制和拥塞控制。我有一个带有 TCP-Client 和 TCP-Server 的简单代码,但我需要将它分成两部分:流量控制和拥塞控制。然后,我需要在 WireShark 中捕获 TCP 数据包以查看拥塞窗口行为。

我一直在阅读它,但我还没有找到关于这个主题的任何内容。有人会给我一个从这个开始的想法吗?

我已经阅读了 Kurosse 的 Networking,但它只是给出了 TCP 工作原理的说明性示例。

0 投票
1 回答
137 浏览

networking - 拥塞发生时 TCP 流的速率如何变化

感谢您点击我的问题。

我正在做一个小实验来了解 TCP 流在拥塞时的行为。

在这个实验中,我发现当拥塞发生时,tcp 流的速率比我想象的要大得多。

由于拥塞控制,我认为它的速率最多应该减半。

但在我的实验中并没有。

你能给我一点提示吗?下面是我的实验。

感谢您再次点击



我通过使用Mininet由两台主机和一个交换机组成的小型网络。

H1 - S1 - H2 , 所有链路带宽 80Mbps

iperf3然后,我使用如下方式生成了从 H2 到 H1 的流量

这意味着 H2 以 70Mbit/s 的速度向 H1 发送 TCP 数据包

(iperf3 在应用层控制它的 TCP 速率。)

然后我们可以在H1(服务器端)看到报告

此时,我通过使用限制 S1 端口(s1-eth1,从 H2 到 H1 的出口)linux tc

然后结果如下

如您所见,它的速率约为 40Mbps。

我认为当拥塞发生时,TCP状态应该变成slow start然后它的速率应该变得更小。但它没有。

我检查了iperf3源代码,但它只是使 TCP 流量从应用层传输到一定数量。因此它对 TCP 算法的行为没有影响。

为什么会这样?我不知道...

你能给我一点提示吗?我感激你!

0 投票
1 回答
2096 浏览

linux - 如何使用 C++ 代码中的 setsockopt() 调用更改 TCP 拥塞控制算法

是否可以使用Linux 中C++ 代码中的setsockopt调用来更改TCP 拥塞控制算法,反之亦然? 我正在寻找这样做的示例代码。CubicReno

0 投票
1 回答
3706 浏览

tcp - 如何在 Windows 上启用 TCP BBR?

可以使用以下命令在 linux 中启用 TCP BBR:

net.core.default_qdisc=fq

net.ipv4.tcp_congestion_control=bbr

正如这里所解释的

你如何在 Windows 10 机器上做同样的事情?

0 投票
1 回答
89 浏览

gstreamer - 在 Gstreamer 对象之间传输信息的最佳方法

在 gstreamer 管道中,我需要一个下游元素(拥塞控制模块)动态更改上游元素(编码器)的属性。传输此信息的最佳机制是什么?

0 投票
1 回答
524 浏览

sockets - TCP 与 UDP 套接字中的带宽消耗是多少?

我知道我的问题有很多类似的问题,但我需要一个关于我的问题的明确答案。众所周知,TCP是面向连接的,而UDP是无连接的。如果在同一个网络上,我创建了两个 UDP 套接字(服务器、客户端)和两个 TCP 套接字(服务器、客户端),那么谁会消耗更多带宽?我的意思是,据我所知,牢记面向连接的术语,我假设 TCP 将一直消耗更多带宽,而 UDP 仅在发送数据时才会消耗带宽。

你能帮我解决这个问题吗?

0 投票
1 回答
305 浏览

networking - 为什么在快速恢复期间会出现 TCP 拥塞窗口膨胀?

TCP 快速恢复算法描述如下(来自 TCP 图解 vol. 1)。我无法理解的是在第 1 步中,为什么 CWD 窗口膨胀是分段大小的三倍?

  1. 当收到第三个重复 ACK 时,将 ssthresh 设置为当前拥塞窗口 cwnd 的一半。重新传输丢失的段。 将 cwnd 设置为 ssthresh 加上段大小的 3 倍。
  2. 每次另一个重复的 ACK 到达时,将 cwnd 增加分段大小并传输一个数据包(如果 cwnd 的新值允许)。
  3. 当下一个确认新数据的 ACK 到达时,将 cwnd 设置为 ssthresh。这应该是来自步骤 1 的重传的 ACK,即重传后的一个往返时间。此外,此 ACK 应确认在丢失数据包和收到第一个重复 ACK 之间发送的所有中间段。这一步是避免拥塞,因为我们将速度减慢到数据包丢失时的一半。
0 投票
0 回答
49 浏览

congestion-control - 如何理解 BBR 的两个条件“费率平衡”和“满管”

以下内容抄自 BBR 论文:https ://queue.acm.org/detail.cfm?id=3022184

“单独的速率平衡条件并不能确保没有队列,只是它不能改变大小(例如,如果连接开始时将其 10 数据包初始窗口发送到 5 数据包 BDP,然后恰好在瓶颈处运行率,10 个初始数据包中有 5 个填满了管道,因此多余的数据在瓶颈处形成了一个无法消散的常设队列。同样,满管道条件并不能保证没有队列(例如,连接在 BDP/ 中发送 BDP 2 个突发获得完全的瓶颈利用率,但平均队列为 BDP/4)。”

有几点让我感到困惑:

1、“速率平衡条件意味着数据包到达率等于BtlBw”:那么为什么只有速率平衡而满管不能保证没有队列呢?速率平衡如何只产生大于完整管道的字节?

2、“只是它不能改变大小”:“大小”是什么意思?</p>

3、为什么会有BDP/4排队?

0 投票
2 回答
51 浏览

java - 我将如何编写此代码以使其读取具有未知行数的文件?

这是我的代码,但是,它只读取 19 行大小的文件。我知道我可以使用ArrayList,但我不确定如何去做。我希望我的问题是有道理的。如果它可以帮助您更好地理解,请把代码的目的放在下面。

此图像是代码编写用途的说明。它可能只是额外的信息,但我把它放在这里以防它更好地帮助解释我的问题。