上回我们介绍了tbf队列,这次介绍模拟网络环境和抖动测试时非常好用的netem队列。netem队列也是无类队列,也就是说所有从网卡发送出去的包都会收到配置参数的影响!
netem是linux2.6 及以上内核版提供的Network emulation服务,可以用来模拟广域网下的延迟、丢包、重复、损坏和乱序等问题。
-
模拟网络时延
#eth0网卡增加时延100ms tc qdisc add dev eth0 root netem delay 100ms #正常网络情况会出现抖动性延迟,将延迟设为 100ms ± 10ms tc qdisc add dev eth0 root netem delay 100ms 10ms #网络状况是平滑变化的,短时间里相邻报文的延迟应该是近似的而不是完全随机的。
#这个值是百分比,代表相邻报文延迟的粘性。如果为 100%,每个相邻的报文必定相同延迟,即所有包都将延迟;
#如果是 0% 则退化到随机延迟的情况
tc qdisc add dev eth0 root netem delay 100ms 10ms 20%
# distribution 参数来限制它的延迟分布模型。比如让报文延迟时间满足正态分布
#其他可选值有 uniform、pareto 和 paretonormal
tc qdisc add dev eth0 root netem delay 100ms 10ms 20% distribution normal
-
模拟网络丢包
# 发送的报文有 50% 的丢包率 tc qdisc change dev eth0 root netem loss 50% # 发送的报文随机丢掉 50% 的数据包,成功率为25% tc qdisc change dev eth0