Development issues regarding the cerowrt test router project
 help / color / mirror / Atom feed
From: Sebastian Moeller <moeller0@gmx.de>
To: Dave Taht <dave.taht@gmail.com>
Cc: "Toke Høiland-Jørgensen" <toke@toke.dk>,
	"cerowrt-devel@lists.bufferbloat.net"
	<cerowrt-devel@lists.bufferbloat.net>
Subject: Re: [Cerowrt-devel] AQM scripts modified for DSL exploration
Date: Tue, 13 Aug 2013 11:23:59 +0200	[thread overview]
Message-ID: <8444520E-068A-416F-B078-242632A57A66@gmx.de> (raw)
In-Reply-To: <CAA93jw7nUUPLqg0TzHR5JUnNopYSzM-=2kQQuWUaqWdNQNyQdA@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 3737 bytes --]

Hi Dave,


On Aug 12, 2013, at 02:06 , Dave Taht <dave.taht@gmail.com> wrote:

> Alright I slammed them into ceropackages for the next build but I
> don't get this line:
> 
>        STABSTRING="stab mtu 2048 tsize ${TSIZE} overhead ${OVERHEAD}
> linklayer ${LINKLAYER}"
> 
> mtu 2048?

So it turns out that I got a more complete version ready yesterday. I had a look at the defaults in actual tc and linux kernel code and MTU defaults to 2047 instead of 2048, I guess zero based… Also I am unsure whether the td-stab man page is correct in assuming that the kernel appends the ethernet header size automatically to the packet size (I am a layman but to me it looks like the overhead mechanism just overwrites that information); will try to dig deeper into this...
 I also included the mpu and tsize parameters. Then tested the two implementations with different values put into the fields.
	It looks like stab approach works, at least:

root@nacktmulle:~# tc -d qdisc
qdisc fq_codel a: dev se00 root refcnt 2 limit 1000p flows 1024 quantum 1000 target 5.0ms interval 100.0ms ecn 
qdisc htb 1: dev ge00 root refcnt 2 r2q 10 default 12 direct_packets_stat 0 ver 3.17
 linklayer atm overhead 26 mtu 2047 tsize 128 

but:
tc -d class show dev ge00
class htb 1:11 parent 1:1 leaf 110: prio 1 quantum 1500 rate 128000bit ceil 767000bit burst 1600b/1 mpu 0b overhead 0b cburst 9587b/1 mpu 0b overhead 0b level 0 

So HTB does not report overhead and mpu, no wonder as stab works with a size table and not the rate table that HTB expects, but with the HTB private link layer adaptation mechanism in place I get:

root@nacktmulle:~# tc -d qdisc
qdisc fq_codel a: dev se00 root refcnt 2 limit 1000p flows 1024 quantum 1000 target 5.0ms interval 100.0ms ecn 
qdisc htb 1: dev ge00 root refcnt 2 r2q 10 default 12 direct_packets_stat 0 ver 3.17

which is expected as HTB is not supposed to report anything here, but also:

tc -d class show dev ifb0
class htb 1:11 parent 1:1 leaf 110: prio 1 quantum 1500 rate 32000bit ceil 4899Kbit burst 1600b/1 mpu 0b overhead 0b cburst 244950b/1 mpu 0b overhead 0b level 0 

And Fred Stratton aldso showed (with the ADSL box in AQM ticked):

tc -s -d class show dev ge00
class htb 1:10 parent 1:1 leaf 110: prio 0 quantum 1500 rate 700000bit ceil 700000bit burst 1599b/1 mpu 0b overhead 0b cburst 1599b/1 mpu 0b overhead 0b level 0 

 So it looks like either HTB's private implementation is busted (at least for mpu and overhead). From my searching through the kernel code, my gut feeling is that stab is the preferred method anyway, since it does not fudge with apparent transmit rates (HTB uses a rate table) but instead fudges the packet length to account for the linklayer encapsulation and overhead (it effectively modifies qdisc_skb_cb(skb)->pkt_len)


All this leaves me curious, so I guess I need to figure out a way to test whether the link layer adaptation actually works.
The most visible effect of the ATM quantization is for very small packets were a partly added final atm cell eats a disproportionate part of the bandwidth, so I guess I need to create a stream of such packets and test goodput and latency concurrently. All I need to come up with is the expected goodput at link saturation (with active shaping). This i following the theory that say a 49 byte packet will require two atm cells the second of which is padded with 47 bytes, so almost 50% of the bandwidth is spend for ATM quantization. I guess it might be good to come up with a simple script to test so that it is easier to catch regressions in this functionality more easily. So all I need to do is wrap my head around this and create a simple small script… 

Best
	Sebastian



[-- Attachment #2: usr.zip --]
[-- Type: application/zip, Size: 14857 bytes --]

      parent reply	other threads:[~2013-08-13  9:24 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-08-11 20:22 Sebastian Moeller
2013-08-11 21:04 ` Toke Høiland-Jørgensen
2013-08-11 21:53   ` Dave Taht
2013-08-12  0:06 ` Dave Taht
2013-08-12  9:42   ` Sebastian Moeller
2013-08-13  9:23   ` Sebastian Moeller [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://lists.bufferbloat.net/postorius/lists/cerowrt-devel.lists.bufferbloat.net/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8444520E-068A-416F-B078-242632A57A66@gmx.de \
    --to=moeller0@gmx.de \
    --cc=cerowrt-devel@lists.bufferbloat.net \
    --cc=dave.taht@gmail.com \
    --cc=toke@toke.dk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox