Clumsy网络模拟工具
筆者最近因?yàn)樾枰诰钟蚓W(wǎng)內(nèi)模擬一個(gè)實(shí)際情況(即存在丟包、延遲等情況)。網(wǎng)上搜了很多工具,大多基于linux。后來好不容易在網(wǎng)上搜索到一款2014年出現(xiàn)的網(wǎng)絡(luò)模擬工具----Clumsy。
(參考了http://jagt.github.io/clumsy/)
Clumsy是基于C語(yǔ)言開發(fā)的一款開源網(wǎng)絡(luò)模擬工具。它能在Windows平臺(tái)下人工造成不穩(wěn)定的網(wǎng)絡(luò)狀態(tài),應(yīng)用它可以方便調(diào)試應(yīng)用程序在極端網(wǎng)絡(luò)狀態(tài)下的表現(xiàn)。
Clumsy?首先根據(jù)用戶選擇的filter來攔截指定的網(wǎng)絡(luò)數(shù)據(jù)。在?filter中可以設(shè)定你感興趣的協(xié)議(tcp/udp),端口號(hào),是接收還是發(fā)出的端口。你也可以通過簡(jiǎn)單的邏輯語(yǔ)句來進(jìn)一步縮小范圍。當(dāng)?Clumsy?被激活時(shí),只有符合這些標(biāo)準(zhǔn)的網(wǎng)絡(luò)數(shù)據(jù)會(huì)被進(jìn)行處理,而你不感興趣的數(shù)據(jù)仍然會(huì)由系統(tǒng)正常傳輸。當(dāng)被?filter?的網(wǎng)絡(luò)數(shù)據(jù)包被攔截后,你可以選擇?Clumsy?提供的功能來有目的性的調(diào)整網(wǎng)絡(luò)情況,下面是Clumsy提供的功能介紹。
(1)延遲(Lag):把數(shù)據(jù)包緩存一段時(shí)間后再發(fā)出,這樣能夠模擬網(wǎng)絡(luò)延遲的狀況;
(2)丟包(Drop):隨機(jī)丟棄一些數(shù)據(jù);
(3)截流(Throttle):把一小段時(shí)間內(nèi)的數(shù)據(jù)攔截下來后再在之后的同一時(shí)間一同發(fā)出去;
(4)重發(fā)(Duplicate):隨機(jī)復(fù)制一些數(shù)據(jù)并與其本身一同發(fā)送;
(5)亂序(Out?of?order):打亂數(shù)據(jù)包發(fā)送的順序;
(6)篡改(Tamper):隨機(jī)修改小部分的包裹內(nèi)容。
圖1是Clumsy界面(此時(shí)丟包率為50%)。
?
圖1:Clumsy?0.2?運(yùn)行頁(yè)面
在局域網(wǎng)(正常情況下,零丟包)環(huán)境下,通過ping測(cè)試,不同丟包率下的實(shí)際丟包率。結(jié)果如下:
| Clumsy設(shè)置的丟包率 | 0% | 5% | 10% | 20% | 30% | 40% | 50% | 60% | 70% | 80% | 90% |
| ping實(shí)驗(yàn)丟包率 | 0%(734次) | 6%(677次) | 11%(782次) | 19%(506次) | 31%(664次) | 38%(725次) | 51%(1120次) | 58%(823次) | 70%(544次) | 84%(604次) | 91%(455次) |
因此從一定程度上證明了該工具的效果很好,延遲也有測(cè)試,效果明顯。
筆者用該工具測(cè)試了UDP的傳輸、JGroups的組播通信。有興趣研究可靠性的讀者可以參考該工具,目前該工具更新到0.2版本。
如果有人在首次下載使用時(shí),啟動(dòng)失敗,應(yīng)該是版本不對(duì),Clumsy有32和64位2個(gè)版本(下載地址:http://jagt.github.io/clumsy/download.html),筆者在首次使用也遇到了該問題。
歡迎交流!
總結(jié)
以上是生活随笔為你收集整理的Clumsy网络模拟工具的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++设计模式-Bridge桥接模式
- 下一篇: 带弹性的导航栏