Subject: net_sched: precision problem of TBF/HTB

From: Yang Yingliang <[email-masked]>
Date: Tue, 16 Jul 2013 12:12:05 +0800

Hi, Eric
Commit 1def9238d4aa2 (net_sched: more precise pkt_len computation) makes more precise transfer bytes by taking account of headers in qdisc_skb_cb(skb)->pkt_len, but this introduces a problem with calculating bandwidth in userland.

When calculating bandwidth in userland, it's not include headers' bytes. From the user's perspective, it's not a correct bandwidth.

Shall we need take account of headers in qdisc_skb_cb(skb)->pkt_len or just skb->len?

Example:
tc qdisc add dev $DEV root handle 1: tbf latency 50ms burst 500kB rate 500mbit mtu 64k

iperf -c host -t 30 -i 10
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec   571 MBytes   479 Mbits/sec
[  3] 10.0-20.0 sec   570 MBytes   478 Mbits/sec
[  3] 20.0-30.0 sec   570 MBytes   478 Mbits/sec
[  3]  0.0-30.0 sec  1.67 GBytes   478 Mbits/sec