更新時間:2018年03月30日15時37分 來源:傳智播客 瀏覽次數(shù):
一、網(wǎng)絡異常的分類
在系統(tǒng)的運行過程中,可能會遇到各種各樣的網(wǎng)絡問題,其中主要可能出現(xiàn)的問題有以下幾種:
1網(wǎng)絡延遲:當網(wǎng)絡信息流過大時,可能導致設備反應緩慢,造成數(shù)據(jù)傳輸延遲;
2網(wǎng)路掉包:網(wǎng)路掉包是在數(shù)據(jù)傳輸?shù)倪^程中,數(shù)據(jù)包由于各種原因在信道中丟失的現(xiàn)象;
3網(wǎng)絡節(jié)流:當數(shù)據(jù)傳輸量達到網(wǎng)絡帶寬上限時,數(shù)據(jù)包可能會被設備攔截下來在之后發(fā)出;
4網(wǎng)絡重發(fā):當網(wǎng)絡不穩(wěn)定是可能會導致發(fā)送端判斷數(shù)據(jù)包丟失導致部分數(shù)據(jù)包重發(fā);
5數(shù)據(jù)亂序:當數(shù)據(jù)傳輸有可能出現(xiàn)數(shù)據(jù)包到達接收端時間不一致,導致數(shù)據(jù)包亂序問題;
6數(shù)據(jù)篡改:數(shù)據(jù)傳輸?shù)倪^程中可能出現(xiàn)數(shù)據(jù)被連接篡改的情況。
二、Windows下網(wǎng)絡異常的模擬方法
Windows下可使用clumsy來進行網(wǎng)絡異常的模擬
clumsy 首先根據(jù)用戶選擇的 filter 來攔截指定的網(wǎng)絡數(shù)據(jù)。在 filter 中可以設定你感興趣的協(xié)議(tcp/udp),端口號,是接收還是發(fā)出的端口。你也可以通過簡單的邏輯語句來進一步縮小范圍。當 clumsy 被激活時,只有符合這些標準的網(wǎng)絡數(shù)據(jù)會被進行處理,而你不感興趣的數(shù)據(jù)仍然會由系統(tǒng)正常傳輸。
當被 filter 的網(wǎng)絡數(shù)據(jù)包被攔截后,你可以選擇clumsy 提供的功能來有目的性的調(diào)整網(wǎng)絡情況:
l 延遲(Lag),把數(shù)據(jù)包緩存一段時間后再發(fā)出,這樣能夠模擬網(wǎng)絡延遲的狀況。
l 掉包(Drop),隨機丟棄一些數(shù)據(jù)。
l 節(jié)流(Throttle),把一小段時間內(nèi)的數(shù)據(jù)攔截下來后再在之后的同一時間一同發(fā)出去。
l 重發(fā)(Duplicate),隨機復制一些數(shù)據(jù)并與其本身一同發(fā)送。
l 亂序(Out of order),打亂數(shù)據(jù)包發(fā)送的順序。
l 篡改(Tamper),隨機修改小部分的包裹內(nèi)容。
在測試時,該工具的filtering使用默認即可,Presets選擇localhost ipv4 all,然后配置相應的功能單擊start按鈕,等待按鈕變成stop以及按鈕旁邊出現(xiàn)小綠點時,工具則啟用成功。
使用工具模擬網(wǎng)路延時,網(wǎng)絡延時3000ms
使用工具模擬網(wǎng)絡掉包,隨機將10%的數(shù)據(jù)包丟棄
使用工具模擬網(wǎng)絡節(jié)流,將10%的數(shù)據(jù)節(jié)流1000ms
使用工具模擬網(wǎng)絡重發(fā),將10%的數(shù)據(jù)集重發(fā)兩次
使用工具模擬網(wǎng)絡亂序,將10%的數(shù)據(jù)亂序
使用工具模擬網(wǎng)絡篡改,篡改10%的數(shù)據(jù)
測試的過程中可以檢查業(yè)務處理是否正確,比如檢查數(shù)據(jù)庫數(shù)據(jù)是否正確,數(shù)據(jù)庫與文件庫是否一致,文件庫是否出現(xiàn)較多的垃圾文件,垃圾文件是否有清理機制等。
三、Linux下的網(wǎng)絡異常模擬方法
netem 是Linux 2.6 及以上內(nèi)核版本提供的一個網(wǎng)絡模擬功能模塊。該功能模塊可以用來在性能良好的局域網(wǎng)中,模擬出復雜的互聯(lián)網(wǎng)傳輸性能,諸如低帶寬、傳輸延遲、丟包等等情況。使用 Linux 2.6 (或以上) 版本內(nèi)核的很多發(fā)行版 Linux 都開啟了該內(nèi)核功能,比如 Fedora、Ubuntu、Redhat、OpenSuse、CentOS、Debian 等等。 tc 是Linux系統(tǒng)中的一個工具,全名為 traffic control(流量控制)。tc 可以用來控制 netem 的工作模式,也就是說,如果想使用 netem ,需要至少兩個條件,一個是內(nèi)核中的 netem 功能被包含,另一個是要有 tc 。
模擬網(wǎng)絡異常方法:
1、首先查看網(wǎng)卡,可使用ifconfig命令查看
[root@localhostnetwork-s]# ifconfig
eno16777736: flags=4163
inet 192.168.75.132 netmask 255.255.255.0 broadcast 192.168.75.255
inet6fe80::20c:29ff:fe7c:8d22 prefixlen 64 scopeid 0x20
ether 00:0c:29:7c:8d:22 txqueuelen 1000 (Ethernet)
RX packets 19535 bytes2592045 (2.4 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 31019 bytes38969412 (37.1 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
紅字表明的就是網(wǎng)卡的設備號
2、模擬網(wǎng)絡異??赏ㄟ^以下命令,其中eth0可根據(jù)自己的網(wǎng)卡設備號進行替換:
1)網(wǎng)絡延遲
tc qdisc add dev eth0 rootnetem delay 100ms
該命令將 eth0 網(wǎng)卡的傳輸設置為延遲 100 毫秒發(fā)送。
模擬更真實的情況,延遲值可能會有一定的波動性,可以使用以下命令來模擬
Tc qdisc add dev eth0 root netem delay 100ms 10ms
該命令將 eth0 網(wǎng)卡的傳輸設置為延遲 100ms ± 10ms (90 ~ 110 ms 之間的任意值)發(fā)送
2)網(wǎng)絡丟包
tc qdisc add dev eth0 root netem loss 1%
該命令將 eth0 網(wǎng)卡的傳輸設置為隨機丟掉 1% 的數(shù)據(jù)包。
3)數(shù)據(jù)包重復
tc qdisc add dev eth0 root netem duplicate 1%
該命令將 eth0 網(wǎng)卡的傳輸設置為隨機產(chǎn)生 1% 的重復數(shù)據(jù)包 。
4)數(shù)據(jù)包損壞
tc qdisc add dev eth0 root netem corrupt 0.2%
該命令將 eth0 網(wǎng)卡的傳輸設置為隨機產(chǎn)生 0.2% 的損壞的數(shù)據(jù)包 。
5)數(shù)據(jù)包亂序
tc qdisc change dev eth0 root netem delay 10ms reorder 25% 50%
該命令將 eth0 網(wǎng)卡的傳輸設置為:有 25% 的數(shù)據(jù)包(50%相關)會被立即發(fā)送,其他的延遲10 秒。
查看已經(jīng)配置的網(wǎng)絡條件
tc qdisc show dev eth0
如果需要刪除已配置的條件,則將以上命令中的add更改為del即可。
本文版權歸傳智播客軟件測試學院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明作者出處。謝謝!
作者:傳智播客軟件測試培訓學院
首發(fā):http://test.itcast.cn/