[Cerowrt-devel] wifi over narrow channels

2014-10-08 Thread Dave Taht
https://www.usenix.org/system/files/conference/nsdi12/nsdi12-final142.pdf

I've had 5mhz channels working in the ath9k at various points in
cerowrt's lifetime. (using it for meshy stuff) After digesting most of
the 802.11ac standard I do find myself wishing they'd gone towards
narrower channels rather than wider.

The netgear x4 defaults to a 160mhz wide channel. :sigh:

The above paper has some nifty ideas in it.

-- 
Dave Täht

https://www.bufferbloat.net/projects/make-wifi-fast
___
Cerowrt-devel mailing list
Cerowrt-devel@lists.bufferbloat.net
https://lists.bufferbloat.net/listinfo/cerowrt-devel


Re: [Cerowrt-devel] wifi over narrow channels

2014-10-08 Thread Joel Wirāmu Pauling
IIRC only some of the ath9k radio's are able to do 5mhz channels -
namely the enterprise chip variants.

-Joel

On 9 October 2014 11:14, Dave Taht dave.t...@gmail.com wrote:
 https://www.usenix.org/system/files/conference/nsdi12/nsdi12-final142.pdf

 I've had 5mhz channels working in the ath9k at various points in
 cerowrt's lifetime. (using it for meshy stuff) After digesting most of
 the 802.11ac standard I do find myself wishing they'd gone towards
 narrower channels rather than wider.

 The netgear x4 defaults to a 160mhz wide channel. :sigh:

 The above paper has some nifty ideas in it.

 --
 Dave Täht

 https://www.bufferbloat.net/projects/make-wifi-fast
 ___
 Cerowrt-devel mailing list
 Cerowrt-devel@lists.bufferbloat.net
 https://lists.bufferbloat.net/listinfo/cerowrt-devel
___
Cerowrt-devel mailing list
Cerowrt-devel@lists.bufferbloat.net
https://lists.bufferbloat.net/listinfo/cerowrt-devel


Re: [Cerowrt-devel] [OpenWrt-Devel] [RFC PATCH] packages: Smart Queue Management for AQM Packet Scheduling and Qos from CeroWrt

2014-10-08 Thread Alpha Sparc
How good is the throughput on CeroWrt compared to OpenWrt ?
On Oct 2, 2014 9:55 AM, Dave Taht dave.t...@bufferbloat.net wrote:

 On Wed, Oct 01, 2014 at 12:10:46PM -0400, Weedy wrote:
  On 30/03/14 06:29 PM, Dave Taht wrote:
   On Sun, Mar 30, 2014 at 02:24:44PM -0400, Weedy wrote:
   On Sat, Mar 29, 2014 at 2:56 PM, Dave Täht dave.t...@bufferbloat.net
 wrote:
  
   From: Dave Taht dave.t...@bufferbloat.net
  
   This adds support for the bufferbloat project's Smart Queue
 Management
   (SQM) system, which improves over openwrt's qos-scripts in the
 following
   ways
  
   + Uses HTB with two models for managing traffic
 a simplest one that merely uses fq_codel, and a three tier one
 that does
 some basic and tunable packet prioritization.
  
   + Works with ipv6 and ipv4 correctly (unlike qos-scripts)
   + extensive support for fixing ADSL and PPOe framing problems
   + Partial support for key diffserv markings
   + highly tuned fq_codel implementation especially for low bandwidths
   + Tested heavily on cable modems and on dsl devices
  
   It is a disimprovement in that:
  
   - There are no built-in tricks for doing l7 classification,
   or other forms of packet inspection.
  
   - We haven't explored hfsc all that much, prefering to rely
   on the predictable behavior of htb + fq_codel for everything
  
   - And there is support for a few qdiscs that are not in the linux
   kernel mainline that remain experimental.
   ---
net/sqm-scripts/Makefile   |   48 +++
net/sqm-scripts/files/etc/config/sqm   |   11 +
net/sqm-scripts/files/etc/init.d/sqm   |   23 ++
net/sqm-scripts/files/usr/lib/sqm/functions.sh |  335
   
net/sqm-scripts/files/usr/lib/sqm/run.sh   |   67 
net/sqm-scripts/files/usr/lib/sqm/simple.qos   |  187
 +++
net/sqm-scripts/files/usr/lib/sqm/simple.qos.help  |1 +
net/sqm-scripts/files/usr/lib/sqm/simplest.qos |   84 +
.../files/usr/lib/sqm/simplest.qos.help|1 +
net/sqm-scripts/files/usr/lib/sqm/stop.sh  |   22 ++
10 files changed, 779 insertions(+)
create mode 100644 net/sqm-scripts/Makefile
create mode 100644 net/sqm-scripts/files/etc/config/sqm
create mode 100755 net/sqm-scripts/files/etc/init.d/sqm
create mode 100644 net/sqm-scripts/files/usr/lib/sqm/functions.sh
create mode 100755 net/sqm-scripts/files/usr/lib/sqm/run.sh
create mode 100755 net/sqm-scripts/files/usr/lib/sqm/simple.qos
create mode 100644 net/sqm-scripts/files/usr/lib/sqm/simple.qos.help
create mode 100755 net/sqm-scripts/files/usr/lib/sqm/simplest.qos
create mode 100644
 net/sqm-scripts/files/usr/lib/sqm/simplest.qos.help
create mode 100755 net/sqm-scripts/files/usr/lib/sqm/stop.sh
  
   diff --git a/net/sqm-scripts/files/etc/config/sqm
   b/net/sqm-scripts/files/etc/config/sqm
   new file mode 100644
   index 000..547d321
   --- /dev/null
   +++ b/net/sqm-scripts/files/etc/config/sqm
   @@ -0,0 +1,11 @@
   +
   +config queue 'ge00'
   +option enabled '0'
   +option interface 'ge00'
   +option download '2'
   +option upload '4000'
   +option qdisc 'fq_codel'
   +option script 'simple.qos'
   +option qdisc_advanced '0'
   +option linklayer 'none'
   +
  
  
   How hard is this to config from the command line/vim?
  
   There are a few more options than this (for DSL compensation, ecn
   and advanced configuration), the above would work if you changed
   enabled to '1' and the device from ge00 to your wan device. (not
   the wan firewall rule, presently. )
  
   It does help to have a sane long term and realistic measurement of your
   network using something like the rrul test rather than the oft-gamed
 speedtest.
  
  
 http://www.bufferbloat.net/projects/cerowrt/wiki/Setting_up_SQM_for_CeroWrt_310
  
   You are right, we should fully document all the variables in this file.
   Until recently they were kind of in flux.
  
   I've never needed or really wanted luci on my box, I just use vim.
 Going by
   this patch, there is either nothing to config or no examples. I would
 think
   shipping a roughly equivalent config to what ships in qos-scripts
 would be
   a good start to get people testing.
  
   /etc/init.d/sqm start,stop etc work as expected.
  
   IE: highest priority: small ARP, DNS, and SSH packets
  
   The SQM default is local DNS and ntp. fq_codel automagically optimizes
   for other sparse flows like arp, ssh, mosh, tcp syn, synack, etc,
   no need to do that via classification.
  
   normal: HTTP, HTTPS
  
   So you want to deprioritize vpn, smtp, rsync, dropbox, http on odd
 ports,
   caching servers, etc, all in favor of the web gods?
  
   we just toss all that into the normal (best effort bin) and let
 fq_codel
   sort it out.
  
   bulk: everything else.
  
   We do respect the diffserv marking of CS1 

Re: [Cerowrt-devel] possible ingress shaping bug?

2014-10-08 Thread Dave Taht
On Mon, Oct 6, 2014 at 3:07 AM, Richard Edmands thesir...@gmail.com wrote:
 Greetings Everyone!
 As part of research into a related part of the kernel we ran across an
 oddity with nfct on ifb devices.
 To give weight to the existence of the oddity, a Debian Jessie (so 3.16.3
 based kernel) system was setup with wan and lan ports.
 A modified version of the gentoo fq_codel script was used (Wan is eth0 and
 associated IFB is ifb0). Including script.
 The kernel had 2 printk's inserted (see included change to cls_flows.c) to
 print out the ip addresses which were being returned to the flows process
 for nfct-src and nfct-dst.
 The nfct-src attached to eth0 printk was heard from, it returned the right
 answers and some nonsense as expected.
 The nfct-dst attached to ifb0 printk didn't return a thing, not even
 nonsense.
 --
 (Wild speculation)
 Maybe the conntrack lookup only works correctly from the right device? so
 the lookup from the packet on ifb0 is being looked up in conntrack as if it
 should relate to a connection on ifb0 instead of a connection on eth0?

does straight src or dst work in ifb?

The conntrack stuff is long gone by the time you get to ifb.

 ---
 #!/bin/sh



 ## Paths and definitions
 tc=/sbin/tc
 IPT=iptables

 #The interface name of the internet link
 ext=eth0

 #Ignore this
 ext_ingress=ifb0



 # Set these as per your adsl sync rate, at 90% to start with, modify up and
 down until the tests work.
 ext_up=4kbit
 ext_down=4kbit


 ethtool -K eth0 tso off gro off gso off
 ethtool -K eth1 tso off gro off gso off

 modprobe ifb
 modprobe sch_fq_codel
 modprobe act_mirred
 modprobe cls_flow

 # Clear old queuing disciplines (qdisc) on the interfaces
 $tc qdisc del dev $ext root
 $tc qdisc del dev $ext ingress
 $tc qdisc del dev $ext_ingress root
 $tc qdisc del dev $ext_ingress ingress



 #
 # INGRESS
 #

 # Create ingress on external interface
 $tc qdisc add dev $ext handle : ingress
 ifconfig $ext_ingress up # if the interace is not up bad things happen

 # Forward all ingress traffic to the IFB device
 $tc filter add dev $ext parent : protocol all u32 match u32 0 0 action
 mirred egress redirect dev $ext_ingress

 # Create an EGRESS filter on the IFB device
 #You can play with the r2q value, higher for faster links, lower for slower.
 FIXME? Totally need some maths and tables for the correct values in various
 situations. Is being too high safer than being too low?

It is best to be correct. See the sqm source code and recent threads on this
list. *I* don't grok all that is involved on getting dsl or PPPoe right,
all the systems I have access to are cable or fiber.

 $tc qdisc add dev $ext_ingress root handle 1: htb default 12 r2q 5

 # Add root class HTB with rate limiting
 $tc class add dev $ext_ingress parent 1: classid 1:1 htb rate $ext_down
 overhead 40 mtu 1492 mpu 53 linklayer atm
 $tc class add dev $ext_ingress parent 1:1 classid 1:11 htb rate $ext_down
 prio 0 overhead 40 mtu 1492 mpu 53 linklayer atm
 $tc class add dev $ext_ingress parent 1:1 classid 1:12 htb rate $ext_down
 prio 0 overhead 40 mtu 1492 mpu 53 linklayer atm


 #This is where fq_codel is installed for downlink traffic
 $tc qdisc add dev $ext_ingress parent 1:11 fq_codel noecn target 50ms
 interval 300ms quantum 512 flows 1024 limit 3000
 $tc qdisc add dev $ext_ingress parent 1:12 fq_codel noecn target 50ms
 interval 300ms quantum 512 flows 1024 limit 3000


 #FIXME? Really need to find/have a discussion and determine good values for
 this
 $tc filter add dev $ext_ingress protocol ip parent 1: handle 11 flow hash
 keys nfct-dst divisor 1024 baseclass 1:11
 $tc filter add dev $ext_ingress protocol ip parent 1: handle 12 flow hash
 keys nfct-dst divisor 1024 baseclass 1:12

dst is the correct thing here.

 # Yes I KNOW this does not work.
 $tc filter add dev $ext_ingress protocol ip parent 1: prio 2 u32 match ip
 dst 172.30.200.2 flowid 1:11

Well, actually no, this should work. Unless the parent should be something else.



 #
 # EGRESS
 #

 # Add FQ_CODEL to EGRESS on external interface
 #You can play with the r2q value, higher for faster links, lower for slower.
 FIXME? Totally need some maths and tables for the correct values in various
 situations. Is being too high safer than being too low?
 $tc qdisc add dev $ext root handle 1: htb default 12 r2q 1

 # Add root class HTB with rate limiting
 $tc class add dev $ext parent 1: classid 1:1 htb rate $ext_up overhead 40
 mtu 1492 mpu 53 linklayer atm
 $tc class add dev $ext parent 1:1 classid 1:11 htb rate 70kbit ceil $ext_up
 overhead 40 mtu 1492 mpu 53 linklayer atm
 $tc class add dev $ext parent 1:1 classid 1:12 htb rate 30kbit ceil $ext_up
 overhead 40 mtu 1492 mpu 53 linklayer atm


 #This is where fq_codel is installed for uplink traffic
 

Re: [Cerowrt-devel] [OpenWrt-Devel] [RFC PATCH] packages: Smart Queue Management for AQM Packet Scheduling and Qos from CeroWrt

2014-10-08 Thread Dave Taht
On Wed, Oct 08, 2014 at 11:10:46PM +0300, Hannu Nyman wrote:
 Dave Taht wrote on Thu Oct 2 03:49:15 CEST 2014:
  So I don't know where to go. Certainly I'd like to see the battle
 hardened sqm scripts (which are more flexible than the C code above)
 get more widely used and in BB.
 
 SQM seems to work ok with the current Chaos Calmer trunk.

Well, for now... I'd expect the delta to break eventually...

 
 I have included your SQM in my trunk WNDR3700/3800 community build (
 https://forum.openwrt.org/viewtopic.php?id=28392 ) and it works ok.
 Arokh has also picked it up for his build (
 https://forum.openwrt.org/viewtopic.php?id=50914 ). So you might get
 more feedback sooner or later, if users of our builds really do try
 it.

Excellent. I'd *really* like to get some testers doing ingress shaping
at above 60-80mbits, which seems to be a brick wall we've hit on
the ar71xx and octeon, on other platforms like the arm and x86.

A tool we use a lot is netperf-wrapper.

 I feel that the best way to get wider testing and real-life usage
 for SQM would be to create a pull request in the new packages feed
 in Github, to get both the SQM itself and the Luci frontend included
 there. Being available in the packages feed would create more
 interest for the package. If it proves to work ok, the devs might
 then import it into the core Openwrt repo (where the old qos-scripts
 is).

I went to sleep pre BBrc1. I woke up, and everything was in github.

It's still not clear to me how I'd build cero from frozen BB sources,
rather than the evolving github packages.

 
 
 Ps. For my own build I made a slight modification to the Luci menu item, as 
 pure SQM does not say much. I changed it to SQM QoS.
 

Yes, SQM by itself doesn't mean enough.
___
Cerowrt-devel mailing list
Cerowrt-devel@lists.bufferbloat.net
https://lists.bufferbloat.net/listinfo/cerowrt-devel