• Eric Dumazet's avatar
    netem: use rb tree to implement the time queue · aec0a40a
    Eric Dumazet authored
    Following typical setup to implement a ~100 ms RTT and big
    amount of reorders has very poor performance because netem
    implements the time queue using a linked list.
    -----------------------------------------------------------
    ETH=eth0
    IFB=ifb0
    modprobe ifb
    ip link set dev $IFB up
    tc qdisc add dev $ETH ingress 2>/dev/null
    tc filter add dev $ETH parent ffff: \
       protocol ip u32 match u32 0 0 flowid 1:1 action mirred egress \
       redirect dev $IFB
    ethtool -K $ETH gro off tso off gso off
    tc qdisc add dev $IFB root netem delay 50ms 10ms limit 100000
    tc qd add dev $ETH root netem delay 50ms limit 100000
    ---------------------------------------------------------
    
    Switch netem time queue to a rb tree, so this kind of setup can work at
    high speed.
    Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
    Cc: Stephen Hemminger <stephen@networkplumber.org>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    aec0a40a
sch_netem.c 25.5 KB