clumsy 小鱼儿 2022-06-06 13:48 132阅读 0赞 笔者最近因为需要在局域网内模拟一个实际情况(即存在丢包、延迟等情况)。网上搜了很多工具,大多基于linux。后来好不容易在网上搜索到一款2014年出现的网络模拟工具----Clumsy。 (参考了http://jagt.github.io/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%)。 ![Center][] 图1:Clumsy 0.2 运行页面 在局域网(正常情况下,零丢包)环境下,通过ping测试,不同丢包率下的实际丢包率。结果如下: <table style="border-collapse:collapse; border-spacing:0px; max-width:100%; color:rgb(69,69,69); font-family:"PingFang SC","Microsoft YaHei",SimHei,Arial,SimSun; font-size:16px"> <tbody style=""> <tr style=""> <td style=""> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; word-wrap:break-word; word-break:normal"> Clumsy设置的丢包率</p> </td> <td style=""> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; word-wrap:break-word; word-break:normal"> 0%</p> </td> <td style=""> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; word-wrap:break-word; word-break:normal"> 5%</p> </td> <td style=""> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; word-wrap:break-word; word-break:normal"> 10%</p> </td> <td style=""> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; word-wrap:break-word; word-break:normal"> 20%</p> </td> <td style=""> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; word-wrap:break-word; word-break:normal"> 30%</p> </td> <td style=""> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; word-wrap:break-word; word-break:normal"> 40%</p> </td> <td style=""> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; word-wrap:break-word; word-break:normal"> 50%</p> </td> <td style=""> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; word-wrap:break-word; word-break:normal"> 60%</p> </td> <td style=""> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; word-wrap:break-word; word-break:normal"> 70%</p> </td> <td style=""> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; word-wrap:break-word; word-break:normal"> 80%</p> </td> <td style=""> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; word-wrap:break-word; word-break:normal"> 90%</p> </td> </tr> <tr style=""> <td style=""> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; word-wrap:break-word; word-break:normal"> ping实验丢包率</p> </td> <td style=""> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; word-wrap:break-word; word-break:normal"> 0%(734次)</p> </td> <td style=""> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; word-wrap:break-word; word-break:normal"> 6%(677次)</p> </td> <td style=""> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; word-wrap:break-word; word-break:normal"> 11%(782次)</p> </td> <td style=""> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; word-wrap:break-word; word-break:normal"> 19%(506次)</p> </td> <td style=""> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; word-wrap:break-word; word-break:normal"> 31%(664次)</p> </td> <td style=""> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; word-wrap:break-word; word-break:normal"> 38%(725次)</p> </td> <td style=""> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; word-wrap:break-word; word-break:normal"> 51%(1120次)</p> </td> <td style=""> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; word-wrap:break-word; word-break:normal"> 58%(823次)</p> </td> <td style=""> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; word-wrap:break-word; word-break:normal"> 70%(544次)</p> </td> <td style=""> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; word-wrap:break-word; word-break:normal"> 84%(604次)</p> </td> <td style=""> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; word-wrap:break-word; word-break:normal"> 91%(455次)</p> </td> </tr> </tbody> </table> 因此从一定程度上证明了该工具的效果很好,延迟也有测试,效果明显。 笔者用该工具测试了UDP的传输、JGroups的组播通信。有兴趣研究可靠性的读者可以参考该工具,目前该工具更新到0.2版本。 如果有人在首次下载使用时,启动失败,应该是版本不对,Clumsy有32和64位2个版本(下载地址:http://jagt.github.io/clumsy/download.html),笔者在首次使用也遇到了该问题。 欢迎交流! [Center]: /images/20220606/5dab3a0042fa4711bf5844409f6024bb.png
相关 clumsy网络环境模拟工具介绍 录 1、简介 2、特色 3、实例 4、详细信息 -------------------- [VC++常用功能开发汇总(专栏文章列表,... 阳光穿透心脏的1/2处/ 2024年04月17日 11:08/ 0 赞/ 55 阅读
相关 clumsy 笔者最近因为需要在局域网内模拟一个实际情况(即存在丢包、延迟等情况)。网上搜了很多工具,大多基于linux。后来好不容易在网上搜索到一款2014年出现的网络模拟工具----Cl 小鱼儿/ 2022年06月06日 13:48/ 0 赞/ 133 阅读
相关 Clumsy 笔者最近因为需要在局域网内模拟一个实际情况(即存在丢包、延迟等情况)。网上搜了很多工具,大多基于linux。后来好不容易在网上搜索到一款2014年出现的网络模拟工具----Cl 曾经终败给现在/ 2022年06月05日 02:40/ 0 赞/ 74 阅读
还没有评论,来说两句吧...