自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

輕松一招,教你實(shí)現(xiàn)模擬弱網(wǎng)環(huán)境

新聞 系統(tǒng)運(yùn)維
運(yùn)維過程中,最復(fù)雜的問題,莫過于網(wǎng)絡(luò)的問題,而網(wǎng)絡(luò)問題最煩的就是無法復(fù)現(xiàn),這篇介紹一個強(qiáng)大的網(wǎng)絡(luò)模擬工具Netem。

 [[330932]]

運(yùn)維過程中,最復(fù)雜的問題,莫過于網(wǎng)絡(luò)的問題,而網(wǎng)絡(luò)問題最煩的就是無法復(fù)現(xiàn),這篇介紹一個強(qiáng)大的網(wǎng)絡(luò)模擬工具Netem。

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

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

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

關(guān)于linux內(nèi)部網(wǎng)絡(luò)包轉(zhuǎn)發(fā),在公眾號之前發(fā)過的文章《nfstable比iptables強(qiáng)在哪里》里面有較詳細(xì)的介紹,這里就不羅嗦了,有興趣的可以點(diǎn)進(jìn)去看下。

回到正題,我們主要通過tc工具加Netem模塊進(jìn)行網(wǎng)絡(luò)狀況的模擬,看下netem模塊的強(qiáng)大功能

網(wǎng)絡(luò)狀況不好的情況通常就是以下幾個表現(xiàn):延遲、丟包、亂序、重復(fù)、錯誤等,我們就通過netem來模擬以上這幾種情況,建議不要生產(chǎn)環(huán)境測試,熟練掌握后再使用

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

模擬延遲傳輸

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

模擬網(wǎng)絡(luò),所有的報文延遲100ms發(fā)送

上面的命令中qdisc是排隊(duì)規(guī)則,沒有添加規(guī)則之前,因?yàn)槭莾?nèi)網(wǎng),所以ping延遲在1ms,添加延遲后,增加到100ms

在真實(shí)的網(wǎng)絡(luò)環(huán)境中,我們通常很難看到非常穩(wěn)定的時延,別杠內(nèi)網(wǎng),所以netem也考慮到這一點(diǎn),模擬延遲參數(shù)中提供了控制延遲的時間分布的可選參數(shù),完整的參數(shù)列表如下:

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

  • JITTTER:網(wǎng)絡(luò)抖動,增加一個隨機(jī)事件長度,讓延遲事件出現(xiàn)在某個范圍
  • CORRELATION:相關(guān)系數(shù),下一個報文延遲事件和上一個報文的相關(guān)系數(shù)
  • distribution:延遲分布,可以選擇的值有uniform、normal、pareto和paretonormal

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

CORRELATION是指包和包之間的相關(guān)性,因?yàn)榫W(wǎng)絡(luò)狀況是平滑變化的,短時間里相鄰報文的延遲應(yīng)該是近似的,而不是完全隨機(jī)的,這個值是個百分比,如果為100%,就是固定延遲的情況,如果是0%則是隨機(jī)延遲的情況,接著剛才的配置繼續(xù)看下效果

而distribution則是通過正態(tài)分布的方式來模擬更符合真實(shí)網(wǎng)絡(luò)情況,它的幾個參數(shù)就是幾種延遲分布方法,有興趣的可以試一下

模擬丟包率

丟包在網(wǎng)絡(luò)中是最常見的一種情況,丟包會導(dǎo)致重傳,重傳會增加網(wǎng)絡(luò)鏈路的流量和延遲,Netem提供了loss參數(shù),可以模擬丟包率

  1. tc qdisc add dev eth0 root netem loss 50

看下效果

和延遲類似,丟包率也有相關(guān)系數(shù)的參數(shù)可以設(shè)置,表示后一個報文丟包率和它前一個報文的相關(guān)性

  1. tc qdisc add dev eth0 root netem loss 5025

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

模擬包重復(fù)

模擬報文重復(fù),用duplicate參數(shù),報文重復(fù)和丟包的參數(shù)類似,就是重復(fù)率和相關(guān)性兩個參數(shù),比如隨機(jī)產(chǎn)生50%重復(fù)的包

  1. tc qdisc add dev eth0 root netem duplicate 50

看下效果

相關(guān)性和其他參數(shù)一樣,有興趣可以測試

模擬包損壞

模擬報文損壞用參數(shù)corrupt,報文損壞和報文重復(fù)的參數(shù)也類似,比如隨機(jī)產(chǎn)生30%損壞的報文

  1. tc qdisc add dev eth0 root netem corrupt 30

查看效果

可以從icmp_seq看到,損壞的報文,導(dǎo)致嚴(yán)重的丟包

模擬包亂序

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

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

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

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

上面這個是每隔3個數(shù)據(jù)包正常發(fā)送,其他的數(shù)據(jù)包延遲100ms發(fā)送

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

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

看效果

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

查看已配置過濾條件

測試的過程中,肯定需要查看當(dāng)前配置了那些條件,通過tc的show指令可以進(jìn)行查看

對于模擬弱網(wǎng)環(huán)境,排查問題,這個工具必不可少,趕緊收藏!

 

責(zé)任編輯:張燕妮 來源: 運(yùn)維研習(xí)社
相關(guān)推薦

2021-06-28 20:01:07

電腦性能Windows 7

2022-09-06 11:53:00

開發(fā)計(jì)算

2012-02-01 15:41:42

2020-09-16 06:08:10

Linux文本比對代碼

2020-01-27 14:46:56

手機(jī)號解綁移動應(yīng)用

2011-05-03 11:13:51

黑盒

2022-06-21 09:27:01

PythonFlaskREST API

2020-10-20 08:01:30

MySQL密碼Windows

2023-12-18 08:24:09

LinuxPythonWord

2019-01-23 10:11:43

Python爬蟲IP

2024-05-17 08:19:53

jackson數(shù)組切片

2018-10-10 14:34:27

ARM嵌入式系統(tǒng)硬件

2021-07-06 07:21:17

橋接模式組合

2020-11-03 16:36:36

Windows微軟彈窗

2020-11-17 06:43:16

安卓智能手機(jī)移動應(yīng)用

2010-01-06 09:54:59

2022-02-17 17:19:31

鴻蒙語音識別語音播報

2018-06-27 10:10:34

APP評分彈窗蘋果

2013-07-30 11:24:33

SAP“簡化IT 一招

2021-10-08 08:58:35

MySQL函數(shù)脫敏
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號