Network-Emulator-Toolkit 模擬各種網絡環境 windows

1. 背景、目標、目的

(1) 背景:

我們在使用網絡時,時常遇到在正常網絡環境下的代碼運行一切正常,可以複雜的網絡環境下的各種問題無法復現,必須搭建模擬各種網絡環境,去復現問題,定位問題。不管是移動平臺,還是pc 端; ios XCode已經具備此功能, Android設備,及 windows 平臺還是需要我們自己搭建。

(2) 目的:

 通過Network-Emulator-Toolkit 配置控制網絡條件,滿足包括下行速度、下行丟包率、下行延遲、上行速度、上行丟包率、上行延遲、DNS延遲的設置、以及可抓包。

(3) 目標:

模擬複雜可複用的網絡環境,復現,定位問題

2. 方案

方案可以是1 wireshark、Fiddler、Charles等抓包工具提供代理、2.模擬器、3. Network Link Conditioner + 共享 wifi。

本文肯定是採用 3,要不標題就錯了 ;

介紹一款windows下的網絡模擬器,可以模擬各種丟包或延遲的網絡(Network Emulator for Windows Toolkit)

下載地址:https://blog.mrpol.nl/2010/01/14/network-emulator-toolkit/

這裏簡單介紹一下使用方法:

軟件界面:

No Loss:默認,不模擬丟包。

Periodic loss: 模擬週期性的丟包。按填寫數量(設爲x個),每x個包,就丟一個包(one packet is dropped per given number of packets)。

Random loss: 模擬隨機丟包,按給定丟包的概率,隨機丟包。

Burst loss: 模擬根據給定的可能性進行丟包。當發生一個丟包事件時,接着連續丟幾個包(丟包數量控制在最大(max)最小值(min)之間)。

G-E loss: 模擬發生數據包丟失遵循Gilbert-Elliot模型,由兩個狀態組成:好的狀態和壞的狀態。可分別爲這2個狀態指定數據包丟失率,同時可設置網絡傳輸在這兩種狀態的概率

(And the network transit between the two states is at given transition probabilities)

Error

說明:

真實世界中,當數據包經過網絡傳輸時,包中的一到多個字節(bit)數據可能發生錯誤。

No Error:不模擬傳輸錯誤。

Random error:根據給定的比例,模擬隨機發生傳輸錯誤。

G-E error:發生傳輸錯誤遵循Gilbert-Elliot Model, 模型,由兩個狀態組成:好的狀態和壞的狀態。可分別爲這2個狀態指定數據包丟失率,同時可設置網絡傳輸在這兩種狀態的概率(the network transit between the two states according to giventransition probabilities)

錯誤概率單元(Error Rate Unit):

Bit error: 設置出錯概率爲每個字節出錯的概率。

Packet error: 設置出錯概率爲每個包出錯的概率。

出錯和丟包的關係

大多數情況下,包出錯導致包丟失,特殊情況下,包中的數據被編碼,協議棧可恢復被損壞的包,經過修正後,包爲可接受的包,即包不丟失。此外,除了包出錯會導致包丟失,其它因素也會影響包丟失,如連接失敗(Link failure),緩衝區溢出(buffer overflow),隊列管理和傳輸超時(transmission timeout)等。

Latency

說明:

延遲來自某應用發送的數據包被另一個應用程序接收到的時間。

Fixed delay: 按給定值,延遲固定時間(單位:毫秒)packets are delayed fora fixed amount of time.

Uniform delay: 按統一分佈,延遲一定量的時間(時間控制在最大最小值之間)

Normal delay: 按正態分佈.延遲一定量的時間(average:平均值,Devation:偏差)

Linear delay: 延遲一定量的時間(在給定時間週期(Period)內,延遲的時間大小從最小值線性增加到最大值,當達到最大值時,又從最小值開始。

Burst delay: 根據給定概率(Probability),延遲一定量的時間(Latency), 丟包數控制最大值和最小值之間

BW&Queue

如果不指定帶寬(bandwith),則不修改傳輸速率。

如果不設置隊列,則不對接到的包做任何隊列操作

Queue

Normal queue:所有接收到的包都被放入一個指定隊列大小的先進先出(First In, First Out)隊列。

Randomly Early Detection (RED) queue:所有接收到的包都被放入一個RED隊列。如果隊列大小小於給定的最低閾值(Minimum Threshold),隊列被評估爲不擁擠的,什麼都不做;如果隊列大小大於給定最大閾值(Maximum

Threshold),則隊列被評估爲擁擠的,根據丟包規則,丟棄一些包。

丟包規則:

Drop front: 必要時,丟棄位於隊列頭部的包。.

Drop tail: 必要時,丟棄位於隊列尾部的包。

Drop random:必要時,根據統一分佈,隨機丟個包。

Queue Mode:設置隊列大小的單位,以包(Packet Mode)爲單位或者以字節爲單位Byte Mode

BgTraffic

一些網絡數據包交換和模擬的兩端沒有任何關係,被指爲背景流(background traffic)。這些背景流會帶來延時效果。

Constant-bit rate (CBR) traffic: 根據給定的固定比例生成背景流(每XX kbps、mbps數據包,xx字節背景流)

Exponential traffic:根據指數On/Off時間分佈生成背景流。個人理解,Burst則爲生成背景流時間,Idle則不生成背景流時間(時間單位:秒

Pareto traffic: 同上,不過是排列圖分佈(Pareto)

Recorder

模擬收到的包不是按發送順序排序的。

No Recoder:不模擬

其它:具體待定

Disconnection

模擬週期性斷開連接的行爲。

Connection time: 一段時間週期內,link保持連接狀態的持續時間。

Disconnection time: 一段時間週期那日,link保持斷開狀態的持續時間

Disconnection rates: link發生斷開連接的比率

例子:設置connection time爲10秒,disconnection爲5秒,那麼週期爲15秒,如果設置rate爲0.4,那麼平均每10秒內,有4秒是link處於連接斷開的時間(if connection time is 10 seconds, time is 5 seconds, the period will be 15 seconds. If rate is 0.4, then on average in 4 out of 10 periods disconnection occurs. )。

點擊觸發跟蹤按鈕[可選]

點擊“黃色小腳丫”按鈕,確保按鈕爲“點選”狀態

注:RT Traffic Monitor,RT Packet Monitor,Connection Analyzer,Information Watch

開啓控制

點擊開始按鈕

停止控制

點擊停止按鈕

保存文件[可選]

保存配置文件爲xml,方便後續導入,重用

附工具欄說明

連接方式:

Dialup56k:通過傳輸速率爲56kbps的modem進行連接

ADSL(128/512): 通過上行128kbps,下行512kbps的ADSL連接。

GPRS:它是GSM移動電話用戶可用的一種移動數據業務,理論傳輸速率115kbit/s,實際可達53.6Kbps。

CDMA2000:3G移動通訊標準。

WCDMA:寬帶碼分多址(英語:Wideband Code Division Multiple Access,常簡寫爲W-CDMA),是一種3G蜂窩網絡,使用的部分協議與2G GSM標準一致。

IEEE802.11b:通過無線局域網,帶寬最高可達11Mbps,實際的工作速度在5Mb/s左右,室外爲300米;在辦公環境中最長爲100米

案例:

App弱網測試整理總結:


 

首先,我們在正常網絡下ping一下我們的路由器:


可以看到沒有任何丟包:

接下來我們使用Network Emulator for Windows Toolkit,創建一個過濾器:configuration---》new filter,點擊add,如下:


接着,創建一個新的連接configuration ---》 new link ,創建好如下:


接着右鍵創建好的連接,設置上行和下載的丟包率,在這裏我們做如下設置:


我們將上行和下載的丟包率都設置爲0.03,確定後,點擊工具欄上的三角符號開始,再次ping路由:


此時,我們看到已經開始出現丟包了。

如下圖設置一個隨機丟包率在40%:

 

網絡延遲在10s-20s

再 ping 就會看到有延時和丟包;當然也可以配 Error

最後記得 不測試了,一定要停掉,因爲開了這個你的很多軟件可能已經掉線了;

如果要測試移動設備:可以下載一個 共享 wifi ,移動端連接WIFI 就可以了。

還有另外一個工具 開源移動網絡測試工具Augmented Traffic Control(ATC),這個似乎可以直接在手機上設置並切換網絡,就不用pc創建熱點了。後續再研究下。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章