之前写过一篇使用netem模拟WAN延时,丢包等的博文,参见http://blog.sina.com.cn/s/blog_704836f40102vsuw.html。
但那个要求netem设备放在网络通路中间,对于QA来说,有时不好或不能实现。于是又继续研究,发现了一个更易用的模拟工具,clumsy。
clumsy运行在windows平台上, 其原理是利用WinDivert
library将本机的数据包截住,经过一定的修改以后再发送出去,例如可以增加延时,模拟丢包,模拟TCP乱序等等。
clumsy有32位和64位两个版本,用法非常简单,下面简单说一下。
1.下载 clumsy 官网:
https://jagt.github.io/clumsy/
2.运行clumsy
3.设置要捕获的数据包,语法与tcpdump类似
4.根据需要增加延时,丢包等设置即可。
延迟(Lag),把数据包缓存一段时间后再发出,这样能够模拟网络延迟的状况。
掉包(Drop),随机丢弃一些数据。
节流(Throttle),把一小段时间内的数据拦截下来后再在之后的同一时间一同发出去。
重发(Duplicate),随机复制一些数据并与其本身一同发送。
乱序(Out of order),打乱数据包发送的顺序。
篡改(Tamper),随机修改小部分的包裹内容。
下边这个图是GIF,官网提供的,点击可以看到动画。
参考文档:
http://xenthusiast.com/high-latency-network-connection-simulation-of-bad-ux/
http://www.oschina.net/p/clumsy