亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

linux中如何實現模擬弱網環境

發布時間:2021-11-01 17:26:22 來源:億速云 閱讀:559 作者:柒染 欄目:系統運維

這篇文章給大家介紹linux中如何實現模擬弱網環境,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

運維過程中,最復雜的問題,莫過于網絡的問題,而網絡問題最煩的就是無法復現,這篇介紹一個強大的網絡模擬工具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配置),好了,接著開始測試幾種情況。

模擬延遲傳輸

tc qdisc add dev eth0 root netem daly 100ms

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

linux中如何實現模擬弱網環境

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

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

linux中如何實現模擬弱網環境

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

  • JITTTER:網絡抖動,增加一個隨機事件長度,讓延遲事件出現在某個范圍

  • CORRELATION:相關系數,下一個報文延遲事件和上一個報文的相關系數

  • distribution:延遲分布,可以選擇的值有uniform、normal、pareto和paretonormal

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

linux中如何實現模擬弱網環境

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

linux中如何實現模擬弱網環境

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

模擬丟包率

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

tc qdisc add dev eth0 root netem loss 50%

看下效果

linux中如何實現模擬弱網環境

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

tc qdisc add dev eth0 root netem loss 50% 25%

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

模擬包重復

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

tc qdisc add dev eth0 root netem duplicate 50%

看下效果

linux中如何實現模擬弱網環境

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

模擬包損壞

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

tc qdisc add dev eth0 root netem corrupt 30%

查看效果

linux中如何實現模擬弱網環境

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

模擬包亂序

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

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

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

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


linux中如何實現模擬弱網環境

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

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

tc qdisc change dev eth0 root netem reorder 50% 15% delay 300ms

看效果

linux中如何實現模擬弱網環境

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

查看已配置過濾條件

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

linux中如何實現模擬弱網環境

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

關于linux中如何實現模擬弱網環境就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乐都县| 乌兰察布市| 定西市| 安义县| 永州市| 东丰县| 旬阳县| 临湘市| 河曲县| 云梦县| 广汉市| 肃宁县| 新昌县| 武宁县| 宜章县| 江安县| 伊吾县| 无锡市| 金华市| 福清市| 金坛市| 尚志市| 鄂伦春自治旗| 定安县| 九龙城区| 香格里拉县| 宣武区| 静宁县| 滨州市| 宁武县| 昭觉县| 焦作市| 瓦房店市| 呼图壁县| 瑞丽市| 灌南县| 墨竹工卡县| 孝感市| 吉隆县| 四子王旗| 江北区|