问题标签 [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 回答
1179 浏览

networking - TCP 中连续重复 ACK 中的重传

在 TCP 中的快速重传逻辑中,TCP 在发送方收到 3 个重复的 ACK 时重传数据包。但是,如果发送方收到 6 个重复的 ACKS 怎么办?

以下程序是我的想法,

1) 发送方发送大量具有大窗口大小的数据包

2) 第一个数据包被丢弃

3) 接收方发送包含第一个数据包的 seq # 的 ACKS。其他 ACK 将具有相同的 ack 号。(例如,发送方发送 1,2,3,4,5,6,7,数据包 1 被丢弃。然后,接收方发送 ACK 1,1,1,1,1,1,1)

4) 发送方得到 3 个 dup ack 并重新传输丢弃的数据包 但是,接收方仍然发送 6 个 dup ack,因为接收方没有得到重新传输的数据包。因此,接收方将发送重复的 ACK,直到收到丢弃的数据包

5) 发送方再次获得 3 个 dup ack,并重新发送数据包。

因此,发送方会反复重传数据包。我觉得这很奇怪。上述过程(场景)有什么问题吗?或者是否有任何 TCP 逻辑可以防止上述问题?

0 投票
0 回答
1160 浏览

networking - TCP 拥塞窗口图 (ns-3)

我正在尝试绘制 TCP 发送方的拥塞窗口大小图。

我正在使用以下示例并使用 ns-3 的开发分支。

http://intronetworks.cs.luc.edu/current/html/ns3.html

此示例在 2 个节点 A 和 C 之间实现了一个简单的点对点拓扑,如下图所示。

A ----------- B ---------------- C

10Mbps ----- 800Kbps

当我运行这个例子时,我得到下图。

在此处输入图像描述

由于拥塞导致丢包,我期待看到典型的 cwnd 锯齿。

我在这里错过了什么吗?

编辑:

经过进一步调查,这可能是由于 Ipv4AddressHelper 实施的 TrafficControl(参见 1.)。在 src/internet/helper/ipv4-address-helper.cc 中注释以下代码行时

我得到了这个新图表 在此处输入图像描述

需要进一步调查这个问题。

、ns-3中流量控制模块的设计与实现

0 投票
2 回答
3051 浏览

webrtc - WebRTC - WebRTC (RRTCC) 的 Google 拥塞控制算法如何控制拥塞?

我是 RRTCC 的新手,我真的不明白 RRTCC 如何调整传入媒体比特率。我试图阅读 RRTCC 的互联网草案,但无法弄清楚:https ://datatracker.ietf.org/doc/html/draft-alvestrand-rmcat-congestion-03

它根据延迟和损失计算估计的带宽,那么下一步是什么?怎么能直接控制发送速率来控制拥塞呢?

0 投票
1 回答
45 浏览

algorithm - 链路饱和/容量优化算法

我的问题与电信有关,但它仍然是纯粹的编程挑战,因为我使用的是软开关。

目标:

  • 创建呼叫路由引擎使用的算法,以使可用链路容量完全饱和,流量以尽可能高的速率出售

情况:

  • 有固定容量为 30 个语音通道的通信链路 (E1/T1)(1 个通道 = 最终用户之间的一个语音呼叫,因此每个链路上最多可以有 30 个并发呼叫)
  • 链接每月的运行成本是固定的,所以最好是一直充分利用它(固定成本除以更多分钟会产生更高的利润)
  • 有用户通过向呼叫路由引擎发送呼叫来“争夺”链路容量
  • 每个用户可以在给定时间消耗随机链路容量,有可能一个用户一次占用全部容量(即 peek hours)但在非高峰时段不消耗容量
  • 每个用户每分钟的通话率不同
  • 理想情况:链路被充分利用(24/7/365),每分钟呼叫率最高的用户拨打电话

可用控制:

  • 呼叫路由引擎可以接受呼叫并使用此链接发送或拒绝呼叫

可用数据:

  • 当前链接使用情况
  • 每分钟用户率
  • 每位用户每分钟的最近通话次数
  • 用户通话记录(访问成本很高,但可能)

例子:

  • 用户 A 的费率为每分钟 1 美分,B 0.8 美分,C 0.7 美分
  • 如果用户 A 可以填满链路容量,最好接听用户 A 的来电并拒绝其他人
  • 但是用户A通常不能填满整个链路容量,我们需要接听其他人的电话来填补空白
  • 我们无法控制用户在给定时刻将发送多少电话,因此很难计划接受哪些电话以及拒绝哪些电话

任何想法或建议的方法来解决这个问题?

0 投票
1 回答
165 浏览

networking - TFRC(tcp友好速率控制)中没有丢包时如何计算丢包率p?

当出现丢包时,我知道计算 p 的方法(我在 RFC 文档中阅读)。

但是在没有丢包的情况下,如何计算呢?该文件没有显示任何内容。

如果损失事件率 p 为零,则 tfrc 中方程的分母为 0。

公式如下: 在此处输入图像描述

文件是 rfc5348:https ://www.rfc-editor.org/rfc/rfc5348

0 投票
1 回答
337 浏览

linux - 我可以做些什么来减少 ubuntu 中 TCP 拥塞控制的影响?

我正在进行一项实验,在该实验中我随机打开和关闭网络。我希望一旦我再次打开网络,数据包交换就会开始。但是,我看到一系列连续的开启和关闭期间发生,在此期间即使在开启期间也没有交换数据包。

我怀疑这是因为作为 T​​CP 拥塞控制的一部分实施的指数退避。可能关闭和开启周期的持续时间会下降,以至于下一次超时位于关闭周期内,并且由于指数性质,下次它会加倍。这影响了我的实验结果。我可以更改哪些 linux 内核参数,以便摆脱指数退避的影响,而是在网络再次启动时立即看到数据包交换?

0 投票
2 回答
1893 浏览

networking - How does sshuttle avoid of TCP-over-TCP curse?

sshuttle claims that it solves much discussed problem of TCP-over-TCP meltdown.

sshuttle assembles the TCP stream locally, multiplexes it statefully over an ssh session, and disassembles it back into packets at the other end. So it never ends up doing TCP-over-TCP. It’s just data-over-TCP, which is safe.

But from the point of view of a program it maintains a TCP connection to a target server with all that comes with it (read exponential timeouts), which is layered about other TCP session since SSH doesn't yet just work on udp. This very much looks like TCP-over-TCP.

What is the trick here? Is the problem really solved by sshuttle?

I tried reading source code, but so far didn't find the answer.

More importantly, how exactly do they do it? If one wants to reimplement it in barebones, where one should look for inspiration?

0 投票
1 回答
4584 浏览

congestion-control - 令牌桶上的数字

问题

对于使用令牌桶算法进行拥塞控制的主机,令牌桶容量为1兆字节,最大输出速率为每秒20兆字节。令牌以每秒 10 兆字节的速度维持输出的速度到达。令牌桶目前已满,机器需要发送 12 兆字节的数据。传输数据所需的最短时间为 _____________ 秒。

我的方法

最初令牌桶已满。它排空的速率是 (20-10) Mbps。清空 1 mb 令牌桶的时间是 1/10,即 0.1 秒

但答案是 1.2sec 。

0 投票
1 回答
652 浏览

tcp - TCP 拥塞算法 - Tcp Westwood 还是 Tcp westwood plus?

我已经在我的 linux 2.16.36 中执行了这个“ ls /lib/modules/ uname -r/kernel/net/ipv4/ ”。在那里我可以看到算法列表。tcp_westwood 列在该列表中。那是 tcp_westwood 还是 tcp_westwood+ ?

0 投票
1 回答
576 浏览

networking - 慢启动 TCP 拥塞窗口方程

这里获取状态驱动代码:

有几件事我不明白。

  1. cwnd 如何用“cwnd = cwnd + MSS”“指数地”加倍。当它只是一个线性增量时,我很难理解这是一个指数斜坡。

  2. 我也不明白“cwnd = cwnd+ mss*(mss/cwnd)”背后的数学原理。cwnd 应该是线性增加的,这个公式是如何实现这个结果的,当它看起来更像一个平方级数时(mss^2/cwnd)。

我对这些计算如何执行所描述的任务感到有点困惑。谁能解释一下他们是怎么做的?

谢谢