[Cerowrt-devel] ingress rate limiting falling short

Sebastian Moeller moeller0 at gmx.de
Wed Jun 3 13:49:40 EDT 2015


HI Aaron,


On Jun 3, 2015, at 07:45 , Aaron Wood <woody77 at gmail.com> wrote:

> I wrote this up on my blog, where I can intersperse text and graphs a bit better:
> 
> http://burntchrome.blogspot.com/2015/06/htb-rate-limiting-not-quite-lining-up.html
> 
> Basically, I ran a series of tcp_download tests, using increasing ingress rates with sqm_scripts, and then used flent's box-plots to put the results into a combined image for comparing.
> 
> On the 3800, it never meets the rate, but it's only off by maybe 5%.  

	As Jonathan pointed out already this is in the range of the difference between raw rates and tcp good put, so nothing to write home about ;)

> But on my new WRT1900AC, it's wildly off, even over the same performance range (I tested it from 80-220Mbps rates in 20Mbps jumps, and saw from 40-150Mbps.

	So you started with the WRT1900AC where the wndr3800 dropped off? I wonder maybe the Belkin is also almost linear for the lower range? I also note we adjust the quantum based on the rates:
from functions .sh:
get_mtu() {
        BW=$2
        F=`cat /sys/class/net/$1/mtu`
        if [ -z "$F" ]
        then
        F=1500
        fi
        if [ $BW -gt 20000 ]
        then
                F=$(($F * 2))
        fi
        if [ $BW -gt 30000 ]
        then
                F=$(($F * 2))
        fi
        if [ $BW -gt 40000 ]
        then
                F=$(($F * 2))
        fi
        if [ $BW -gt 50000 ]
        then
                F=$(($F * 2))
        fi
        if [ $BW -gt 60000 ]
        then
                F=$(($F * 2))
        fi
        if [ $BW -gt 80000 ]
        then
                F=$(($F * 2))
        fi
        echo $F
}

which we use in the htb invocations via this indirection:
LQ="quantum `get_mtu $IFACE $CEIL`”

$TC qdisc add dev $DEV root handle 1: `get_stab_string` htb default 12
$TC class add dev $DEV parent 1: classid 1:1 htb $LQ rate ${CEIL}kbit ceil ${CEIL}kbit `get_htb_adsll_string`
$TC class add dev $DEV parent 1:1 classid 1:10 htb $LQ rate ${CEIL}kbit ceil ${CEIL}kbit prio 0 `get_htb_adsll_string`
$TC class add dev $DEV parent 1:1 classid 1:11 htb $LQ rate 32kbit ceil ${PRIO_RATE}kbit prio 1 `get_htb_adsll_string`
$TC class add dev $DEV parent 1:1 classid 1:12 htb $LQ rate ${BE_RATE}kbit ceil ${BE_CEIL}kbit prio 2 `get_htb_adsll_string`
$TC class add dev $DEV parent 1:1 classid 1:13 htb $LQ rate ${BK_RATE}kbit ceil ${BE_CEIL}kbit prio 3 `get_htb_adsll_string`

So maybe we need to extend the quantum increases beyond 80Mbps to keep things linear?

I don’t know but it sure looks suspicious…



> 
> I have no idea where to start looking for the cause.  But for now, I'm just setting my ingress rate MUCH higher than I should, because it's working out to the right value as a result.

	It would be great to understand why we need to massively under-shape in that situation to get decent shaping and decent latency under load.

Best Regards
	Sebastian

> 
> -Aaron
> _______________________________________________
> Cerowrt-devel mailing list
> Cerowrt-devel at lists.bufferbloat.net
> https://lists.bufferbloat.net/listinfo/cerowrt-devel




More information about the Cerowrt-devel mailing list