更新時(shí)間:2020-12-18 17:42:37 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1846次
丟包(Packet loss)是指一個(gè)或多個(gè)數(shù)據(jù)數(shù)據(jù)包(packet)的數(shù)據(jù)無(wú)法透過(guò)網(wǎng)上到達(dá)目的地的情況,無(wú)論是Windows還是Linux系統(tǒng)中都會(huì)出現(xiàn)丟包的情況。netem是 Linux 2.6 及以上內(nèi)核版本提供的一個(gè)網(wǎng)絡(luò)模擬功能模塊。該功能模塊可以用來(lái)在性能良好的局域網(wǎng)中,模擬出復(fù)雜的互聯(lián)網(wǎng)在Linux系統(tǒng)中性能,諸如低帶寬、傳輸延遲、丟包等等情況。除此之外,我們?cè)贚inux模擬丟包的過(guò)程中還需要用到Linu模擬丟包工具tc,全名為traffic control(流量控制)。
tc可以用來(lái)控制netem的工作模式,也就是說(shuō),如果想使用netem,需要至少兩個(gè)條件,一個(gè)是內(nèi)核中的netem功能被包含,另一個(gè)是要有tc工具。本文介紹的流控只能控制發(fā)包動(dòng)作,不能控制收包動(dòng)作,同時(shí),它直接對(duì)物理接口生效,如果控制了物理的eth0,那么邏輯網(wǎng)卡(比如eth0:1)也會(huì)受到影響,反之,如果你在邏輯網(wǎng)卡上做控制,該控制可能是無(wú)效的。(注:虛擬機(jī)中的多個(gè)網(wǎng)卡可以在虛擬機(jī)中視為多個(gè)物理網(wǎng)卡)
下面我們來(lái)看linux 模擬丟包的相關(guān)命令:
1、模擬延遲傳輸
tc qdisc add dev eth0 root netem delay 100ms
該命令將 eth0 網(wǎng)卡的傳輸設(shè)置為延遲100毫秒發(fā)送。
更真實(shí)的情況下,延遲值不會(huì)這么精確,會(huì)有一定的波動(dòng),我們可以用下面的情況來(lái)模擬出帶有波動(dòng)性的延遲值:
tc qdisc add dev eth0 root netem delay 100ms 10ms
該命令將 eth0 網(wǎng)卡的傳輸設(shè)置為延遲 100ms ± 10ms (90 ~ 110 ms 之間的任意值)發(fā)送。
還可以更進(jìn)一步加強(qiáng)這種波動(dòng)的隨機(jī)性:
tc qdisc add dev eth0 root netem delay 100ms 10ms 30%
該命令將 eth0 網(wǎng)卡的傳輸設(shè)置為 100ms ,同時(shí),大約有 30% 的包會(huì)延遲 ± 10ms 發(fā)送。
2、模擬網(wǎng)絡(luò)丟包:
tc qdisc add dev eth0 root netem loss 1%
該命令將 eth0 網(wǎng)卡的傳輸設(shè)置為隨機(jī)丟掉 1% 的數(shù)據(jù)包。
也可以設(shè)置丟包的成功率:
tc qdisc add dev eth0 root netem loss 1% 30%
該命令將 eth0 網(wǎng)卡的傳輸設(shè)置為隨機(jī)丟掉 1% 的數(shù)據(jù)包,成功率為 30% 。
3、模擬包重復(fù):
tc qdisc add dev eth0 root netem duplicate 1%
該命令將 eth0 網(wǎng)卡的傳輸設(shè)置為隨機(jī)產(chǎn)生 1% 的重復(fù)數(shù)據(jù)包 。
4、模擬數(shù)據(jù)包損壞:
tc qdisc add dev eth0 root netem corrupt 0.2%
該命令將 eth0 網(wǎng)卡的傳輸設(shè)置為隨機(jī)產(chǎn)生 0.2% 的損壞的數(shù)據(jù)包 。 (內(nèi)核版本需在2.6.16以上)
5、模擬數(shù)據(jù)包亂序:
tc qdisc change dev eth0 root netem delay 10ms reorder 25% 50%
該命令將 eth0 網(wǎng)卡的傳輸設(shè)置為:有 25% 的數(shù)據(jù)包(50%相關(guān))會(huì)被立即發(fā)送,其他的延遲 10 秒。
新版本中,如下命令也會(huì)在一定程度上打亂發(fā)包的次序:
tc qdisc add dev eth0 root netem delay 100ms 10ms
6.刪除規(guī)則:
好了,模擬完丟包和延遲之后,要記得刪除掉規(guī)則
sudo tc qdisc del dev eth0 root
以上就是對(duì)Linux模擬丟包工具以及Linux模擬丟包的相關(guān)命令的介紹,Linux模擬丟包可以觀察到在特定的網(wǎng)絡(luò)環(huán)境下一些軟件的和系統(tǒng)的丟包率,對(duì)此進(jìn)行一些優(yōu)化。在本站的Linux教程中還有大量的Linux知識(shí)等你來(lái)學(xué)。
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)