网络异常模拟测试方法
1、網絡異常的分類
在系統的運行過程中,可能會遇到各種各樣的網絡問題,其中主要可能出現的問題有
網絡延遲:當網絡信息流過大時,可能導致設備反應緩慢,造成數據傳輸延遲;
網絡掉包:網絡掉包是在數據傳輸的過程中,數據包由于各種原因在信道中丟失的現象;
網絡節流:當數據傳輸量達到網絡帶寬上限時,數據包可能會被設備攔截下來之后發出;
網絡重發:當網絡不穩定時可能會導致發送端判斷數據包丟失導致部分數據包重發;
數據亂序:當數據傳輸有可能出現數據包到達接收端時間不一致,導致數據包亂序問題;
數據篡改:數據傳輸的過程中可能出現數據被連接篡改的情況。
2、Windows下網絡異常的模擬方法
windows下可以使用clumsy來進行網絡異常的模擬
clumsy首先根據用戶選擇的filter來攔截指定的網絡數據。在filter中可以設定你感興趣的協議(tcp/udp),端口號,是接收還是發出的端口,你也可以通過簡單的邏輯語句來進一步縮小范圍。當clumsy被激活時,只有符合這些標準的網絡數據會被進行處理,而你不感興趣的數據仍然會由系統正常傳輸。
當被filter的網絡數據包被攔截后,你可以選擇clumsy提供的功能來有目的性的調整網絡情況:
延遲(Lag),把數據包緩存一段時間后再發出,這樣能夠模擬網絡延遲的狀況。
節流(Throttle),把一小段時間內的數據攔截下來之后再在之后的同一時間一同發出去。
重發(Duplicate),隨機復制一些數據并與其本身一同發送
亂序(Out of order),打亂數據包發送的順序
篡改(Tamper),隨機修改小部分的包裹內容。
在測試時,該工具的filtering使用默認即可,Presets選擇localhost ipv4 all,然后配置相應的功能單擊start 按鈕,等待按鈕變成stop以及按鈕旁邊出現小綠點時,工具則啟用成功。
使用工具模擬網絡延時,網絡延時3000ms
使用工具模擬網絡掉包,隨機將10%的數據包丟棄
使用工具模擬網絡節流,將10%的數據節流1000ms
使用工具模擬網絡重發,將10%的數據集重發兩次
使用工具模擬網絡亂序,將10%的數據亂序
使用工具模擬網絡篡改,篡改10%的數據
測試的過程中可以檢查業務處理是否正確,比如檢查數據庫數據是否正確,數據庫與文件庫是否一致,文件庫是否出現較多的垃圾文件,垃圾文件是否有清理機制等等。
3、Linux下的網絡異常模擬方法
netem是Linux2.6及以上內核版本提供的一個網絡模擬功能模塊。該功能模塊可以用來在性能良好的局域網中,模擬出復雜的互聯網傳輸性能,諸如低寬帶,傳輸延遲,丟包等等情況。使用Liunx 2.6(或以上)版本內核的很多發行版Linux都開啟了該內核功能,比如Fedora、Ubuntu、Redhat、OpenSuse、CentOS、Debian等等。tc是Linux系統中的一個工具,全名為traffic control(流量控制)。tc可以用來控制netem的工作模式,也就是說,如果想使用netem,需要至少兩個條件,一個是內核中的netem功能被包含,另一個是要有tc。
模擬網絡異常方法:
1、首先查看網卡,可使用ipconfig命令查看
[root@localhostnetwork-scripts]# ifconfig
eno16777736:
flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.75.132netmask 255.255.255.0 broadcast
192.168.75.255
inet6fe80::20c:29ff:fe7c:8d22 prefixlen 64 scopeid
0x20<link>
ether 00:0c:29:7c:8d:22txqueuelen 1000 (Ethernet)
RX packets 19535 bytes2592045 (2.4 MiB)
RX errors 0 dropped 0overruns 0 frame 0
TX packets 31019 bytes38969412 (37.1 MiB)
TX errors 0 dropped 0 overruns 0carrier 0 collisions 0
紅字表明的就是網卡的設備號
2、模擬網絡異常可通過以下命令,其中eth0可根據自己的網卡設備號進行替換:
網絡延遲
tc qdisc add dev etho rootnetem delay 100ms
該命令將eth0網卡的傳輸設置為延遲100毫秒發送。
模擬更真實的情況,延遲值可能會有一定的波動性,可以使用以下命令來模擬
Tc qdisc add dev eth0 root netem delay 100ms 10ms
該命令將eth0網卡的傳輸設置為延遲100ms ± 10ms(90~110ms之間的任意值)發送
網絡丟包
tc qdisc add dev eth0 root netem loss 1%
該命令將eth0網卡的傳輸設置為隨機丟掉1%的數據包
數據包重復
tc qdisc add dev eth0 root netem duplicate 1%
該命令將eth0網卡的傳輸設置為隨機產生1%的重復數據包。
數據包損壞
tc qdisc add dev eth0 root netem corrupt 0.2%
該命令將eth0網卡的傳輸設置為隨機產生0.2%的損壞的數據包。
數據包亂序
tc qdisc change dev eth0 root netem delay 10ms reorder 25% 50%
該命令將eth0網卡的傳輸設置為:有25%的數據包(50%相關)會被立即發送,其他的延遲10秒。
查看已經配置的網絡條件
tc qdisc show dev eth0z
如果需要刪除已配置的條件,則將以上命令中的add更改為del即可。
轉載自微信公眾號:gloryroadtrain
總結
以上是生活随笔為你收集整理的网络异常模拟测试方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js中shift和unshift实例对比
- 下一篇: reset键指的是什么意思