Projet

Général

Profil

Buffer Bloat » Historique » Version 21

Jocelyn Dealande, 19/03/2012 10:23

1 1 Laurent GUERBY
h1. Buffer Bloat
2 1 Laurent GUERBY
3 1 Laurent GUERBY
* http://bufferbloat.net
4 21 Jocelyn Dealande
* Bonne vulgarisation/explication du principe en Français : http://linuxfr.org/news/sortie-du-noyau-linux-3-3#toc_11 
5 1 Laurent GUERBY
* http://queue.acm.org/detail.cfm?id=2071893
6 12 Laurent GUERBY
* via obinou change default queue : http://www.bufferbloat.net/issues/305
7 13 Laurent GUERBY
* 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/
8 14 Laurent GUERBY
* http://lwn.net/Articles/470641/
9 15 Laurent GUERBY
* http://en.wikipedia.org/wiki/Datagram_Congestion_Control_Protocol
10 19 Laurent GUERBY
* http://netoptimizer.blogspot.com/2010/12/buffer-bloat-calculations.html
11 19 Laurent GUERBY
* http://gettys.wordpress.com/
12 20 Laurent GUERBY
* pps from userspace http://info.iet.unipi.it/~luigi/netmap/
13 2 Laurent GUERBY
14 2 Laurent GUERBY
h2. QoS
15 2 Laurent GUERBY
16 2 Laurent GUERBY
* tc qdisc par IP source
17 2 Laurent GUERBY
http://lists.tetalab.org/pipermail/tetaneutral/2011-April/000129.html
18 1 Laurent GUERBY
* ebtable packet flow chart http://ebtables.sourceforge.net/br_fw_ia/PacketFlow.png
19 5 Laurent GUERBY
* tc openwrt theory http://wiki.openwrt.org/doc/howto/tc/tc.theory
20 4 Laurent GUERBY
* tc openwrt howto http://wiki.openwrt.org/doc/howto/tc
21 8 Laurent GUERBY
* doc HTB http://luxik.cdi.cz/~devik/qos/htb/manual/userg.htm
22 8 Laurent GUERBY
* http://www.faqs.org/docs/Linux-HOWTO/ADSL-Bandwidth-Management-HOWTO.html
23 9 Laurent GUERBY
* [PATCH net-next] sch_red: Adaptative RED AQM http://www.spinics.net/lists/netdev/msg182750.html
24 9 Laurent GUERBY
* http://icir.org/floyd/papers/adaptiveRed.pdf
25 17 Laurent GUERBY
* QFQ http://info.iet.unipi.it/~luigi/qfq/
26 1 Laurent GUERBY
* linklayer ADSL and overhead tc options http://git.coverfire.com/?p=linux-qos-scripts.git;a=blob;f=src-3tos.sh;hb=HEAD
27 19 Laurent GUERBY
28 6 Laurent GUERBY
29 6 Laurent GUERBY
Partage de bande passante ADSL
30 6 Laurent GUERBY
31 6 Laurent GUERBY
<pre>
32 7 Laurent GUERBY
# Version du 20111207
33 6 Laurent GUERBY
function do_qos {
34 6 Laurent GUERBY
  tc qdisc add dev $DEV root handle 1: htb default 1
35 6 Laurent GUERBY
  tc class add dev $DEV parent 1: classid 1:1 htb rate $RATE
36 1 Laurent GUERBY
  for IP in $IP_LIST; do
37 7 Laurent GUERBY
    tc class add dev $DEV parent 1:1 classid 1:$IP htb rate 1kbit ceil $RATE
38 6 Laurent GUERBY
    tc filter add dev $DEV protocol ip parent 1:0 prio 1 u32 match ip $DIR 91.224.148.$IP flowid 1:$IP
39 6 Laurent GUERBY
  done
40 6 Laurent GUERBY
}
41 6 Laurent GUERBY
42 6 Laurent GUERBY
DIR=dst #on gw then RATE= ADSL download speed
43 6 Laurent GUERBY
#DIR=src #on local machine then RATE= ADSL upload speed
44 1 Laurent GUERBY
45 6 Laurent GUERBY
DEV=tapstg
46 7 Laurent GUERBY
RATE=11000kbit # src 700kbit
47 6 Laurent GUERBY
IP_LIST=$(seq 129 144)
48 1 Laurent GUERBY
do_qos
49 6 Laurent GUERBY
50 6 Laurent GUERBY
DEV=tapthd
51 7 Laurent GUERBY
RATE=5500kbit # src TODO
52 1 Laurent GUERBY
IP_LIST=$(seq 194 207)
53 6 Laurent GUERBY
do_qos
54 6 Laurent GUERBY
55 6 Laurent GUERBY
DEV=tapmon
56 7 Laurent GUERBY
RATE=480kbit # src 96kbit
57 1 Laurent GUERBY
IP_LIST=$(seq 114 115)
58 1 Laurent GUERBY
do_qos
59 1 Laurent GUERBY
60 7 Laurent GUERBY
</pre>
61 7 Laurent GUERBY
62 7 Laurent GUERBY
Pour supprimer un qdisc :
63 7 Laurent GUERBY
64 7 Laurent GUERBY
<pre>
65 7 Laurent GUERBY
tc qdisc del dev tapxxx root
66 7 Laurent GUERBY
</pre>
67 7 Laurent GUERBY
68 7 Laurent GUERBY
Pour afficher :
69 7 Laurent GUERBY
70 7 Laurent GUERBY
<pre>
71 7 Laurent GUERBY
tc -p -s -d qdisc show dev tapxxx
72 7 Laurent GUERBY
tc -p -s -d class show dev tapxxx
73 7 Laurent GUERBY
tc -p -s -d filter show dev tapxxx
74 6 Laurent GUERBY
</pre>
75 10 Laurent GUERBY
76 10 Laurent GUERBY
Documentation :
77 10 Laurent GUERBY
78 10 Laurent GUERBY
<pre>
79 10 Laurent GUERBY
# tc qdisc add htb help
80 10 Laurent GUERBY
What is "help"?
81 10 Laurent GUERBY
Usage: ... qdisc add ... htb [default N] [r2q N]
82 10 Laurent GUERBY
 default  minor id of class to which unclassified packets are sent {0}
83 10 Laurent GUERBY
 r2q      DRR quantums are computed as rate in Bps/r2q {10}
84 10 Laurent GUERBY
 debug    string of 16 numbers each 0-3 {0}
85 10 Laurent GUERBY
86 10 Laurent GUERBY
... class add ... htb rate R1 [burst B1] [mpu B] [overhead O]
87 10 Laurent GUERBY
                      [prio P] [slot S] [pslot PS]
88 10 Laurent GUERBY
                      [ceil R2] [cburst B2] [mtu MTU] [quantum Q]
89 10 Laurent GUERBY
 rate     rate allocated to this class (class can still borrow)
90 10 Laurent GUERBY
 burst    max bytes burst which can be accumulated during idle period {computed}
91 10 Laurent GUERBY
 mpu      minimum packet size used in rate computations
92 10 Laurent GUERBY
 overhead per-packet size overhead used in rate computations
93 10 Laurent GUERBY
 linklay  adapting to a linklayer e.g. atm
94 10 Laurent GUERBY
 ceil     definite upper class rate (no borrows) {rate}
95 10 Laurent GUERBY
 cburst   burst but for ceil {computed}
96 10 Laurent GUERBY
 mtu      max packet size we create rate map for {1600}
97 10 Laurent GUERBY
 prio     priority of leaf; lower are served first {0}
98 10 Laurent GUERBY
 quantum  how much bytes to serve from leaf at once {use r2q}
99 10 Laurent GUERBY
100 10 Laurent GUERBY
TC HTB version 3.3
101 10 Laurent GUERBY
</pre>