问题标签 [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.
android - 你能改变TCP拥塞控制算法吗?
从 Android 应用程序中,您可以更改 TCP 拥塞控制算法吗?Android API 中是否有获取和设置 TCP 拥塞控制算法的函数?在 Linux 中,您可以读取或写入/proc/sys/net/ipv4/tcp_congestion_control
以获取或设置算法。Android中是否存在这样的事情?
java - 如何在java中模拟TCP(流量控制和拥塞控制)?
我正在尝试在java中模拟流量控制和拥塞控制。我有一个带有 TCP-Client 和 TCP-Server 的简单代码,但我需要将它分成两部分:流量控制和拥塞控制。然后,我需要在 WireShark 中捕获 TCP 数据包以查看拥塞窗口行为。
我一直在阅读它,但我还没有找到关于这个主题的任何内容。有人会给我一个从这个开始的想法吗?
我已经阅读了 Kurosse 的 Networking,但它只是给出了 TCP 工作原理的说明性示例。
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 算法的行为没有影响。
为什么会这样?我不知道...
你能给我一点提示吗?我感激你!
linux - 如何使用 C++ 代码中的 setsockopt() 调用更改 TCP 拥塞控制算法
是否可以使用Linux 中C++ 代码中的setsockopt调用来更改TCP 拥塞控制算法,反之亦然?
我正在寻找这样做的示例代码。Cubic
Reno
tcp - 如何在 Windows 上启用 TCP BBR?
可以使用以下命令在 linux 中启用 TCP BBR:
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
正如这里所解释的
你如何在 Windows 10 机器上做同样的事情?
gstreamer - 在 Gstreamer 对象之间传输信息的最佳方法
在 gstreamer 管道中,我需要一个下游元素(拥塞控制模块)动态更改上游元素(编码器)的属性。传输此信息的最佳机制是什么?
sockets - TCP 与 UDP 套接字中的带宽消耗是多少?
我知道我的问题有很多类似的问题,但我需要一个关于我的问题的明确答案。众所周知,TCP是面向连接的,而UDP是无连接的。如果在同一个网络上,我创建了两个 UDP 套接字(服务器、客户端)和两个 TCP 套接字(服务器、客户端),那么谁会消耗更多带宽?我的意思是,据我所知,牢记面向连接的术语,我假设 TCP 将一直消耗更多带宽,而 UDP 仅在发送数据时才会消耗带宽。
你能帮我解决这个问题吗?
networking - 为什么在快速恢复期间会出现 TCP 拥塞窗口膨胀?
TCP 快速恢复算法描述如下(来自 TCP 图解 vol. 1)。我无法理解的是在第 1 步中,为什么 CWD 窗口膨胀是分段大小的三倍?
- 当收到第三个重复 ACK 时,将 ssthresh 设置为当前拥塞窗口 cwnd 的一半。重新传输丢失的段。 将 cwnd 设置为 ssthresh 加上段大小的 3 倍。
- 每次另一个重复的 ACK 到达时,将 cwnd 增加分段大小并传输一个数据包(如果 cwnd 的新值允许)。
- 当下一个确认新数据的 ACK 到达时,将 cwnd 设置为 ssthresh。这应该是来自步骤 1 的重传的 ACK,即重传后的一个往返时间。此外,此 ACK 应确认在丢失数据包和收到第一个重复 ACK 之间发送的所有中间段。这一步是避免拥塞,因为我们将速度减慢到数据包丢失时的一半。
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排队?
java - 我将如何编写此代码以使其读取具有未知行数的文件?
这是我的代码,但是,它只读取 19 行大小的文件。我知道我可以使用ArrayList
,但我不确定如何去做。我希望我的问题是有道理的。如果它可以帮助您更好地理解,请把代码的目的放在下面。