1、工具介绍:
下载地址:http://jagt.github.io/clumsy/cn/download
界面展示
2、使用说明
例如 IP地址 :ip.DstAddr == 129.196.0.0 or ip.SrcAddr == 129.196.0.0 表示过滤从这个IP的是发来的包和发向这个IP地址的包
基本操作:
1.设置过滤器
2.功能设置(可选)
3.点击Start
4.其它测试操作
5.点击Stop
3、Filter 语法:
官方说明:详细地址
ip.DstAddr:destination 的缩写 是IP目的地址
ip.SrcAddr:source 的缩写 是IP源地址
outbound:从当前计算机发送出去的数据包。
inbound: 当前计算机接收到的数据包。其来源可能是网络上的其他机器,也可能就是本机。
ifldx:网络设备index
subIfIdx:副网络设备index
ip:是否为IPv4
ipv6:是否为Ipv6
icmp:是否为ICMP
tcp:是否为TCP
udp:是否为UDP
ip.*: IPv4的参数(见DIVERT_IPHDR
ipv6.*:IPv6的参数(见DIVERT_IPV6DHR
icmp.*:ICMP的参数(见DIVERT_ICMPHDR
icmpv6.*:ICMPV6的参数(见DIVERT_ICMPV6HDR
tcp.*:TCP的参数(见DIVERT_TCPHDR
tcp.PayloadLength:TCP数据长度
udp.*:UDP的参数(见DIVERT_UDPHDR
可以用“< ==”,“> ==”,“and”, “or”, “=”进行过滤器设置
预设过滤器
可以将常用个过滤器写到clumsy.exe所在文件夹下的config.txt中。
4、functions
Lag:设置延迟; 把数据包缓存一段时间后再发出,这样可以模拟网络延迟的状况
-Inbound/Outbound: 是否处理输入/输出数据包。这里在 filter 的控制之外额外提供一个选择的机会,并且也可以在实时生效。
-Delay:延迟多少毫秒
Drop: 设置掉包;随机丢弃一些数据
-Chance设置该功能发生的概率;
Throttle:设置节流; 把一小段时间内的数据拦截下来,并再在之后的统一时间一起发出去
Duplicate:重发 ;随机复制一些数据并与其本身一同发送
Out of order:乱序打乱数据包发送的顺序
Tamper:篡改;随机修改小部分的数据包内容
Tips:
延迟比在 Lag 里设置的要严重很多。
这个问题的重点在于,clumsy 里面的设置并不是准确的可以用来做测速的值。其作用更倾向于作为参数控制软件的行为。 另一个需要理解的是,这里的延迟是作用于每一个网络包裹的。比如建立一个 TCP 连接需要至少 3 个包裹。那么如果 clumsy 引入了 20ms 的延迟,对于每一个 TCP 连接则至少引入了 3*20=60ms 的延迟。如果是要载入一个网页的话,有部分 HTTP 请求必须是要按顺序完成后页面才能开始渲染。假如要完成 1, 2, 3 这三个请求,那么 clumsy 在这里至少引入了 3*60=180ms 的延迟。
类似软件
以下是有类似功能的软件,如果 clumsy 不能满足你的需求你可以试试这些。
Network Emulator for Windows Toolkit(Windows) - 微软提供的网络模拟工具。
ipfw or pfctl(FreeBSD/OSX) - BSD 下的网络模拟工具。
wipfw(Windows) - ipfw Windows 移植,但功能只有 ipfw 的一个子集。
netem(Linux) - Linux Kernel 提供的网络模拟。
tc(Linux) - 配置 Linux Kernel 的网络流量控制。
Throttle(Mac) - 通过分享无线网络来模拟 3G 网络。
Network Link Conditioner(Mac) - XCode 自带的网络模拟工具。