Thread (31 messages) 31 messages, 9 authors, 2013-06-07

Re: tc linklayer ADSL calc broken after commit 56b765b79 (htb: improved accuracy at high rates)

From: Jesper Dangaard Brouer <hidden>
Date: 2013-05-30 09:16:33

On Wed, 29 May 2013 16:18:26 -0700
Eric Dumazet [off-list ref] wrote:
On Wed, 2013-05-29 at 15:50 -0700, Stephen Hemminger wrote:
quoted
On Wed, 29 May 2013 08:52:04 -0700
Eric Dumazet [off-list ref] wrote:
quoted
On Wed, 2013-05-29 at 15:13 +0200, Jesper Dangaard Brouer wrote:
quoted
I recently discovered that the (traffic control) tc linklayer
calculations for ATM/ADSL have been broken by:
 commit 56b765b79 (htb: improved accuracy at high rates).

Thus, people shaping on ADSL links, using e.g.:
 tc class add ... htb rate X ceil Y linklayer atm overhead 10

Will no-longer get ATM cell tax/overhead adjusted.
Adding the logic on the kernel is doable, by adding some clean
attributes so that tc can setup the feature, and report the attributes
back.
Yes, doing the logic in the kernel might be a better solution.
But the question is how do we keep iproute2 backward compatible with
older kernels?


cpus are fast today and can perform the atm cell/overhead faster than
a table lookup.
Do remember that the target CPU is small embedded router boxes.
BUT I do agree that, the following code required, is probably faster
than a table lookup:

 int pkt_len = skb->len + (encap_overhead * gso_segments);
 int wire_sz = DIV_ROUND_UP(pkt_len,48)*53;

(I suspect, that the compiler might even optimize and remove any
real divisions, I bet Eric can tell us.)

Looking at how simple the above code is, I'm a little appalled by all
the table lookup infrastructure and hacks we added, to
support/implement this.

-- 
Best regards,
  Jesper Dangaard Brouer
  MSc.CS, Sr. Network Kernel Developer at Red Hat
  Author of http://www.iptv-analyzer.org
  LinkedIn: http://www.linkedin.com/in/brouer
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help