[dtaht/deBloat] : Figuring out the interrelationships of the new var...

GitHub noreply at github.com
Thu Jan 12 03:07:45 EST 2012


  Branch: refs/heads/master
  Home:   https://github.com/dtaht/deBloat
  Commit: 3db15a6ecb30b80cf8b9140044c341226340170f
      https://github.com/dtaht/deBloat/commit/3db15a6ecb30b80cf8b9140044c341226340170f
  Author: Dave Taht <d at taht.net>
  Date:   2012-01-11 (Wed, 11 Jan 2012)

  Changed paths:
    M src/debloat

  Log Message:
  -----------
  Figuring out the interrelationships of the new variables is hard.

In the original QFQ work, I started off with red (before red
was working right, and adaptive red wasn't implemented yet),
did a whole bunch of tests, determined red didn't look right,
mentioned it to eric, who then fixed red and went on tear.

In between, I'd fallen back to using pfifo with a limit in the
range of 12-24 for ethernet. 24 seemed to be a pretty good value...

Now we have ared, and ared in sfq, and I'm really at a loss as
to how to calculate the right values for this newfangled
combination of tools.

A value of 12 is not the right value. But the last series of tests
was all run with that, and so, I'm preserving that for the record.


  Commit: b62d947e06cb4c8daf1203d0a5e1b251f9a254f3
      https://github.com/dtaht/deBloat/commit/b62d947e06cb4c8daf1203d0a5e1b251f9a254f3
  Author: Dave Taht <d at taht.net>
  Date:   2012-01-11 (Wed, 11 Jan 2012)

  Changed paths:
    M src/debloat

  Log Message:
  -----------
  Added 'kleinrock' function

I started this whole 800+ line exercise because I wanted to do
a sqrt in shell.

This begs the question of what's the delay, what's the bandwidth,
and how many flows is good.

It also begs the question of what units to keep things in, and
how to make sure that is consistent throughout. Decimal megabits
vs mebibits is a 5% difference and that 5% can ruin your whole day.

So I will use decimal kilobits throughout and make sure to convert
to bytes whenever needed.


  Commit: 7a08b1321b7b0918f2bf3900c4e8d4777597c1ee
      https://github.com/dtaht/deBloat/commit/7a08b1321b7b0918f2bf3900c4e8d4777597c1ee
  Author: Dave Taht <d at taht.net>
  Date:   2012-01-12 (Thu, 12 Jan 2012)

  Changed paths:
    M src/debloat
  R src/qmodels/wshaper.lua
  M wip/wshaper.htb

  Log Message:
  -----------
  Slavish re-implementation of the venerable wondershaper

The wondershaper was one of the first widely used and documented
shaper scripts used in Linux. It's still widely used. It's
still very wrong on multiple particulars, notably, it breaks
ECN, has no ipv6 support, and the model of prioritizing
acks only is subject to being gamed, and can mess up
certain kinds of flows.

That said, I felt modeling it, as it was written and often deployed
would be a good thing to do. I also plan to produce a corrected
version at some point, but wshapers methods are largely past...

You can invoke this one by setting environment variables for
UPLINK and DOWNLINK, a QMODEL of owshaper, and an
IFACE=some_ethernet device.

IFACE=eth0 UPLINK=200 DOWNLINK=800 QMODEL=owshaper ./debloat

It's not fully tested (need to test ping and the port filters),
but does generate code substancially similar to the original
wshaper.htb I based it on.

Also in this commit:

* Improved debugging and code generation
- QDEBUG=1 will send tc's output to stdout
* More environment variables overall


Compare: https://github.com/dtaht/deBloat/compare/fc28c4f...7a08b13


More information about the Cerowrt-commits mailing list