[Cerowrt-devel] late report on 3.7.4-3 with ATM linklayer

Sebastian Moeller moeller0 at gmx.de
Mon Jul 15 15:59:33 EDT 2013

Hi Dave, hi group

so finally I am getting around to repeat a few test with cerowrt on a rather typical ADSL line. Using simple_qos.sh did not result in nice ping time behavior under up- and downlink saturating loads, as I had seen with earlier versions (like 1.5 years ago when I switched to an docsis carrier). Even though I had actives the scripts provisions for ATM and my PPPOE overhead. Still the occasional ping was delayed for 400+ milliseconds (with unloaded ping time to the host of ~24 ms). The following two changes to (the old) simple_qos.sh script helped a lot (by somehow bounding the worst case ping at around 105 ms, still not great, but so much better than before…). Anyway here are the two additions:
Note: I have no linux machine at home ATM so I do my measurements under macosx and I have not managed to get netsurf-wrapper to work for me, so all data are quite inscientifcly recorded (start a long ping train against the nearest ISP-side host that reliably responds to my ping probes and shows robust timing without load, then adding a big link saturating file transfer to the net, then opening 99 browser tabs at once). Finally my encapsulation ends up in a per packet overhead of 40 bytes per packet (in addition to the ip header and all the rest).

EGRESS_STAB_STRING="stab mtu 2048 tsize 128 overhead 26 linklayer atm"
INGRESS_STAB_STRING="stab mtu 2048 tsize 128 overhead 40 linklayer atm"

(NOTE: mtu here is not MTU but an stab specific way of setting an upper limit for the size table to be built and used)

and here is where I put them:
1) in egress()
c qdisc add dev $IFACE root handle 1: ${EGRESS_STAB_STRING} htb ${RTQ} default 12 
2) in ingress()
tc qdisc add dev $DEV root handle 1: ${INGRESS_STAB_STRING} htb ${RTQ} default 12 
and in addition I set:

UPLINK=2400	#2558
DOWNLINK=15582	#16402
QDISC=nfq_codel # nfq_codel is higher over head than fq_codel but does better on quantums. I hope.
PERTURB="perturb 0" # Permutation is costly, disable
FLOWS=16000 # 
BQL_MAX=3000 # it is important to factor this into the RED calc


(using the same setting with empty [E|IN]GRESS_STAB_STRING variables but PPOE=1 yielded the quite miserable maximal ping times of > 400ms).

So my hunch is that the more general stab mechanism (which to this layman seems to work not by fudging the rate in the kernel, but by telling the kernel the actually sizes of the data packets (in the linklayer) so the kernel shapes correctly) seems to have taken less damage the original HTB internal mechanism of the same spirit. I will, once I get round to it, that is, try to repeat these measurement with the most recent cerowrt alpha build. I encourage everyone on an ATM link to test the described modifications and report back success or failure. 
	Don't know whether your XDSL line uses ATM as link layer, don't know your overhead? just let me know I might be able to help :). Most VDSLs hopefully use packet transfer mode (PTM) which did away with the ATM cell quantization voodoo, so only ADSL, ADSL2 and ADSL2+ user need to worry about the link layer. The overhead however might also be an issue with VDSL…


More information about the Cerowrt-devel mailing list