使用tc命令模拟网络环境进行mpc实验

TC 中使用下列的缩写表示相应的速率 Kbps:kiIobytes per second,即 “千字节每秒” Mbps:megabytes per second,即 “兆字节每秒 ” Kbit:kilobits per second,即 “千比特每秒” Mbit:megabits per second,即 “兆比特每秒”

root是出流量控制,因此每个节点都需要设置一下。

列出mpc网卡已有的策略

1
tc -s qdisc ls dev mpc

删除已有的策略

1
tc qdisc del dev mpc root

限制mpc网卡带宽和延时

方法1

1
tc qdisc add dev mpc root netem delay 1ms rate 1000mbit

方法2

1
2
3
tc qdisc add dev mpc root handle 1:0 htb default 1	# 默认发往 minor=1 的 class
tc class add dev mpc parent 1:0 classid 1:1 htb rate 1000mbit	# 添加 htb class,限制带宽是 100Mbps,默认 qdisc 是 fifo
tc qdisc add dev mpc parent 1:1 handle 2:0 netem delay 1ms 	# 为 htb class 设置 netem 的 qdisc,添加 20ms 延

速度测试

1
2
3
4
# server
iperf -s 
# client
iperf -c serverip

设置eth0网卡延迟

1
2
3
4
5
6
7
8
tc qdisc add dev eth0 root netem delay 150ms
#设置eth0包延迟 150ms
tc qdisc change dev eth0 root netem delay 150ms 10ms
#设置eth0包延迟 150ms ± 10ms
tc qdisc change dev eth0 root netem delay 150ms 10ms 25%
#设置eth0包延迟 150ms ± 10ms,下一个随机元素取决于上一个的25%(约)
tc qdisc change dev eth0 root netem gap 5 delay 10ms
#设置eth0包延迟每5个包有一个包延迟10ms

设置eth0网卡带宽

1
2
3
4
tc qdisc add dev eth0 root tbf rate 500kbit latency 50ms burst 15kb
#设置eth0带宽为500kbit,延迟50ms,突发15kb
tc qdisc add dev eth0 root tbf rate 1mbit burst 10kb latency 70ms peakrate 2mbit minburst 1540
# To attach a TBF with a sustained maximum rate of 1mbit/s, a peakrate of 2.0mbit/s, a 10kilobyte buffer, with a pre-bucket queue size limit calculated so the TBF causes at most 70ms of latency, with perfect peakrate behavior, enter:

设置eth0丢包率

1
2
tc qdisc add dev eth0 root netem loss 50%
#设置eth0丢包率为50%

启动时自动加载带宽限制策略

需要加什么样的限制就把命令 vim /etc/rc.local 加入: /sbin/tc qdisc add dev eth0 root tbf rate 500kbit latency 50ms burst 15kb 保存后执行下面的命令后生效: source /etc/rc.local