简介
Mahimahi是一个网络仿真工具,在Linux容器内外构建一条虚拟管道,并在这个管道中模拟网络时延、丢包和带宽变化。具体的详情请参考:http://mahimahi.mit.edu/。
安装
Mahimahi有两种安装方法,一种是通过apt-get安装,一种是通过源码编译安装。如果其中一种失败了,试试另外一种,总有一款适合你。
源码安装
在Ubuntu中,我们可以通过源码编译的方式来运行,分为以下几个步骤:
- 准备工作,安装必要的依赖包,可运行以下命令:
sudo apt-get update -- fix-missing
sudo apt-get install protobuf-compiler libprotobuf-dev autotools-dev dh-autoreconf iptables pkg-config dnsmasq-base apache2-bin apache2-dev debhelper libssl-dev ssl-cert libxcb-present-dev libcairo2-dev libpango1.0-dev
- 获取源码,可运行以下命令:
git clone https://github.com/ravinet/mahimahi
- 编译源码,可逐条运行以下命令:
cd mahimahi
./autogen.sh
./configure
make
- 安装,可运行以下命令:
sudo make install
- 检查是否安装成功,可运行以下命令:
mm-delay 20
如果出现了[delay 20ms]的字样,说明安装成功。
可能会提示运行:
sudo sysctl -w net.ipv4.ip_forward=1
,根据提示运行一下即可。
源码编译如果遇到问题,可以再看看这篇博客。
apt-get安装
- 直接运行以下命令:
sudo apt-get update -- fix-missing
sudo apt-get install mahimahi
通常高版本的Ubuntu支持这种方式,比如Ubuntu 20.04. 这种方式通常非常省事,推荐使用。但旧版本的Ubuntu可能有些问题。
运行
- 准备一个发包工具,当然你也可以自己写一个发包程序。这里使用现成的iperf3工具。安装方式为运行以下命令:
sudo apt-get install iperf3
- 打开一个终端(记Terminal 1),运行:
ifconfig
记录下IP地址server_ip(通常为100.64.0.*),然后运行iperf3服务端:
iperf3 -s -p 12345 -i 1
- 打开另一个终端(记Terminal 2),运行:
mm-delay 20 mm-loss uplink 0.01 mm-link traces/Verizon-LTE-short.up traces/Verizon-LTE-short.down --meter-all
/traces/Verizon-LTE-short.up 文件位于mahimahi源码里(记得先下载源码到本地,并cd进入mahimahi目录里)。
在这个终端里,继续运行以下命令:
iperf3 -c server_ip -p 12345 -i 1 -t 120
可以观察从Terminal 1到Terminal 2的数据传输过程中的带宽和时延的动态变化情况。
运行效果如下:
mahimahi运行
切换拥塞控制算法
以reno, cubic, bbr为例。ubuntu默认的拥塞控制算法是cubic, 如果内核是4.9以上,则支持bbr.
以下为配置BBR的方式:
切换回cubic的方式:
这样,我们就可以通过mahimahi模拟不同的网络场景,对比reno, cubic, bbr的性能啦!
转载请注明原文地址:https://blog.csdn.net/sbmye/article/details/127137327
更多网络相关知识请访问李彤的博客:https://blog.csdn.net/sbmye