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%的丟包,所以模擬成功。