網(wǎng)絡(luò)故障一般包含網(wǎng)絡(luò)數(shù)據(jù)異常,網(wǎng)絡(luò)丟包和網(wǎng)絡(luò)延遲。
創(chuàng)新互聯(lián)公司是一家專業(yè)提供龍山企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站設(shè)計制作、成都網(wǎng)站制作、HTML5、小程序制作等業(yè)務(wù)。10年已為龍山眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。
Linux內(nèi)核從2.2開始提供TC(Traffic Control)去控制Linux內(nèi)核的流量,一般系統(tǒng)都是自帶tc工具。
TC控制流程:
這里使用paping而不是ping,按照原作者說法是為了防止在防火墻開啟的狀態(tài)下可以ping通,但無法進(jìn)行tcp連接的問題。
網(wǎng)絡(luò)延遲:
tc qdisc add dev eth0 root netem delay 300ms
網(wǎng)絡(luò)丟包:
tc qdisc add dev eth0 root netem loss 7% 25% #代表丟掉7%的包,但是成功率只有25%
tc qdisc add dev eth0 root netem loss 7% #只設(shè)置7%是代表隨機(jī)丟掉7%的包
網(wǎng)絡(luò)數(shù)據(jù)異常:
tc qdisc add dev eth0 root netem corrupt 10% # 10%的數(shù)據(jù)包損壞,不是沒傳過去,而是傳過去不對。
網(wǎng)絡(luò)數(shù)據(jù)重復(fù):
tc qdisc add dev eth0 root netem duplicate 1% #隨機(jī)產(chǎn)生1%的包重復(fù)
網(wǎng)絡(luò)數(shù)據(jù)包亂序:
tc qdisc add dev eth0 root netem delay 10ms reorder 25% 50% #有25%的數(shù)據(jù)包(50%相關(guān))會被立即發(fā)送,其他的延遲10秒
關(guān)閉網(wǎng)絡(luò)異常模擬:
tc qdisc del dev eth0 root netem
監(jiān)控網(wǎng)卡:
tc qdisc add dev eth0 root netem
其余命令:
tc qdisc change dev eth0 root netem duplicate 1%
tc qdisc replace dev eth0 root netem duplicate 1%
tc是要在client端設(shè)置的,因為只能控制數(shù)據(jù)發(fā)出,它模擬的是異常的數(shù)據(jù)到達(dá)Server后如何被處理,前提是數(shù)據(jù)在到達(dá)Server的時候已經(jīng)異常了。
至于server端的控制,需要使用iptables。
參考文檔:
你問的這么詳細(xì)不如直接去看教程
但是初接觸TC看教程還真有點費力,你還是多寫寫,讀別人寫的腳本去理解他們的意思
class就是規(guī)則分支,你用TC來限制速度,首先要寫一些規(guī)則,比如優(yōu)先級別,流量限制等
規(guī)則寫完后,接下來就要過濾,,就是讓系統(tǒng)知道哪些包符合規(guī)則,根據(jù)你的過濾條件來讓數(shù)據(jù)包走不同的分支(規(guī)則,class)
基本步驟就是這樣,具體清你看教程去把。
只需要修改iproute2應(yīng)用層的makefile就可以了,編譯tc并把tc拷貝到執(zhí)行目錄里