需以 root 權限才能操作,用來模擬封包遺失、延遲。
Linux 2.6 之後的 kernel 有一種機制叫做 netem(Network Emulation),
可以用來模擬 packet loss、delay、reordering、duplication 等。

在 eth1 上模擬延遲 100ms 的延遲時間
# tc qdisc add dev eth1 root netem delay 100ms

從 eth1 出去的封包會被 delay,從 eth1 進來的封包不會被 delay,
之後如果要修改 delay 的值,則把 add 改成 change 即可。
# tc qdisc change dev eth1 root netem delay 1000ms

模擬每個封包有不同的延遲時間 (100ms ± 10ms)
# tc qdisc change dev eth1 root netem delay 100ms 10ms

模擬延遲時間具數學統計模型 (常態分佈)
# tc qdisc change dev eth1 root netem delay 100ms 10ms distribution normal

模擬延遲具時間相關,讓每個封包的延遲和前一個封包的延遲有 25% 相關
# tc qdisc change dev eth1 root netem delay 100ms 10ms 25%

取消在 eht1 上所有的規則 (delay,loss …)
# tc qdisc del dev eth1 root netem

在 eth1 上加 30% 的 packet loss rate
# tc qdisc change dev eth1 root netem loss 30%

改變前後封包相關的丟失機率 (P[N+1]=P[N]*0.20+rand()*0.80)
# tc qdisc change dev eth1 root netem loss 0.1% 20%
232 = 0.0000000232%

同時有 30% 的 packet loss 和 100ms 的 delay
# tc qdisc change dev eth1 root netem loss 30% delay 100ms

10% 封包重複發送
# tc qdisc change dev eth1 root netem duplicate 10%

25% 封包直接送出,75% 封包延遲 500ms(±100ms) 後送出
# tc qdisc change dev eth1 root netem reorder 25% delay 500ms (100ms)

5% 的 bits 會 0 變 1 或 1 變 0,造成封包損壞的現象
# tc qdisc change dev eth1 root netem corrupt 5%

flyfox 發表在 痞客邦 PIXNET 留言(0) 人氣()