1. 程式人生 > 其它 >linux tc模擬弱網延遲和丟包

linux 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 

如何檢視Linux網絡卡:ifconfig可檢視,這裡假設Linux網絡卡名字為eth0

  • 埠延時命令
  1. tc qdisc add dev eth0 root netem delay 100ms : 表示對埠廷時100ms
  2. tc qdisc del dev eth0 root netem delay 100ms : 表示對埠廷時命令刪除
  3. tc qdisc add dev eth0 root netem delay 100ms 10ms :表示對改變埠廷時命100ms ± 10ms 延時範圍(90到110)
  4. tc qdisc add dev eth0 root netem delay 100ms 10ms 25% : 表示廷時範圍100ms ,同時有25%以± 10ms波動延遲
  • 埠丟包命令:
  1. tc qdisc add dev eth0 root netem loss 0.1% : 丟包率為0.1%
  2. tc qdisc add dev eth0 root netem loss 0.3% 25% : 丟包率為範圍(0.3%- 25%)
  • 資料包重包命令
  1. tc qdisc add dev eth0 root netem duplicate 1% : 隨機產生 1% 的重複資料包
  • 資料包分發命令
  1. tc qdisc add dev eth0 root netem gap 5 delay 10ms : 資料包重發每格5的整數倍的包將不被延時。其它的將延時10ms
  • 速率控制命令:兩條命令共同完成
  1. tc qdisc add dev eth0 root handle 1:0 netem delay 100ms
  2. tc qdisc add dev eth0 parent 1:1 handle 10: tbf rate 256kbit buffer 1600 limit 3000
  • 檢視規則資訊
  1. tc -s qdisc ls dev eth0
  2. tc qdisc show
  • 刪除規則
    tc qdisc del dev eth0 root