成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

輕松一招,教你實現模擬弱網環境

新聞 系統運維
運維過程中,最復雜的問題,莫過于網絡的問題,而網絡問題最煩的就是無法復現,這篇介紹一個強大的網絡模擬工具Netem。

 [[330932]]

運維過程中,最復雜的問題,莫過于網絡的問題,而網絡問題最煩的就是無法復現,這篇介紹一個強大的網絡模擬工具Netem。

Netem是從linux 2.6以上內核版本開始提供的一個網絡模擬功能模塊,它主要用來在性能良好的網絡環境中,模擬出復雜的網絡傳輸性能,比如低帶寬、傳輸延遲、丟包等各種常見的網絡故障的情況。

而Netem是由命令行工具tc控制,tc我們應該比較熟悉,tc是iproute2工具包的一部分,它的全稱是traffic control(流量控制),最常用的莫過于通過nc監聽進行反彈shell。

tc主要用于linux內核的流量控制,主要是通過在是輸出端口處建立一個隊列來實現流量控制,接收包從輸入接口進來后,經過流量限制,丟棄不符合規定的數據包,由輸入多路分配器進行判斷選擇,如果接收包的目的是本主機,那么將該包送給上層處理,否則需要進行轉發,將接收包交到轉發塊處理,轉發塊同時也接收本機上層(TCP、UDP等)產生的包。轉發塊通過查看路由表,決定所處理包的下一跳,然后對包進行排列以便將他們傳送到輸出接口,一般我們只能限制網卡發送的數據包,不太好限制網卡接收的數據包,所以我們可以通過改變發送次序來控制傳輸速率,linux流量控制主要是在輸出接口排列時進行處理和實現的。

關于linux內部網絡包轉發,在公眾號之前發過的文章《nfstable比iptables強在哪里》里面有較詳細的介紹,這里就不羅嗦了,有興趣的可以點進去看下。

回到正題,我們主要通過tc工具加Netem模塊進行網絡狀況的模擬,看下netem模塊的強大功能

網絡狀況不好的情況通常就是以下幾個表現:延遲、丟包、亂序、重復、錯誤等,我們就通過netem來模擬以上這幾種情況,建議不要生產環境測試,熟練掌握后再使用

在tc配置netem的操作中,主要有4個控制參數,分別是add(表示為指定網卡添加Netem配置),change(表示修改已經存在的Netem配置),replace(表示替換已經存在的Netem配置的值),del(表示刪除網卡上的Netem配置),好了,接著開始測試幾種情況。

模擬延遲傳輸

  1. tc qdisc add dev eth0 root netem daly 100ms 

模擬網絡,所有的報文延遲100ms發送

上面的命令中qdisc是排隊規則,沒有添加規則之前,因為是內網,所以ping延遲在1ms,添加延遲后,增加到100ms

在真實的網絡環境中,我們通常很難看到非常穩定的時延,別杠內網,所以netem也考慮到這一點,模擬延遲參數中提供了控制延遲的時間分布的可選參數,完整的參數列表如下:

可以看到,除了TIME外,還有三個可選參數:

  • JITTTER:網絡抖動,增加一個隨機事件長度,讓延遲事件出現在某個范圍
  • CORRELATION:相關系數,下一個報文延遲事件和上一個報文的相關系數
  • distribution:延遲分布,可以選擇的值有uniform、normal、pareto和paretonormal

先來看下JITTER,如果設置為10ms,那么報文延遲事件會在100ms± 10ms之間隨機選擇,看下效果

CORRELATION是指包和包之間的相關性,因為網絡狀況是平滑變化的,短時間里相鄰報文的延遲應該是近似的,而不是完全隨機的,這個值是個百分比,如果為100%,就是固定延遲的情況,如果是0%則是隨機延遲的情況,接著剛才的配置繼續看下效果

而distribution則是通過正態分布的方式來模擬更符合真實網絡情況,它的幾個參數就是幾種延遲分布方法,有興趣的可以試一下

模擬丟包率

丟包在網絡中是最常見的一種情況,丟包會導致重傳,重傳會增加網絡鏈路的流量和延遲,Netem提供了loss參數,可以模擬丟包率

  1. tc qdisc add dev eth0 root netem loss 50

看下效果

和延遲類似,丟包率也有相關系數的參數可以設置,表示后一個報文丟包率和它前一個報文的相關性

  1. tc qdisc add dev eth0 root netem loss 5025

上面這個命令表示,丟包率是50%,并且當前報文丟棄的可能性和前一個報文相關性為25%

模擬包重復

模擬報文重復,用duplicate參數,報文重復和丟包的參數類似,就是重復率和相關性兩個參數,比如隨機產生50%重復的包

  1. tc qdisc add dev eth0 root netem duplicate 50

看下效果

相關性和其他參數一樣,有興趣可以測試

模擬包損壞

模擬報文損壞用參數corrupt,報文損壞和報文重復的參數也類似,比如隨機產生30%損壞的報文

  1. tc qdisc add dev eth0 root netem corrupt 30

查看效果

可以從icmp_seq看到,損壞的報文,導致嚴重的丟包

模擬包亂序

我們知道TCP為了保證可靠傳輸,會在報文中添加序列號,確保被拆分的包能夠到達后進行重組,那么最好的情況就是包能按序傳輸,減少重新排序的次數,雖然包亂序造成的影響沒有上面幾種嚴重,但是仍然是會經常遇到,netem同樣提供了模擬包亂序的方法

模擬報文亂序和前面的參數不太一樣,上面的操作都是針對單個報文的,而亂序則牽扯到多個報文重組的問題,所以Netem這里有兩種方法來模擬亂序

第一種是固定的每隔一定數量的報文亂序一次

  1. tc qdisc add dev eth0 root netem reorder 50% gap 3 delay 100ms 

上面這個是每隔3個數據包正常發送,其他的數據包延遲100ms發送

第二種方法是更接近顯示情況的,就是隨機的,用概率來選擇亂序的報文

  1. tc qdisc change dev eth0 root netem reorder 5015% delay 300ms 

看效果

上面這個就是50%的報文正常發送,其他報文延遲300ms發送

查看已配置過濾條件

測試的過程中,肯定需要查看當前配置了那些條件,通過tc的show指令可以進行查看

對于模擬弱網環境,排查問題,這個工具必不可少,趕緊收藏!

 

責任編輯:張燕妮 來源: 運維研習社
相關推薦

2022-09-06 11:53:00

開發計算

2021-06-28 20:01:07

電腦性能Windows 7

2012-02-01 15:41:42

2020-09-16 06:08:10

Linux文本比對代碼

2020-01-27 14:46:56

手機號解綁移動應用

2011-05-03 11:13:51

黑盒

2020-10-20 08:01:30

MySQL密碼Windows

2022-06-21 09:27:01

PythonFlaskREST API

2023-12-18 08:24:09

LinuxPythonWord

2024-05-17 08:19:53

jackson數組切片

2019-01-23 10:11:43

Python爬蟲IP

2018-10-10 14:34:27

ARM嵌入式系統硬件

2021-07-06 07:21:17

橋接模式組合

2020-11-03 16:36:36

Windows微軟彈窗

2020-11-17 06:43:16

安卓智能手機移動應用

2018-06-27 10:10:34

APP評分彈窗蘋果

2010-01-06 09:54:59

2022-02-17 17:19:31

鴻蒙語音識別語音播報

2013-07-30 11:24:33

SAP“簡化IT 一招

2021-10-08 08:58:35

MySQL函數脫敏
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 男人天堂网址 | 一区二区在线看 | 欧美综合精品 | 免费一级黄色电影 | 色婷婷一区二区三区四区 | 中文久久 | 奇米久久 | 日批av| 久久在线看 | 亚洲免费精品一区 | 国产欧美在线视频 | 成人在线精品视频 | 欧美成人视屏 | 在线观看免费av网 | 色吧色综合| 国产免费一区二区 | 狠狠躁天天躁夜夜躁婷婷老牛影视 | 精品国产乱码久久久久久影片 | 一级片在线视频 | 欧美在线观看一区 | aaaa网站| 国产视频精品在线观看 | 亚洲黄色一级毛片 | 国产美女精品视频 | 中文字幕在线一区二区三区 | 一区二区免费高清视频 | 国产精品777一区二区 | 日韩视频在线免费观看 | 欧美精品第一区 | 在线亚洲欧美 | 999精品在线 | 亚洲情综合五月天 | www国产成人免费观看视频,深夜成人网 | 日韩av在线一区二区三区 | 久久精品69 | 免费观看日韩精品 | 欧美电影免费网站 | 911网站大全在线观看 | 国产玖玖 | 欧美二级 | 中文字幕av一区 |