加载中...
返回

TCP加速之环境搭建(WANem)

我们可能遇到这样的情景:有一些实验需要在广域网环境下(存在一定的延迟、丢包等)完成,但我们不希望花费成本去租借一台云服务器,只希望在虚拟机网络中模拟出广域网的环境,应该如何实现呢?

本文是TCP加速系列总结的一部分 ,我们希望完成TCP加速的实验,这时要求我们的实验环境不仅是一个广域网,还需要是一个存在 一定拥塞 、会发生 一定丢包 的广域网,这种情况下,如果我们不使用模拟环境,而使用真实服务器的话,实验效果就可能受到服务器地理位置、实验时间段等等因素的影响了。

好在,我们可以使用WANem这一稳定、易用的广域网模拟器来解决我们的问题。

简介

WANem基于iptables和tc(Traffic Control)实现,可以实现对网络延迟、丢包率、抖动、噪音等的模拟,使用者可以简单地设定并复现出某个特定的网络环境,因而逐渐替代软件仿真成为新一代的网络测试床。与之具备类似概念的工具有微软的Network Emulator for Windows Toolkit(NEWT)、Linux 2.6自带的Netem等。事实上,此前说的tc(Traffic Control)就是用来控制Netem工作的,因此可以理解为WANem是基于Netem所构建。

安装与访问

WANem类似于一台虚拟机,可以直接 下载 iso文件,并在VMWare中安装。Linux类型选择 其他Linux 64位 即可。

启动之后,可以使用DHCP获取IP,或者手动配置IP;虚拟机会要求你设置口令,你可以使用用户名 perc 和你设置的口令来远程登录到系统上。

成功启动之后,会出现 WANemControl@PERC> 的命令行提示符,使用 help 命令可以查看该命令行支持的命令。

一般来说,你现在就可以在另一台机器的浏览器上使用 http://<WANem IP>/WANem 来访问控制界面了(注意URL大小写)。假如你不知道WANem的IP地址,则使用 exit2shell 命令来返回到Linux命令行中,使用我们熟悉的 ip addr 命令就可以看到WANem的IP。

配置规则

首次进入控制界面时,我们看到的是WANem的 Basic Mode ,这个模式下,我们可以配置 带宽延迟

点击导航栏中的 Advanced Mode 进入高级配置,我们看到如下的界面:

界面上已经将各项指标都标识得比较清楚了,因此不多费口舌解释。在上图中,我们已经写好了一条”延迟100ms、随机丢包率20%“的规则。

可以指定我们的规则的适用范围,如果你只希望你配置的规则在两台特定主机之间生效,那么就填写下图红框框出的一行,否则保留原样即可。

使用

保存我们设置好的规则,即刻开始使用它吧。

我们的两台实验机器分别是 CentOS7 192.168.213.128Ubuntu 192.168.213.129 ,WANem是 192.168.213.130

首先可以使用 iperf3 来测试一下两台机器之间的网络情况(理所当然地好)。

在Ubuntu上运行 iperf3 -s 命令:

在CentOS上运行 iperf3 -c 192.168.213.129 命令,该工具将会自动测试从客户端到服务端的带宽情况:

接着,我们引入WANem。在CentOS上添加路由,使得它到Ubuntu的所有流量都要经过WANem。

再次使用 iperf3 -c 192.168.213.129 进行测试,效果很明显:

可以看到,首先由于时延的影响,带宽下降了,其次是产生了一些丢包。

我们可以使用 iperf3 -u -c 192.168.213.129 命令来启用UDP模式,该模式下会统计丢包率,可以看到这里的丢包率跟我们此前设置的 20% 是接近的。

综上所述,有了这个环境,就可以愉快地在局域网中模拟出广域网环境了。

参考资料

[1] 微信测试工程师手把手教你做弱网络模拟测试 - 知乎

[2] Linux网络流量控制工具—Netem - 发卡 - 博客园 (cnblogs.com)

[3] TC(Traffic Control)命令—linux自带高级流控 - 云+社区 - 腾讯云 (tencent.com)

[4] 彭娜.并行TCP在广域网加速系统中的研究与实现[C].中南大学硕士学位论文,2009-05

[5] https://sourceforge.net/projects/wanem/files/Documents/WANemv11-Setup-Guide.pdf/

有朋自远方来,不亦说乎?
Built with Hugo
Theme Stack designed by Jimmy