• Md. Islam's avatar
    sch_netem: Bug fixing in calculating Netem interval · 043e337f
    Md. Islam authored
    In Kernel 4.15.0+, Netem does not work properly.
    
    Netem setup:
    
    tc qdisc add dev h1-eth0 root handle 1: netem delay 10ms 2ms
    
    Result:
    
    PING 172.16.101.2 (172.16.101.2) 56(84) bytes of data.
    64 bytes from 172.16.101.2: icmp_seq=1 ttl=64 time=22.8 ms
    64 bytes from 172.16.101.2: icmp_seq=2 ttl=64 time=10.9 ms
    64 bytes from 172.16.101.2: icmp_seq=3 ttl=64 time=10.9 ms
    64 bytes from 172.16.101.2: icmp_seq=5 ttl=64 time=11.4 ms
    64 bytes from 172.16.101.2: icmp_seq=6 ttl=64 time=11.8 ms
    64 bytes from 172.16.101.2: icmp_seq=4 ttl=64 time=4303 ms
    64 bytes from 172.16.101.2: icmp_seq=10 ttl=64 time=11.2 ms
    64 bytes from 172.16.101.2: icmp_seq=11 ttl=64 time=10.3 ms
    64 bytes from 172.16.101.2: icmp_seq=7 ttl=64 time=4304 ms
    64 bytes from 172.16.101.2: icmp_seq=8 ttl=64 time=4303 ms
    
    Patch:
    
    (rnd % (2 * sigma)) - sigma was overflowing s32. After applying the
    patch, I found following output which is desirable.
    
    PING 172.16.101.2 (172.16.101.2) 56(84) bytes of data.
    64 bytes from 172.16.101.2: icmp_seq=1 ttl=64 time=21.1 ms
    64 bytes from 172.16.101.2: icmp_seq=2 ttl=64 time=8.46 ms
    64 bytes from 172.16.101.2: icmp_seq=3 ttl=64 time=9.00 ms
    64 bytes from 172.16.101.2: icmp_seq=4 ttl=64 time=11.8 ms
    64 bytes from 172.16.101.2: icmp_seq=5 ttl=64 time=8.36 ms
    64 bytes from 172.16.101.2: icmp_seq=6 ttl=64 time=11.8 ms
    64 bytes from 172.16.101.2: icmp_seq=7 ttl=64 time=8.11 ms
    64 bytes from 172.16.101.2: icmp_seq=8 ttl=64 time=10.0 ms
    64 bytes from 172.16.101.2: icmp_seq=9 ttl=64 time=11.3 ms
    64 bytes from 172.16.101.2: icmp_seq=10 ttl=64 time=11.5 ms
    64 bytes from 172.16.101.2: icmp_seq=11 ttl=64 time=10.2 ms
    Reviewed-by: default avatarStephen Hemminger <stephen@networkplumber.org>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    043e337f
sch_netem.c 29.6 KB