1

有人可以给我指点在linux内核中启用newReno。开源源代码在任何地方都可用吗?我可以在线获得一些 cpp 代码,但我必须重写整个东西才能在 linux 内核中使用它。

4

2 回答 2

1

从 2.6.13 开始,Linux 内核支持 TCP 堆栈插件,并根据系统连接的内容启用算法之间的切换。你的一个是3.8,所以显然它支持广泛的算法,其中一些如下

高速 TCP

该算法在 RFC 3649 中有描述。主要用于大带宽和大 RTT(如 Gbit/s 和 100 ms RTT)的连接。

H-TCP

H-TCP 是由 Hamilton Institute 提出的,用于在发生拥塞事件后更快地恢复传输。它还设计用于具有高带宽和 RTT 的链路。

TCP Tahoe/里诺

这些是用于拥塞控制的经典模型。它们表现出典型的慢速传输启动。吞吐量逐渐增加,直到保持稳定。一旦传输遇到拥塞,它就会降低,然后速率再次缓慢上升。通过添加固定值来增加窗口。TCP Reno 使用乘法减小算法来减小窗口大小。TCP Reno 是部署最广泛的算法。

TCP 韦斯特伍德+

Westwood+ 解决了大带宽/RTT 值和随机数据包丢失以及动态变化的网络负载问题。它通过查看确认数据包来分析传输状态。Westwood+ 是 TCP Reno 算法的修改版。这只是模块的粗略轮廓。

/proc/通过将文本写入条目,可以轻松地在不同算法之间进行切换。

$:~# echo "westwood" > /proc/sys/net/ipv4/tcp_congestion_control 
$:~# cat /proc/sys/net/ipv4/tcp_congestion_control 
westwood
$:~# 

可以在此处找到可用模块的列表:

$:~# ls /lib/modules/`uname -r`/kernel/net/ipv4/
ip_gre.ko  netfilter   tcp_cubic.ko      tcp_htcp.ko   tcp_lp.ko        tcp_vegas.ko
ipip.ko    tcp_bic.ko  tcp_highspeed.ko  tcp_hybla.ko  tcp_scalable.ko  tcp_veno.ko
$:~# 

写入时/proc/,您可以跳过tcp_ prefix. 如果您编译自己的内核,您会在Networking -> Networking options -> TCP: advanced congestion control section.

由于某些算法仅影响发送方,因此启用它们时您可能不会注意到差异。为了查看变化的行为,您必须创建一个受控设置,并测量 TCP 传输的参数。

于 2014-02-25T07:02:29.997 回答
1

从这个link ns2 use linux stack上的表来看,其实就是命名的问题。如果用“sudo sysctl -w net.ipv4.tcp_congestion_control=reno”设置拥塞控制,linux中的“reno”实现newreno拥塞控制.

虽然他们的内核是Linux-2.6.22.6,但我认为较新的内核应该继承相同的命名。进一步的证据可以从linux reno实现的源代码中获得。

于 2015-10-12T07:09:21.423 回答