Linux TC模擬網絡延遲、丟包、亂序

1.TC簡介

       netem與tc: netem是Linux 2.6及以上內核版本提供的一個網絡模擬功能模塊。該功能模塊可以用來在性能良好的局域網中,模擬出複雜的互聯網傳輸性能,諸如低帶寬、傳輸延遲、丟包等等情況。使用 Linux 2.6 (或以上) 版本內核的很多發行版Linux都開啓了該內核功能,比如Fedora、Ubuntu、Redhat、OpenSuse、CentOS、Debian等等。tc是Linux系統中的一個工具,全名爲traffic control(流量控制)。tc可以用來控制netem的工作模式,也就是說,如果想使netem ,需要至少兩個條件,一個是內核中的netem功能被包含,另一個是要有tc。

流量控制的基本原理如下圖所示:

 2.TC常用命令

2.1 模擬網絡延時

命令:

tc qdisc add dev eth0 root netem delay 100ms

說明:該命令指的是對eth0網卡設置延時100ms,eth0名可以通過ifconfig查看,時間單位可以爲s、ms、us

2.2模擬網絡丟包

命令:

tc qdisc add dev eth0 root netem loss 1% 30%

說明:該命令指的是對eth0網卡設置爲隨機丟包1%,成功率30%。

2.3模擬包重複

命令:

tc qdisc add dev eth0 root netem duplicate 1%

說明:該命令指的是對eth0網卡設置隨機產生1%的重複包。

2.4模擬包亂序

命令:

tc qdisc change dev eth0 root netem delay 10ms reorder 25% 50%

說明:該命令指的是對eth0網卡設置爲25%的數據包(50%相關)會被立即發送,其他延遲10秒,在新版本中,也可以通過以下指令實現: tc qdisc add dev eth0 root netem delay 100ms 10ms 75%(大約有75%的包會延遲±10ms發送)。

2.5 查看配置

命令:

tc qdisc show dev eth0

說明:該命令指的是查看eth0網卡設置。

2.6 恢復初始配置

命令:

tc qdisc del dev eth0 root

說明:該命令指刪除所有的配置,恢復初始配置。

3.示例

產生100ms延時,10%丟包。則:

第一步:設置前ping 20包,查看情況:

第二步:tc qdisc add dev eth0 root netem delay 100ms loss 10%,再ping包,則顯示如下:

通過以上兩步,可以看出明顯延時100ms,同時有10%的丟包,所以模擬成功。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章