• H
    netem: rate extension · 7bc0f28c
    Hagen Paul Pfeifer 提交于
    Currently netem is not in the ability to emulate channel bandwidth. Only static
    delay (and optional random jitter) can be configured.
    
    To emulate the channel rate the token bucket filter (sch_tbf) can be used.  But
    TBF has some major emulation flaws. The buffer (token bucket depth/rate) cannot
    be 0. Also the idea behind TBF is that the credit (token in buckets) fills if
    no packet is transmitted. So that there is always a "positive" credit for new
    packets. In real life this behavior contradicts the law of nature where
    nothing can travel faster as speed of light. E.g.: on an emulated 1000 byte/s
    link a small IPv4/TCP SYN packet with ~50 byte require ~0.05 seconds - not 0
    seconds.
    
    Netem is an excellent place to implement a rate limiting feature: static
    delay is already implemented, tfifo already has time information and the
    user can skip TBF configuration completely.
    
    This patch implement rate feature which can be configured via tc. e.g:
    
    	tc qdisc add dev eth0 root netem rate 10kbit
    
    To emulate a link of 5000byte/s and add an additional static delay of 10ms:
    
    	tc qdisc add dev eth0 root netem delay 10ms rate 5KBps
    
    Note: similar to TBF the rate extension is bounded to the kernel timing
    system. Depending on the architecture timer granularity, higher rates (e.g.
    10mbit/s and higher) tend to transmission bursts. Also note: further queues
    living in network adaptors; see ethtool(8).
    Signed-off-by: NHagen Paul Pfeifer <hagen@jauu.net>
    Acked-by: NEric Dumazet <eric.dumazet@gmail.com>
    Signed-off-by: NDavid S. Miller <davem@drr.davemloft.net>
    7bc0f28c
sch_netem.c 23.6 KB