[Cerowrt-devel] qos/aqm script testers wanted

Dave Taht dave.taht at gmail.com
Sun Apr 15 00:07:25 EDT 2012

I have, over the past year, looked at more streams, and qos/shaping
models, than I care to think about.

sfqred is the culmination of the first part of the effort and it's
proving to be hairy.

I finally got fed up with trying to make it all work out of lua and
tossed off this one, which addresses the
major parameters I've noticed as making a difference in today's environments.


The hairy red-related calculations (that needed lua) are currently
elided, and this works best in the 2-4Mbit range.

However, I could use some data from various tools, from people,
hitting various sites in order to scale up and down better.
Twiddle the hard coded uplink and PPOE variables in the script, then...

IFACE=ge00 ./simple_qos.sh

What I'm interested in:

ADSL users operating at 1Mbit or less, as well as 10Mbit
Verizon at 25Mbit
Cable at 2, 4Mbit uplinks
Other, weirder, technologies

In the script, if you want to hammer at finding good values...
I note that depth can be easily reduced to 20 or less in the median case.
And the the red parameters are terribly minimal. I got some data from
a verizon 25/25 site
that I simply couldn't make fit any curve.
I'm not at present doing ingress shaping, I will eventually.

I do a variety of tests -

0) ALWAYS run a ping.

During any of these tests, I ping away trying to keep ping RTT flat. I
log these pings, too. fping is good, you can set it up to ping on 10ms
intervals with larger than normal packets, to look more like voip.

1) I hit speedtest.net sites 4,30, and 90ms away in the US. Monkey
Brains in SF has ECN enabled (as does my laptop)

So I take their number with this script off

tc qdisc del dev ge00 root

Plug it into a script like this

and try it again (while pinging! It's latency under load we need to fix)

2) Netperf. The version of netperf on the router supports
classification. It's generally better to install and run netperf from
svn on a wired or wireless laptop...

After things work well with one stream, I fire up more and more...
then twiddle with the TCP_RR test, TCP_MAERTS,
ipv6, etc, etc

a typical command line is:

netperf -Y AF42,AF42 -l 60 -H huchra.bufferbloat.net -t TCP_STREAM &
netperf -Y AF42,AF42 -l 60 -H huchra.bufferbloat.net -t TCP_RR &

Which exercises the priority queue which is set to 33% of the bandwidth.

netperf -l 60 -H huchra.bufferbloat.net -t TCP_STREAM & # sometimes 50 or more
netperf -l 60 -H huchra.bufferbloat.net -t TCP_RR &

Does best effort. (CEIL - a little). Note the -l 60. Frankly, 10
minutes of data with
a packet capture is often far more revealing than 60 seconds...

I'll sometimes run 50 or more of these sorts of things, to observe
when, for example
tcp streams get starved and can't get out of slow start.

There are netperf servers setup on machines here, with both IPv6 and
IPv4 support, they are

carme.lab.bufferbloat.net # this machine appears to have problems

I try to capture the output of

tc -s qdisc show dev ge00  >> /tmp/log
tc -s class show dev ge00 >> /tmp/log

after each one.

Anyway, happy hacking. It is my hope to automate the iterative process
of finding the 'more right numbers'
within reason...

I note also the output of shaperprobe is often interesting. It's not
installed by default can

Dave Täht
SKYPE: davetaht
US Tel: 1-239-829-5608

More information about the Cerowrt-devel mailing list