问题标签 [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.
linux - 为什么 Linux(较新版本)拥塞控制不遵循 RFC5681?
我只是在研究 TCP 拥塞控制。当我阅读关于慢启动的章节时,我转向RFC5681,我发现标准表明
- 如果 SMSS > 2190 字节:IW = 2 * SMSS 字节且不得超过 2 个段
- If (SMSS > 1095 bytes) and (SMSS <= 2190 bytes): IW = 3 * SMSS bytes and MUST NOT be more than 3 segments
- 如果 SMSS <= 1095 字节:IW = 4 * SMSS 字节且不得超过 4 个段
但是我在我的 ubuntu 服务器上进行了测试,并在 google 上查找了资料,我发现init cwnd
大约是 10。
我只是无法理解它。帮助。
tcp - 为什么在reno处于拥塞避免阶段时,在RTT之后cwnd没有立即增加?
我使用 tcpdump 通过从发件人下载文件来获取发件人的数据包。发件人使用 Tcp reno。但似乎 cwnd 在获得足够的确认后不会立即增加。见2张图片。 wireshark 中的详细信息,wireshark中的 tcptrace。
cwnd 实际上正在增加,但不是立即增加。我不知道为什么。
networking - 当我们超出网络容量时会发生网络拥塞吗?
我遵循了一个教程,据说当我们的网络超载或最大网络容量时会发生网络拥塞。在这种情况下,他们将网络容量称为我们的网络带宽(最大吞吐量)。
因此,这在理论上意味着如果 VPS 提供商提供无限带宽,那么我们将永远不会出现网络拥塞。它是否正确?
networking - 谁能帮我找到在 NS_3 的 Tcp Congestion ops 算法中存储的 dupack 的位置?
我无法找到存储 ACK 编号的变量。因此,我无法在 tcp 拥塞控制算法中找到 FAST 重传和快速恢复阶段的工作。
tcp - OMNeT++ 哪些 TCP 风格支持 ECN?
我正在使用带有 INET 4.2.1 的 OMNeT++ 5.6.2,并且我正在开发 ECN。我已经看到 TCP Reno(在 TcpReno.cc 文件中)检查是否在 receivedDataAck 函数中设置了 ECE 变量,并采取相应措施。但是我在 TCP Tahoe (TcpTahoe.cc) 或 TCP NewReno (TcpNewReno.cc) 中没有发现任何类似的东西。
ECN 部分是在其他地方还是没有实现?OMNeT++ 中的 TCP Reno 是否仅支持 ECN?
谢谢你。
tcp - 我们是否根据情况切换拥塞控制协议?
由于我们有不同的拥塞控制协议,并且在不同的情况下表现出色,我们是否根据情况切换拥塞控制协议?比如一个擅长有线,另一个擅长无线,并根据连接类型在这两者之间切换,或者这究竟是如何工作的
tcp - 客户端和服务器在通信时可以使用不同的拥塞算法吗?
我正在编写一个 http3(在 quic 上运行)库,并且需要由调用者选择不同的拥塞控制算法。我做了一些研究并阅读了这个:
在连接到 Internet 的计算机操作系统的协议栈中实现的算法有多种变体和版本。
我突然注意到,除了一些抽象理论之外,我之前从未想过拥塞控制算法是如何真正工作的(在 tcp 上)。所以这里有一些我不太清楚的问题。
- 客户端和服务器在通信时可以使用不同的拥塞算法吗?例如客户端使用 Reno,服务器使用 CUBIC?
- 如果是,这是客户端和服务器使用不同算法的任何缺点吗?
- 如果不是,服务器和客户端如何协商拥塞控制算法?
tcp - 这个 TCP 拥塞控制图中发生了什么?
这是传输的拥塞避免图,我知道当窗口大小大于 ssthresh 时会发生拥塞避免。当有超时丢失并且发生两件事时会发生慢启动,cwnd = 1,并且ssthresh是cwnd的一半。快速恢复类似,但 cwnd = ssthresh 和 ssthresh 为 1/2*cwnd。知道了这些,我不确定从 t=13 到最后的图表中发生了什么。
我唯一的猜测是快速恢复和慢启动同时发生。但我不确定这是否可能。 图形
linux - 如何在新的 TCP 内核模块中实现 get_info()
我正在尝试实现一个新的 TCP 拥塞控制内核模块,并希望在这里实现get_info()
类似bbr_get_info()或dctcp_get_info()。但是,看起来 dctcp 和 bbr info 的内容是在include/uapi/linux/inet_diag.hINET_DIAG_DCTCPINFO
中定义的,并且函数中使用了类似的枚举get_info()
,我的理解是如果不构建整个内核就无法更改它。所以我的问题是:有没有办法在这样的内核模块中实现get_info()
(或其他类似的方法将一些信息导出到用户空间)而不构建整个内核?谢谢!
networking - 每个节点的 TCP 拥塞避免
连接到同一个路由器的每个节点是否可以实现不同的拥塞避免技术?此外,是否可以在连接到路由器的节点中完全禁用拥塞避免。谢谢。