下载页
http://jagt.github.io/clumsy/cn/download

项目的代码可以在github上获取,在下载页面有编译好的版本。强烈建议在使用前花点时间阅读一下文档,来 了解 clumsy 的功能和限制。

目前的实现中有一些难以绕过的限制和问题,列表如下:

回送的输入数据包(Loopback inbound packets)无法被重新注入。
仔细想想你就会发现我们没有很好的方法来区分一个回送数据包到底是被发出还是被接收到,因为它们的目标和来源 IP 地址都是本机。事实上 clumsy 底层的 WinDivert,以及其基于的 Windows Filtering Platform 把所有的回送数据包统统认为是输出 (Outbound) 数据包。这里需要记住的是,当你在本机上处理回送数据包的时候,你不能把 “inbound” 设置在 filter 条件中,最简单的方法就是在条件中简单的加上 “outbound”。另一件容易出问题的事情是,你本机的 IP 不仅仅只有 127.0.0.1 一个,还有类似路由器分配给你机器的 IP 也是属于你的本机 IP。
回送数据包会被处理两次。
因为所有的回送数据包都被认为是输出数据包,clumsy 会重复处理它们两次。一次是在发出的时候,一次是在接受到的时候。一个简单的例子是简单的把 filter 设置为 outbound,然后在 clumsy 中设置 500ms 的延迟并开启,之后在命令行里 ping localhost。这时你会发现延迟是 1000ms。当然你可以仔细的设置 filter 条件通过设置端口来只捕捉一部分的回送数据包,但是这样会比较麻烦。最简单的做法就是记住这个问题,然后设置参数的时候做相应的计算。
输入数据包的重新注入有些问题。
根据上面的描述,回送的输入包裹无法被重新注入。问题是现在有些来自包裹虽然其地址不是本机的 IP,其偶尔也会被认为是输入包裹。这种情况如果被捕捉到是无法进行重新注入的。这个问题仅仅影响非回送数据包,所以如果你仅仅是在本机上调试服务器和客户端那么是不会有这个问题的。未来版本的目标是准确的重现这个问题并进行修复。
无法根据进程来进行数据包过滤。
全系统级的数据包捕获虽然被列在了功能里,实际上是在当前的实现下,没法找到一个合适且稳定的方法来进行根据进程的数据包捕获。
如何使用

首先请根据你系统的版本(32位或64位)下载 clumsy 最新版本。注意如果你安装的是64位的系统那么一定要下载64位的 clumsy。另一件重要的事实 clumsy 需要管理员权限才能正常工作。双击打开 clumsy 的话会弹出 UAC 对话框。如果没有的话请右键点击 clumsy.exe 选择"以管理员身份运行"。如果一切正常,你应该能看到如下图的界面:
在这里插入图片描述

笔者最近因为需要在局域网内模拟一个实际情况(即存在丢包、延迟等情况)。网上搜了很多工具,大多基于linux。后来好不容易在网上搜索到一款2014年出现的网络模拟工具----Clumsy。

Clumsy是基于C语言开发的一款开源网络模拟工具。它能在Windows平台下人工造成不稳定的网络状态,应用它可以方便调试应用程序在极端网络状态下的表现。

Clumsy 首先根据用户选择的filter来拦截指定的网络数据。在 filter中可以设定你感兴趣的协议(tcp/udp),端口号,是接收还是发出的端口。你也可以通过简单的逻辑语句来进一步缩小范围。当 Clumsy 被激活时,只有符合这些标准的网络数据会被进行处理,而你不感兴趣的数据仍然会由系统正常传输。当被 filter 的网络数据包被拦截后,你可以选择 Clumsy 提供的功能来有目的性的调整网络情况,下面是Clumsy提供的功能介绍。

(1)延迟(Lag):把数据包缓存一段时间后再发出,这样能够模拟网络延迟的状况;

(2)丢包(Drop):随机丢弃一些数据;

(3)截流(Throttle):把一小段时间内的数据拦截下来后再在之后的同一时间一同发出去;

(4)重发(Duplicate):随机复制一些数据并与其本身一同发送;

(5)乱序(Out of order):打乱数据包发送的顺序;

(6)篡改(Tamper):随机修改小部分的包裹内容。

图1是Clumsy界面(此时丢包率为50%)。
在这里插入图片描述
图1:Clumsy 0.2 运行页面

在局域网(正常情况下,零丢包)环境下,通过ping测试,不同丢包率下的实际丢包率。结果如下:
在这里插入图片描述
因此从一定程度上证明了该工具的效果很好,延迟也有测试,效果明显。

ffplay -x 900 -y 720 -fflags nobuffer -max_delay 5 -i rtsp://xxxx

测试丢包10%
在这里插入图片描述

丢包50%
在这里插入图片描述

GitHub 加速计划 / li / linux-dash
6
1
下载
A beautiful web dashboard for Linux
最近提交(Master分支:3 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐