我正在致力于实现 TCP 拥塞控制算法的拟议修改,该算法将允许通过添加动态带宽估计来改进它(CC)。
我已经能够(在这个社区的一些聪明成员的帮助下)创建一个可以加载到内核中的工作 CC 模块。现在我想在混合网络环境(有线/无线设备)中测试它并与内置的 CC 算法(NewReno、Vegas、Cubic、HTCP)进行比较。
您建议我使用什么来测试和比较这些 CC 算法的性能?
我听说过 NS-2,但我还想找到一个可以在真实环境中进行测试以获得真实数据的工具。
先感谢您!
答案1
由于这个论坛没有回答我的问题,我写信给 freebsd-net 邮件组提出了类似的问题,并收到了使用两个工具 IMUNES 的建议http://imunes.tel.fer.hr/和茶杯http://caia.swin.edu.au/tools/teacup/
我已经测试 IMUNES 有几天了,但我还没有测试 TEACUP,所以我将提供一个简短的描述。
IMUNES 允许您创建虚拟网络,您可以在其中配置从节点接口到路由器中的路由协议以及链路设置(如速度、误码率、延迟和重复数据包百分比)的所有内容。实验开始时,每个虚拟化节点都有自己的文件系统,该文件系统是从文件创建的,/var/imunes/vroot/
允许您一次更改所有设备的设置。
有些事情一开始并不那么明显(至少对我来说):
- FreeBSD-10.1-RELEASE 不支持,但适用于 FreeBSD-9.3-RELEASE
- 实验开始时,双击节点即可进入该节点的终端界面,可以打开任意数量的窗口;
- 未全局设置的系统设置,需要在每个节点上单独设置;
- 实验终止时,在虚拟节点中创建/编辑的所有文件和设置都将被销毁,但是可以在实验运行时访问这些文件,在
/var/imunes/[i*****]
为每个虚拟节点创建的文件夹下。当然,您可以使用命令find
来查找您要查找的文件; - 如果需要向虚拟节点添加程序,则必须使用
pkg_add_imunes [settings] [name]
; - 虽然您可以设置链路上的 BER,但这与丢包率不同。要设置丢包率,请使用命令加载 dummynet 内核模块
kldload dummynet
并使用它ipfw
来设置节点之间的链路设置。
如果有更多内容需要添加,我将更新该列表。
答案2
@KarlisL 如果你错过了,IMUNES 最近添加了 Linux 支持http://imunes.net。它使用 Docker 作为 L3 节点(路由器中的 Quagga),使用 Open vSwitch 作为 L2 节点,所以基本上你可以得到与“真实”交换机连接的“真实”Linux 机器。但是,通过 GUI 设置 BER 等存在一些问题,因此您应该在节点实例内手动执行此操作。