在模拟网络情况的时候不可避免的会要模拟动态网络变化,常用的有mahimahi和tc,mahimahi自己设置trace文件,每一行内容为这一毫秒发送了多少数据即可动态控制,而tc一般利用命令行控制,所以需要一点shell脚本基础。
首先是shell的数组建立:
band (0 10 20 30 20 10 0)
shell中数组利用space隔开,两端用()括起来,获取长度利用${#band[@]}
即可获得,而${band[*]}
可以获得所有的数组成员。
关于while 循环:
首先我们要明确其实我们不需要结束这个动态控制带宽的行为,所以我直接写了一个无限循环:
n=0
sudo tc qdisc add dev eth0 root tbf rate 10mbit burst 32kbit latency 50ms
while:
do
n=((n%${#band[@]}))
sudo tc qdisc change dev eth0 root tbf rate ${band[i]}mbit burst 32kbit latency 50ms
n=((n+1))
sleep 1
done
其中由于我们后续采用change,所以一开始需要add一个新的设置,另外,sleep的默认单位为1s,所以实际上该程序表示每秒钟更换一次带宽大小
最后分享一个博客https://www.cnblogs.com/zafu/p/15897654.html,图片很清晰