Buffer Bloat » Historique » Version 22
Version 21 (Jocelyn Dealande, 19/03/2012 10:23) → Version 22/98 (Laurent GUERBY, 09/05/2012 09:15)
{{>toc}}
h1. Buffer Bloat
* http://bufferbloat.net
* Bonne vulgarisation/explication du principe en Français : http://linuxfr.org/news/sortie-du-noyau-linux-3-3#toc_11
* http://queue.acm.org/detail.cfm?id=2071893
* via obinou change default queue : http://www.bufferbloat.net/issues/305
* BSD Add the Enhanced Round Trip Time (ERTT) Khelp module to allow support for delay-based congestion control algorithms. http://caia.swin.edu.au/freebsd/5cc/
* http://lwn.net/Articles/470641/
* http://en.wikipedia.org/wiki/Datagram_Congestion_Control_Protocol
* http://netoptimizer.blogspot.com/2010/12/buffer-bloat-calculations.html
* http://gettys.wordpress.com/
* pps from userspace http://info.iet.unipi.it/~luigi/netmap/
* http://tech.slashdot.org/story/12/05/09/0325228/controlling-bufferbloat-with-queue-delay
* Controlling Queue Delay http://queue.acm.org/detail.cfm?id=2209336
* http://www.readwriteweb.com/enterprise/2012/05/good-news-for-solving-bufferbloat-codel-provides-no-knobs-solution.php
* http://www.cringely.com/2012/05/beginning-of-the-end-for-bufferbloat/
h2. QoS
* tc qdisc par IP source
http://lists.tetalab.org/pipermail/tetaneutral/2011-April/000129.html
* ebtable packet flow chart http://ebtables.sourceforge.net/br_fw_ia/PacketFlow.png
* tc openwrt theory http://wiki.openwrt.org/doc/howto/tc/tc.theory
* tc openwrt howto http://wiki.openwrt.org/doc/howto/tc
* doc HTB http://luxik.cdi.cz/~devik/qos/htb/manual/userg.htm
* http://www.faqs.org/docs/Linux-HOWTO/ADSL-Bandwidth-Management-HOWTO.html
* [PATCH net-next] sch_red: Adaptative RED AQM http://www.spinics.net/lists/netdev/msg182750.html
* http://icir.org/floyd/papers/adaptiveRed.pdf
* QFQ http://info.iet.unipi.it/~luigi/qfq/
* linklayer ADSL and overhead tc options http://git.coverfire.com/?p=linux-qos-scripts.git;a=blob;f=src-3tos.sh;hb=HEAD
Partage de bande passante ADSL
<pre>
# Version du 20111207
function do_qos {
tc qdisc add dev $DEV root handle 1: htb default 1
tc class add dev $DEV parent 1: classid 1:1 htb rate $RATE
for IP in $IP_LIST; do
tc class add dev $DEV parent 1:1 classid 1:$IP htb rate 1kbit ceil $RATE
tc filter add dev $DEV protocol ip parent 1:0 prio 1 u32 match ip $DIR 91.224.148.$IP flowid 1:$IP
done
}
DIR=dst #on gw then RATE= ADSL download speed
#DIR=src #on local machine then RATE= ADSL upload speed
DEV=tapstg
RATE=11000kbit # src 700kbit
IP_LIST=$(seq 129 144)
do_qos
DEV=tapthd
RATE=5500kbit # src TODO
IP_LIST=$(seq 194 207)
do_qos
DEV=tapmon
RATE=480kbit # src 96kbit
IP_LIST=$(seq 114 115)
do_qos
</pre>
Pour supprimer un qdisc :
<pre>
tc qdisc del dev tapxxx root
</pre>
Pour afficher :
<pre>
tc -p -s -d qdisc show dev tapxxx
tc -p -s -d class show dev tapxxx
tc -p -s -d filter show dev tapxxx
</pre>
Documentation :
<pre>
# tc qdisc add htb help
What is "help"?
Usage: ... qdisc add ... htb [default N] [r2q N]
default minor id of class to which unclassified packets are sent {0}
r2q DRR quantums are computed as rate in Bps/r2q {10}
debug string of 16 numbers each 0-3 {0}
... class add ... htb rate R1 [burst B1] [mpu B] [overhead O]
[prio P] [slot S] [pslot PS]
[ceil R2] [cburst B2] [mtu MTU] [quantum Q]
rate rate allocated to this class (class can still borrow)
burst max bytes burst which can be accumulated during idle period {computed}
mpu minimum packet size used in rate computations
overhead per-packet size overhead used in rate computations
linklay adapting to a linklayer e.g. atm
ceil definite upper class rate (no borrows) {rate}
cburst burst but for ceil {computed}
mtu max packet size we create rate map for {1600}
prio priority of leaf; lower are served first {0}
quantum how much bytes to serve from leaf at once {use r2q}
TC HTB version 3.3
</pre>
h1. Buffer Bloat
* http://bufferbloat.net
* Bonne vulgarisation/explication du principe en Français : http://linuxfr.org/news/sortie-du-noyau-linux-3-3#toc_11
* http://queue.acm.org/detail.cfm?id=2071893
* via obinou change default queue : http://www.bufferbloat.net/issues/305
* BSD Add the Enhanced Round Trip Time (ERTT) Khelp module to allow support for delay-based congestion control algorithms. http://caia.swin.edu.au/freebsd/5cc/
* http://lwn.net/Articles/470641/
* http://en.wikipedia.org/wiki/Datagram_Congestion_Control_Protocol
* http://netoptimizer.blogspot.com/2010/12/buffer-bloat-calculations.html
* http://gettys.wordpress.com/
* pps from userspace http://info.iet.unipi.it/~luigi/netmap/
* http://tech.slashdot.org/story/12/05/09/0325228/controlling-bufferbloat-with-queue-delay
* Controlling Queue Delay http://queue.acm.org/detail.cfm?id=2209336
* http://www.readwriteweb.com/enterprise/2012/05/good-news-for-solving-bufferbloat-codel-provides-no-knobs-solution.php
* http://www.cringely.com/2012/05/beginning-of-the-end-for-bufferbloat/
h2. QoS
* tc qdisc par IP source
http://lists.tetalab.org/pipermail/tetaneutral/2011-April/000129.html
* ebtable packet flow chart http://ebtables.sourceforge.net/br_fw_ia/PacketFlow.png
* tc openwrt theory http://wiki.openwrt.org/doc/howto/tc/tc.theory
* tc openwrt howto http://wiki.openwrt.org/doc/howto/tc
* doc HTB http://luxik.cdi.cz/~devik/qos/htb/manual/userg.htm
* http://www.faqs.org/docs/Linux-HOWTO/ADSL-Bandwidth-Management-HOWTO.html
* [PATCH net-next] sch_red: Adaptative RED AQM http://www.spinics.net/lists/netdev/msg182750.html
* http://icir.org/floyd/papers/adaptiveRed.pdf
* QFQ http://info.iet.unipi.it/~luigi/qfq/
* linklayer ADSL and overhead tc options http://git.coverfire.com/?p=linux-qos-scripts.git;a=blob;f=src-3tos.sh;hb=HEAD
Partage de bande passante ADSL
<pre>
# Version du 20111207
function do_qos {
tc qdisc add dev $DEV root handle 1: htb default 1
tc class add dev $DEV parent 1: classid 1:1 htb rate $RATE
for IP in $IP_LIST; do
tc class add dev $DEV parent 1:1 classid 1:$IP htb rate 1kbit ceil $RATE
tc filter add dev $DEV protocol ip parent 1:0 prio 1 u32 match ip $DIR 91.224.148.$IP flowid 1:$IP
done
}
DIR=dst #on gw then RATE= ADSL download speed
#DIR=src #on local machine then RATE= ADSL upload speed
DEV=tapstg
RATE=11000kbit # src 700kbit
IP_LIST=$(seq 129 144)
do_qos
DEV=tapthd
RATE=5500kbit # src TODO
IP_LIST=$(seq 194 207)
do_qos
DEV=tapmon
RATE=480kbit # src 96kbit
IP_LIST=$(seq 114 115)
do_qos
</pre>
Pour supprimer un qdisc :
<pre>
tc qdisc del dev tapxxx root
</pre>
Pour afficher :
<pre>
tc -p -s -d qdisc show dev tapxxx
tc -p -s -d class show dev tapxxx
tc -p -s -d filter show dev tapxxx
</pre>
Documentation :
<pre>
# tc qdisc add htb help
What is "help"?
Usage: ... qdisc add ... htb [default N] [r2q N]
default minor id of class to which unclassified packets are sent {0}
r2q DRR quantums are computed as rate in Bps/r2q {10}
debug string of 16 numbers each 0-3 {0}
... class add ... htb rate R1 [burst B1] [mpu B] [overhead O]
[prio P] [slot S] [pslot PS]
[ceil R2] [cburst B2] [mtu MTU] [quantum Q]
rate rate allocated to this class (class can still borrow)
burst max bytes burst which can be accumulated during idle period {computed}
mpu minimum packet size used in rate computations
overhead per-packet size overhead used in rate computations
linklay adapting to a linklayer e.g. atm
ceil definite upper class rate (no borrows) {rate}
cburst burst but for ceil {computed}
mtu max packet size we create rate map for {1600}
prio priority of leaf; lower are served first {0}
quantum how much bytes to serve from leaf at once {use r2q}
TC HTB version 3.3
</pre>