Back to main site | Back to man page index

NETEM(8)                                                Linux                                                NETEM(8)



NAME
       NetEm - Network Emulator

SYNOPSIS
       tc qdisc ... dev DEVICE ] add netem OPTIONS

       OPTIONS := [ LIMIT ] [ DELAY ] [ LOSS ] [ CORRUPT ] [ DUPLICATION ] [ REORDERING ][ RATE ]

       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 ]]]]



DESCRIPTION
       NetEm is an enhancement of the Linux traffic control facilities that allow to add delay, packet loss, duplica‐
       tion and more other characteristics to packets outgoing from a selected  network  interface.  NetEm  is  built
       using  the  existing  Quality  Of Service (QOS) and Differentiated Services (diffserv) facilities in the Linux
       kernel.


netem OPTIONS
       netem has the following options:


   limit packets
       limits the effect of selected options to the indicated number of next packets.


   delay
       adds the chosen delay to the packets outgoing to chosen network interface. The optional parameters  allows  to
       introduce  a delay variation and a correlation.  Delay and jitter values are expressed in ms while correlation
       is percentage.


   distribution
       allow the user to choose the delay distribution. If not specified, the default distribution is  Normal.  Addi‐
       tional parameters allow to consider situations in which network has variable delays depending on traffic flows
       concurring on the same path, that causes several delay peaks and a tail.


   loss random
       adds an independent loss probability to the packets outgoing from the chosen network  interface.  It  is  also
       adds  packet  losses  according to the Gilbert-Elliot loss model or its special cases (Gilbert, Simple Gilbert
       and Bernoulli). To use the Bernoulli model, the only needed parameter is p while the others will be set to the
       default  values  r=1-p, 1-h=1 and 1-k=0. The parameters needed for the Simple Gilbert model are two (p and r),
       while three parameters (p, r, 1-h) are needed for the Gilbert model and four (p, r, 1-h and  1-k)  are  needed
       for  the Gilbert-Elliot model. As known, p and r are the transition probabilities between the bad and the good
       states, 1-h is the loss probability in the bad state and 1-k is the loss probability in the good state.


   ecn
       can be used optionally to mark packets instead of dropping them. A loss model has to be used for  this  to  be
       enabled.


   corrupt
       allows  the  emulation of random noise introducing an error in a random position for a chosen percent of pack‐
       ets. It is also possible to add a correlation through the proper parameter.


   duplicate
       using this option the chosen percent of packets is duplicated before queuing them. It is also possible to  add
       a correlation through the proper parameter.


   reorder
       to  use  reordering,  a delay option must be specified. There are two ways to use this option (assuming 'delay
       10ms' in the options list).

       reorder 25% 50% gap 5
       in this first example, the first 4 (gap - 1) packets are delayed by 10ms and subsequent packets are sent imme‐
       diately  with  a probability of 0.25 (with correlation of 50% ) or delayed with a probability of 0.75. After a
       packet is reordered, the process restarts i.e. the next 4 packets are delayed and subsequent packets are  sent
       immediately  or  delayed based on reordering probability. To cause a repeatable pattern where every 5th packet
       is reordered reliably, a reorder probability of 100% can be used.

       reorder 25% 50%
       in this second example 25% of packets are sent immediately (with correlation of  50%)  while  the  others  are
       delayed by 10 ms.


   rate
       delay  packets based on packet size and is a replacement for TBF.  Rate can be specified in common units (e.g.
       100kbit). Optional PACKETOVERHEAD (in bytes) specify an per packet overhead and can be  negative.  A  positive
       value  can be used to simulate additional link layer headers. A negative value can be used to artificial strip
       the Ethernet header (e.g. -14) and/or simulate a link layer header compression scheme. The third  parameter  -
       an unsigned value - specify the cellsize. Cellsize can be used to simulate link layer schemes. ATM for example
       has an payload cellsize of 48 bytes and 5 byte per cell header. If a packet is 50 byte then ATM must  use  two
       cells:  2 * 48 bytes payload including 2 * 5 byte header, thus consume 106 byte on the wire. The last optional
       value CELLOVERHEAD can be used to specify per cell overhead - for our ATM example 5.  CELLOVERHEAD can be neg‐
       ative, but use negative values with caution.

       Note  that rate throttling is limited by several factors: the kernel clock granularity avoid a perfect shaping
       at a specific level. This will show up in an artificial packet compression (bursts). Another influence  factor
       are network adapter buffers which can also add artificial delay.


SOURCES
        1. Hemminger  S.  ,  "Network  Emulation  with NetEm", Open Source Development Lab, April 2005 (http://devre‐
           sources.linux-foundation.org/shemminger/netem/LCA2005_paper.pdf)


        2. Netem page from Linux foundation, (http://www.linuxfoundation.org/en/Net:Netem)


        3. 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  http://net‐
           group.uniroma2.it/NetemCLG


SEE ALSO
       tc(8), tc-tbf(8)


AUTHOR
       Netem was written by Stephen Hemminger at Linux foundation and is based on NISTnet.  This manpage was  created
       by Fabio Ludovici <fabio.ludovici at yahoo dot it> and Hagen Paul Pfeifer <[email protected]>



iproute2                                           25 November 2011                                          NETEM(8)