Projet

Général

Profil

Buffer Bloat » Historique » Version 21

Version 20 (Laurent GUERBY, 13/03/2012 07:06) → Version 21/98 (Jocelyn Dealande, 19/03/2012 10:23)

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/



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>