[Cerowrt-devel] performance numbers from WRT1200AC (Re: Latest build test - new sqm-scripts seem to work; "cake overhead 40" didn't)

Sebastian Moeller moeller0 at gmx.de
Mon Jun 29 09:34:39 EDT 2015


Hi Mikael,

On Jun 29, 2015, at 15:00 , Mikael Abrahamsson <swmike at swm.pp.se> wrote:
> [...]
> Hi,
> 
> Ok, yes, this worked, I must have forgotten do to update after I moved ceropackages to the top of the list before. Thanks!
> 
> So now I have a sysupgrade image for the wrt1200ac that out of the box comes with CeroPackages and working bidirectional shaping for cake (don't know why it didn't work before, it might have to do with my modifications. This time I didn't modify anything on-disk, this is purely from the CeroPackages feed).

	Erm, I committed the fix for the $DEV $IFACE confusion to the ceropackages repository, so you got the fixed version you helped fix ;) (that or you deselected ingress 3-tier classification).

> 
> I did try to get Kernel 4.1 to compile but that didn't work even though I removed some packages that didn't compile, I ended up with no .dts file and nothing to me obvious in scrollback to fix. So this is with 3.18.
> 
> Here are the cake 50M and 500M results and output from the router:
> 
> oot at OpenWrt:~# cat /etc/config/sqm
> 
> config queue 'eth1'
> 	option interface 'eth0'
> 	option qdisc_advanced '1'
> 	option squash_dscp '0'
> 	option squash_ingress '0'
> 	option ingress_ecn 'ECN'
> 	option egress_ecn 'ECN'
> 	option qdisc_really_really_advanced '0'
> 	option linklayer 'ethernet'
> 	option overhead '42'
> 	option linklayer_advanced '1'
> 	option tcMTU '2047'
> 	option tcTSIZE '128'
> 	option tcMPU '0'
> 	option enabled '1'
> 	option script 'simple.qos'
> 	option qdisc 'cake'
> 	option linklayer_adaptation_mechanism 'cake'
> 	option download '500000'
> 	option upload '500000'
> 
> root at OpenWrt:~# tc -d qdisc
> qdisc cake 8009: dev eth0 root refcnt 9 bandwidth 500Mbit diffserv4 flows noatm overhead 42
> qdisc ingress ffff: dev eth0 parent ffff:fff1 ----------------
> qdisc mq 0: dev eth1 root
> qdisc fq_codel 0: dev eth1 parent :1 limit 1024p flows 1024 quantum 300 target 5.0ms interval 100.0ms ecn
> qdisc fq_codel 0: dev eth1 parent :2 limit 1024p flows 1024 quantum 300 target 5.0ms interval 100.0ms ecn
> qdisc fq_codel 0: dev eth1 parent :3 limit 1024p flows 1024 quantum 300 target 5.0ms interval 100.0ms ecn
> qdisc fq_codel 0: dev eth1 parent :4 limit 1024p flows 1024 quantum 300 target 5.0ms interval 100.0ms ecn
> qdisc fq_codel 0: dev eth1 parent :5 limit 1024p flows 1024 quantum 300 target 5.0ms interval 100.0ms ecn
> qdisc fq_codel 0: dev eth1 parent :6 limit 1024p flows 1024 quantum 300 target 5.0ms interval 100.0ms ecn
> qdisc fq_codel 0: dev eth1 parent :7 limit 1024p flows 1024 quantum 300 target 5.0ms interval 100.0ms ecn
> qdisc fq_codel 0: dev eth1 parent :8 limit 1024p flows 1024 quantum 300 target 5.0ms interval 100.0ms ecn
> qdisc cake 800a: dev ifb4eth0 root refcnt 2 bandwidth 500Mbit diffserv4 flows noatm overhead 42

	I love that passing per packet overheads to cake works, but for your testing it is going to reduce the maximum achievable speed from:

TCP/IPv4 Payload at 500Mbps shaping:
1500 - 20 - 20 = 1460 Byte
payload to OTWS ratio
1460/1518 = 0.961791831357
Payload Bandwidth
500*1460/1518 = 480.90 Mbps

to:

TCP/IPv4 Payload at 500Mbps shaping: with overhead 42
MTU: 1500
MSS: 1500 - 20 - 20 = 1460 Byte
PerPacketOverhead: 42
configured On-The-Wire Size: 1500 + 42 = 1542 Byte
payload to OTWS ratio (due to the explicitly configured overhead42)
1460/1542 = 0.961791831357
Payload Bandwidth
500*1460/1542 = 473.411154345 Mbps

I really ned to get a new router to take part in all the fun…

Best Regards
	Sebastian



> 
> These are the results from 50M and 500M, also including 50up and 50down that I added to my test suite script.
> 
> http://swm.pp.se/aqm/rrul_150629-cake-4.tar
> 
> Then I re-did the test that Dave asked before, I set the wan port to 100 megabit/s in my switch, and removed the SQM. It resulted in the following config:
> 
> root at OpenWrt:~# cat /etc/config/sqm
> 
> config queue 'eth1'
> 	option interface 'eth0'
> 	option qdisc_advanced '1'
> 	option squash_dscp '0'
> 	option squash_ingress '0'
> 	option ingress_ecn 'ECN'
> 	option egress_ecn 'ECN'
> 	option qdisc_really_really_advanced '0'
> 	option linklayer 'ethernet'
> 	option overhead '42'
> 	option linklayer_advanced '1'
> 	option tcMTU '2047'
> 	option tcTSIZE '128'
> 	option tcMPU '0'
> 	option script 'simple.qos'
> 	option qdisc 'cake'
> 	option linklayer_adaptation_mechanism 'cake'
> 	option download '50000'
> 	option upload '50000'
> 	option enabled '0'
> 
> root at OpenWrt:~# tc -d qdisc
> qdisc mq 0: dev eth0 root
> qdisc fq_codel 0: dev eth0 parent :1 limit 1024p flows 1024 quantum 300 target 5.0ms interval 100.0ms ecn
> qdisc fq_codel 0: dev eth0 parent :2 limit 1024p flows 1024 quantum 300 target 5.0ms interval 100.0ms ecn
> qdisc fq_codel 0: dev eth0 parent :3 limit 1024p flows 1024 quantum 300 target 5.0ms interval 100.0ms ecn
> qdisc fq_codel 0: dev eth0 parent :4 limit 1024p flows 1024 quantum 300 target 5.0ms interval 100.0ms ecn
> qdisc fq_codel 0: dev eth0 parent :5 limit 1024p flows 1024 quantum 300 target 5.0ms interval 100.0ms ecn
> qdisc fq_codel 0: dev eth0 parent :6 limit 1024p flows 1024 quantum 300 target 5.0ms interval 100.0ms ecn
> qdisc fq_codel 0: dev eth0 parent :7 limit 1024p flows 1024 quantum 300 target 5.0ms interval 100.0ms ecn
> qdisc fq_codel 0: dev eth0 parent :8 limit 1024p flows 1024 quantum 300 target 5.0ms interval 100.0ms ecn
> qdisc mq 0: dev eth1 root
> qdisc fq_codel 0: dev eth1 parent :1 limit 1024p flows 1024 quantum 300 target 5.0ms interval 100.0ms ecn
> qdisc fq_codel 0: dev eth1 parent :2 limit 1024p flows 1024 quantum 300 target 5.0ms interval 100.0ms ecn
> qdisc fq_codel 0: dev eth1 parent :3 limit 1024p flows 1024 quantum 300 target 5.0ms interval 100.0ms ecn
> qdisc fq_codel 0: dev eth1 parent :4 limit 1024p flows 1024 quantum 300 target 5.0ms interval 100.0ms ecn
> qdisc fq_codel 0: dev eth1 parent :5 limit 1024p flows 1024 quantum 300 target 5.0ms interval 100.0ms ecn
> qdisc fq_codel 0: dev eth1 parent :6 limit 1024p flows 1024 quantum 300 target 5.0ms interval 100.0ms ecn
> qdisc fq_codel 0: dev eth1 parent :7 limit 1024p flows 1024 quantum 300 target 5.0ms interval 100.0ms ecn
> qdisc fq_codel 0: dev eth1 parent :8 limit 1024p flows 1024 quantum 300 target 5.0ms interval 100.0ms ecn
> qdisc cake 800c: dev ifb4eth0 root refcnt 2 bandwidth 50Mbit diffserv4 flows noatm overhead 42
> root at OpenWrt:~# tc -d class show dev eth0
> class mq :1 root
> class mq :2 root
> class mq :3 root
> class mq :4 root
> class mq :5 root
> class mq :6 root
> class mq :7 root
> class mq :8 root
> 
> what worries me is this:
> 
> root at OpenWrt:~# ethtool eth0
> Settings for eth0:
> 	Supported ports: [ TP MII ]
> 	Supported link modes:   1000baseT/Half 1000baseT/Full
> 	Supported pause frame use: No
> 	Supports auto-negotiation: Yes
> 	Advertised link modes:  1000baseT/Half 1000baseT/Full
> 	Advertised pause frame use: No
> 	Advertised auto-negotiation: Yes
> 	Link partner advertised link modes:  1000baseT/Full
> 	Link partner advertised pause frame use: No
> 	Link partner advertised auto-negotiation: No
> 	Speed: 1000Mb/s
> 	Duplex: Full
> 	Port: MII
> 	PHYAD: 0
> 	Transceiver: external
> 	Auto-negotiation: on
> 	Link detected: yes
> 
> So basically even after the wan port went to 100/full, eth0 doesn't know about it (and it only supports gig speed (probably to the local switch) anyway. I am seeing dropped packets, so this would support this theory.
> 
> First I ran some tests with only that, then I set SQM to 90 megabit/s results here:
> 
> http://swm.pp.se/aqm/rrul_150629-cake-5.tar
> http://swm.pp.se/aqm/rrul_150629-cake-6.tar
> 
> Next I am going to test wireless but it seems something has gone wrong because I can't get the wireless to enable properly, so that'll have to be for the next email after I fix that problem.
> 
> -- 
> Mikael Abrahamsson    email: swmike at swm.pp.se_______________________________________________
> 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