NETEM(8) Linux NETEM(8) (NAME) tc-netem - (SYNOPSIS) tc qdisc ... dev DEVICE ] add netem OPTIONS OPTIONS := [ LIMIT ] [ DELAY ] [ LOSS ] [ CORRUPT ] [ DUPLICATION ] [ REORDERING ] [ RATE ] [ SLOT ] [ SEED ] LIMIT := limit packets DELAY := delay TIME [ JITTER [ CORRELATION ]]] [ distribution { uniform | normal | pareto | paretonormal } ] LOSS := loss { random PERCENT [ CORRELATION ] | state p13 [ p31 [ p32 [ p23 [ p14]]]] | gemodel p [ r [ 1-h [ 1-k ]]] } [ ecn ] CORRUPT := corrupt PERCENT [ CORRELATION ]] DUPLICATION := duplicate PERCENT [ CORRELATION ]] REORDERING := reorder PERCENT [ CORRELATION ] [ gap DISTANCE ] RATE := rate RATE [ PACKETOVERHEAD [ CELLSIZE [ CELLOVERHEAD ]]]] SLOT := slot { MIN_DELAY [ MAX_DELAY ] | distribution { uniform | normal | pareto | paretonormal | FILE } DELAY JITTER } [ packets PACKETS ] [ bytes BYTES ] SEED := seed VALUE (DESCRIPTION) (qdisc) netem (Network Emulation) . : (delay) (loss) (duplication) (corruption). (OPTIONS) limit COUNT qdisc . delay TIME [ JITTER [ CORRELATION ]]] . (jitter) (correlation) . . distribution TYPE . uniform . normal . (Bell Curve) . pareto . (long-tail) . paretonormal pareto normal . loss MODEL . MODEL : random PERCENT . state P13 [ P31 [ P32 [ P23 P14 ]]] - . P13 . - P31 - P23 P32 - P14 . : 1 ( ). 2 (burst). 3 (burst losses). 4 . gemodel PERCENT [ R [ 1-H [ 1-K ]]] - ( ) : PERCENT ( ). R . 1-H . 1-K . ecn (ECN Explicit Congestion Notification) . . corrupt PERCENT PERCENT . duplicate PERCENT . reorder PERCENT . gap DISTANCE . (DISTANCE - 1) . rate RATE [ PACKETOVERHEAD [ CELLSIZE [ CELLOVERHEAD ]]] . : PACKETOVERHEAD . . ( -14) . CELLSIZE ATM . CELLOVERHEAD . . ( bursts) . slot MIN_DELAY [ MAX_DELAY ] (slotted) . . . slot distribution distribution . slot MAC DOCSIS (WiFi) LTE . : . (slotting) (rate) . seed VALUE (seed) . (LIMITATIONS) Netem . . . . (inter-packet arrival time) . TSQ ( TCP) TCP netem (ingress) . netem qdisc netem skb . (EXAMPLES) # tc qdisc add dev eth0 root netem delay 100ms eth0. 100ms +- 10ms . # tc qdisc change dev eth0 root netem delay 100ms 10ms 25% 100ms +- 10ms . . # tc qdisc change dev eth0 root netem delay 100ms 20ms distribution normal ( ) 100ms +- 20ms . # tc qdisc change dev eth0 root netem loss 0.1% ( ) . . . # tc qdisc change dev eth0 root netem duplicate 1% eth0 ( ). # tc qdisc change dev eth0 root netem loss 0.3% 25% . . (reordering) . gap N . # tc qdisc change dev eth0 root netem gap 5 delay 10ms ( ...) 10ms . (reassembly) . reorder . # tc qdisc change dev eth0 root netem delay 10ms reorder 25% 50% ( ) 10ms . . # tc qdisc change dev eth0 root netem delay 100ms 75ms 100ms (100ms - 0ms ) 1ms 50ms (100ms - 50ms ) . tfifo netem . tfifo FIFO . # tc qdisc add dev eth0 root handle 1: netem delay 10ms 100ms # tc qdisc add dev eth0 parent 1:1 pfifo limit 1000 : # tc qdisc add dev eth0 root netem rate 5kbit 20 100 5 eth0 5kbit . . # tc qdisc add dev eth0 root handle 1: prio # tc qdisc add dev eth0 parent 1:3 handle 30: tbf rate 20kbit buffer 1600 limit 3000 # tc qdisc add dev eth0 parent 30:1 handle 31: netem delay 200ms 10ms distribution normal # tc filter add dev eth0 protocol ip parent 1:0 prio 3 u32 match ip dst 65.172.181.4/32 flowid 1:3 TBF netem. 65.172.181.4 . (SOURCES) 1. Hemminger S. , "Network Emulation with NetEm", Open Source Development Lab, April 2005 2. Salsano S., Ludovici F., Ordine A., "Definition of a general and intuitive loss model for packet networks and its implementation in the Netem module in the Linux kernel", available at (SEE ALSO) tc(8) (AUTHORS) Netem Stephen Hemminger Linux foundation NISTnet . Fabio Ludovici Hagen Paul Pfeifer . iproute2 25 November 2011 NETEM(8)