有没有办法可以在 FreeBSD 中运行不同的(与默认的)TCP 拥塞控制算法?我正在尝试使用研究论文中发表的一些想法来修改现有的 TCP 拥塞控制算法,以尝试在无线网络上获得更好的性能。
答案1
您可以通过查看 sysctl.conf 来了解哪些 TCP 拥塞控制算法可用net.inet.tcp.cc.available
。默认情况下,只有 newreno 可用,因此使用的是它。有几种不同的算法可用,请查找cc_something
中命名的模块/boot/kernel
。
您可以通过 kldload 加载它们,例如kldload cc_vegas
.完成此操作后,新算法将显示在 中net.inet.tcp.cc.available
。您可以通过 sysctl 选择它net.inet.tcp.cc.algorithm
。
这是一个完整的示例:
% sysctl -a | grep net.inet.tcp.cc
net.inet.tcp.cc.available: newreno
net.inet.tcp.cc.algorithm: newreno
% sudo kldload cc_vegas
% sysctl -a | grep net.inet.tcp.cc
net.inet.tcp.cc.vegas.beta: 3
net.inet.tcp.cc.vegas.alpha: 1
net.inet.tcp.cc.available: newreno, vegas
net.inet.tcp.cc.algorithm: newreno
% sudo sysctl net.inet.tcp.cc.algorithm=vegas
net.inet.tcp.cc.algorithm: newreno -> vegas
% sudo sysctl net.inet.tcp.cc.algorithm=newreno
net.inet.tcp.cc.algorithm: vegas -> newreno
%
答案2
就研究而言,斯威本大学高级互联网架构中心 (CAIA) 管理着几个项目。他们至少部分关注 FreeBSD[newtcp] 中基于延迟的算法。在 FreeBSD 基金会的支持下,newtcp 项目的工作已与 FreeBSD 9.0 及后续版本集成。
在更广泛的 UNIX 应用程序中,我个人在 Linux 上看到了 Westwood+ TCP 拥塞控制的一些成功。 Westwood 在无线应用中可能特别有用 [Casetti2002]。我还发现了一篇关于 TCP-FIT 的好文章 [Wang2011]
就我个人而言,我对 FreeBSD 平台还比较陌生。我估计,对于无线网络中的任何直接应用,CAIA 的工作基于延迟的TCP 拥塞控制可能特别令人感兴趣。
为了扩展 Steve Wills 的回应,除了目前在任何单个 FreeBSD 内核安装中都可以使用 TCP 拥塞控制算法之外,FreeBSD 手册还包括有关重建 FreeBSD 内核的说明。 [手册第 9 章。]
据推测,通过使用 Pourdriere 进行包构建自动化的构建环境以及 LAN 网络的 PXE/Netboot 服务(BootP、DHCP 等),可以为可用 TCP 拥塞控制算法的应用构建一个相对舒适的基准测试环境,在不同的平台和不同的网络配置中。此外,据推测,也许可能存在一些现有的工作,例如模拟无线电信道噪声和其他无线信道干扰,以及估计真实世界配置下的系统性能。就我个人而言,我担心我在网上就读的大学没有一个完全适合这种研究方式的实验室,但我确信这在学术界的某个地方一定是可能的。
这是简短的参考书目:
这些文章可以直接从各自的出版商处获得,也可以从各自的资助机构获得预印本。