Projet

Général

Profil

Buffer Bloat » Historique » Version 98

Skuld Skuld, 21/07/2017 23:30

1 22 Laurent GUERBY
{{>toc}}
2 22 Laurent GUERBY
3 1 Laurent GUERBY
h1. Buffer Bloat
4 1 Laurent GUERBY
5 1 Laurent GUERBY
* http://bufferbloat.net
6 96 Laurent GUERBY
* Bonne vulgarisation/explication du principe en Français : http://linuxfr.org/news/sortie-du-noyau-linux-3-3#toc_11 
7 1 Laurent GUERBY
* http://queue.acm.org/detail.cfm?id=2071893
8 12 Laurent GUERBY
* via obinou change default queue : http://www.bufferbloat.net/issues/305
9 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/
10 14 Laurent GUERBY
* http://lwn.net/Articles/470641/
11 15 Laurent GUERBY
* http://en.wikipedia.org/wiki/Datagram_Congestion_Control_Protocol
12 19 Laurent GUERBY
* http://netoptimizer.blogspot.com/2010/12/buffer-bloat-calculations.html
13 19 Laurent GUERBY
* http://gettys.wordpress.com/
14 20 Laurent GUERBY
* pps from userspace http://info.iet.unipi.it/~luigi/netmap/
15 22 Laurent GUERBY
* http://tech.slashdot.org/story/12/05/09/0325228/controlling-bufferbloat-with-queue-delay
16 22 Laurent GUERBY
* Controlling Queue Delay http://queue.acm.org/detail.cfm?id=2209336
17 22 Laurent GUERBY
* http://www.readwriteweb.com/enterprise/2012/05/good-news-for-solving-bufferbloat-codel-provides-no-knobs-solution.php
18 26 Laurent GUERBY
** The CoDel queue management algorithm https://lwn.net/Articles/496509/
19 22 Laurent GUERBY
* http://www.cringely.com/2012/05/beginning-of-the-end-for-bufferbloat/
20 96 Laurent GUERBY
* What's wrong with Wi-Fi? by Dave Täht http://www.youtube.com/watch?v=Wksh2DPHCDI&feature=youtu.be
21 29 Laurent GUERBY
** minute 48 debug stats  http://www.youtube.com/watch?v=Wksh2DPHCDI#t=48m00s
22 1 Laurent GUERBY
** http://mirrors.bufferbloat.net/Talks/MIT02142013/mit_whats_wrong_with_wifi.pdf
23 29 Laurent GUERBY
* http://netseminar.stanford.edu/
24 96 Laurent GUERBY
* http://pieknywidok.blogspot.fr/2014/05/10g-1g.html
25 2 Laurent GUERBY
26 27 Laurent GUERBY
h2. Conferences
27 27 Laurent GUERBY
28 27 Laurent GUERBY
Tomas Hruby:
29 27 Laurent GUERBY
30 27 Laurent GUERBY
http://linuxplumbers.ubicast.tv/videos/byte-queue-limits/
31 27 Laurent GUERBY
32 27 Laurent GUERBY
Eric Dumazet:
33 27 Laurent GUERBY
34 27 Laurent GUERBY
http://linuxplumbers.ubicast.tv/videos/codel-and-fq_codel-fighting-the-delays/
35 27 Laurent GUERBY
36 27 Laurent GUERBY
37 27 Laurent GUERBY
The whole conference:
38 27 Laurent GUERBY
39 27 Laurent GUERBY
http://linuxplumbers.ubicast.tv/channels/#lpc-2012
40 27 Laurent GUERBY
41 27 Laurent GUERBY
42 97 Laurent GUERBY
TCP Tuning for the Web [linux.conf.au 2014] Konstantin Bläsi https://www.youtube.com/watch?v=hzPVeYtoNdE
43 97 Laurent GUERBY
44 2 Laurent GUERBY
h2. QoS
45 2 Laurent GUERBY
46 2 Laurent GUERBY
* tc qdisc par IP source
47 2 Laurent GUERBY
http://lists.tetalab.org/pipermail/tetaneutral/2011-April/000129.html
48 1 Laurent GUERBY
* ebtable packet flow chart http://ebtables.sourceforge.net/br_fw_ia/PacketFlow.png
49 5 Laurent GUERBY
* tc openwrt theory http://wiki.openwrt.org/doc/howto/tc/tc.theory
50 4 Laurent GUERBY
* tc openwrt howto http://wiki.openwrt.org/doc/howto/tc
51 8 Laurent GUERBY
* doc HTB http://luxik.cdi.cz/~devik/qos/htb/manual/userg.htm
52 8 Laurent GUERBY
* http://www.faqs.org/docs/Linux-HOWTO/ADSL-Bandwidth-Management-HOWTO.html
53 9 Laurent GUERBY
* [PATCH net-next] sch_red: Adaptative RED AQM http://www.spinics.net/lists/netdev/msg182750.html
54 9 Laurent GUERBY
* http://icir.org/floyd/papers/adaptiveRed.pdf
55 17 Laurent GUERBY
* QFQ http://info.iet.unipi.it/~luigi/qfq/
56 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
57 24 Laurent GUERBY
* The QoS Emperor's Wardrobe http://www.potaroo.net/ispcol/2012-06/noqos.html
58 6 Laurent GUERBY
59 6 Laurent GUERBY
Partage de bande passante ADSL
60 6 Laurent GUERBY
61 6 Laurent GUERBY
<pre>
62 7 Laurent GUERBY
# Version du 20111207
63 6 Laurent GUERBY
function do_qos {
64 6 Laurent GUERBY
  tc qdisc add dev $DEV root handle 1: htb default 1
65 6 Laurent GUERBY
  tc class add dev $DEV parent 1: classid 1:1 htb rate $RATE
66 1 Laurent GUERBY
  for IP in $IP_LIST; do
67 7 Laurent GUERBY
    tc class add dev $DEV parent 1:1 classid 1:$IP htb rate 1kbit ceil $RATE
68 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
69 6 Laurent GUERBY
  done
70 6 Laurent GUERBY
}
71 6 Laurent GUERBY
72 6 Laurent GUERBY
DIR=dst #on gw then RATE= ADSL download speed
73 6 Laurent GUERBY
#DIR=src #on local machine then RATE= ADSL upload speed
74 1 Laurent GUERBY
75 6 Laurent GUERBY
DEV=tapstg
76 7 Laurent GUERBY
RATE=11000kbit # src 700kbit
77 6 Laurent GUERBY
IP_LIST=$(seq 129 144)
78 1 Laurent GUERBY
do_qos
79 6 Laurent GUERBY
80 6 Laurent GUERBY
DEV=tapthd
81 7 Laurent GUERBY
RATE=5500kbit # src TODO
82 1 Laurent GUERBY
IP_LIST=$(seq 194 207)
83 6 Laurent GUERBY
do_qos
84 6 Laurent GUERBY
85 6 Laurent GUERBY
DEV=tapmon
86 7 Laurent GUERBY
RATE=480kbit # src 96kbit
87 1 Laurent GUERBY
IP_LIST=$(seq 114 115)
88 1 Laurent GUERBY
do_qos
89 1 Laurent GUERBY
90 7 Laurent GUERBY
</pre>
91 7 Laurent GUERBY
92 7 Laurent GUERBY
Pour supprimer un qdisc :
93 7 Laurent GUERBY
94 7 Laurent GUERBY
<pre>
95 7 Laurent GUERBY
tc qdisc del dev tapxxx root
96 7 Laurent GUERBY
</pre>
97 7 Laurent GUERBY
98 7 Laurent GUERBY
Pour afficher :
99 7 Laurent GUERBY
100 7 Laurent GUERBY
<pre>
101 7 Laurent GUERBY
tc -p -s -d qdisc show dev tapxxx
102 7 Laurent GUERBY
tc -p -s -d class show dev tapxxx
103 7 Laurent GUERBY
tc -p -s -d filter show dev tapxxx
104 6 Laurent GUERBY
</pre>
105 10 Laurent GUERBY
106 10 Laurent GUERBY
Documentation :
107 10 Laurent GUERBY
108 10 Laurent GUERBY
<pre>
109 10 Laurent GUERBY
# tc qdisc add htb help
110 10 Laurent GUERBY
What is "help"?
111 10 Laurent GUERBY
Usage: ... qdisc add ... htb [default N] [r2q N]
112 10 Laurent GUERBY
 default  minor id of class to which unclassified packets are sent {0}
113 10 Laurent GUERBY
 r2q      DRR quantums are computed as rate in Bps/r2q {10}
114 10 Laurent GUERBY
 debug    string of 16 numbers each 0-3 {0}
115 10 Laurent GUERBY
116 10 Laurent GUERBY
... class add ... htb rate R1 [burst B1] [mpu B] [overhead O]
117 10 Laurent GUERBY
                      [prio P] [slot S] [pslot PS]
118 10 Laurent GUERBY
                      [ceil R2] [cburst B2] [mtu MTU] [quantum Q]
119 10 Laurent GUERBY
 rate     rate allocated to this class (class can still borrow)
120 10 Laurent GUERBY
 burst    max bytes burst which can be accumulated during idle period {computed}
121 10 Laurent GUERBY
 mpu      minimum packet size used in rate computations
122 10 Laurent GUERBY
 overhead per-packet size overhead used in rate computations
123 10 Laurent GUERBY
 linklay  adapting to a linklayer e.g. atm
124 10 Laurent GUERBY
 ceil     definite upper class rate (no borrows) {rate}
125 10 Laurent GUERBY
 cburst   burst but for ceil {computed}
126 10 Laurent GUERBY
 mtu      max packet size we create rate map for {1600}
127 10 Laurent GUERBY
 prio     priority of leaf; lower are served first {0}
128 10 Laurent GUERBY
 quantum  how much bytes to serve from leaf at once {use r2q}
129 10 Laurent GUERBY
130 1 Laurent GUERBY
TC HTB version 3.3
131 10 Laurent GUERBY
</pre>
132 23 Laurent GUERBY
133 96 Laurent GUERBY
=> Version basée sur le script ttnn incluant la v6 (même mode de calcul IPv4->IPv6 que ttnn) : http://orga.rhizome-fai.net/projects/rhizome-sysadmin/repository/entry/script/router/launchQoS
134 25 Jocelyn Dealande
135 23 Laurent GUERBY
h2. ATM
136 23 Laurent GUERBY
137 23 Laurent GUERBY
From: 	Sebastian Moeller <moeller0@gmx.de>
138 23 Laurent GUERBY
To: 	e-t172 <e-t172@akegroup.org>
139 23 Laurent GUERBY
Cc: 	lartc@vger.kernel.org
140 23 Laurent GUERBY
Subject: 	Re: tc htb + prio = very slow link
141 23 Laurent GUERBY
Date: 	Sun, 27 May 2012 22:46:50 -0700 (05/28/2012 07:46:50 AM)
142 23 Laurent GUERBY
Mailer: 	Apple Mail (2.1278)
143 23 Laurent GUERBY
144 23 Laurent GUERBY
145 23 Laurent GUERBY
Hi Etienne,
146 23 Laurent GUERBY
147 23 Laurent GUERBY
while I have no real inside for your actual problem; but I do have to add something else. Back when I was using DSL I used the following addition to the definition of the root disc (for egress and ingress), to deal with the peculiarities of ATM based ADSL:
148 23 Laurent GUERBY
stab overhead 18 mtu 2048 mpu 53 linklayer atm
149 23 Laurent GUERBY
(there is a tc-stab manpage (http://manpages.ubuntu.com/manpages/precise/man8/tc-stab.8.html) to help you select the right value for overhead, mtu here only concerns the size table and not the interface mtu)
150 23 Laurent GUERBY
If your DSL connection uses an underlaying ATM carrier (most old DSL connections do to my knowledge) this will help a lot, as due to ATM small packages will often carry a lot of padding that eats considerable portions of you bandwidth. the stab invocation will not change that bandwidth use, but will take it into account while shaping from your root disc. Otherwise you will a) overload your DSL link in spite of your plan to avoid that and b) the system will think and report a lower used bandwidth than true. Note should you opt to take hub inbuilt link layer atm options see (http://kerneltrap.org/mailarchive/linux-netdev/2010/7/7/6280676)
151 23 Laurent GUERBY
        Now some modern DSL variants do not use ATM as carrier anymore, notably some VDSL/VDSL2 use PTM-TC which does not have the same interesting structure as ATM (see http://www.ethernetinthefirstmile.com/articles/WTC2002.pdf)
152 23 Laurent GUERBY
        Also if you use hub people typically seem to use hub children as well (http://luxik.cdi.cz/~devik/qos/htb/manual/userg.htm) so maybe that causes the issues you have (see http://linux.die.net/man/8/tc-htb for amore current overview of the parameters)? 
153 23 Laurent GUERBY
154 23 Laurent GUERBY
hoping this helps somewhat
155 23 Laurent GUERBY
        Sebastian