From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.bufferbloat.net (Postfix) with ESMTPS id 69AE33B29E for ; Sat, 27 Jan 2018 08:40:25 -0500 (EST) Received: from [192.168.10.50] ([217.246.2.19]) by mail.gmx.com (mrgmx103 [212.227.17.168]) with ESMTPSA (Nemesis) id 0MUHbK-1eFgdZ3t6g-00QyDl for ; Sat, 27 Jan 2018 14:40:24 +0100 To: "bloat@lists.bufferbloat.net" From: Matthias Tafelmeier Message-ID: Date: Sat, 27 Jan 2018 14:40:22 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.0 MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha384; protocol="application/pgp-signature"; boundary="y4921U0Tw0RvqU7jCgL7uoQT9RFUYO3Bj" X-Provags-ID: V03:K0:hJrloT2vYYNBU9F0Bz7GHudqmtqiVfxzxotxpfPX9UFCXE7CFoU 3i2uERHr3sKvv3QpucvhYl0qgVZcuxrP3jpKWXDvM765jGuUWn0yDUygdZh6Tj5iBSUcxYL 98MYCblySQcAzEKyuM4LKbRAYPA5rYl131Aov2Y1wtru7MVOPwZMIYL0Gr8CL5QP0OhKFcl paLFxUsO0LmcDmVfW2jjQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:uacLU5+1FJ4=:qxPEJpikMno4zlG/si7Obz Zmy/U9kCJ8HzUqV9nIRkuauxuWaFdiTTtwAcpP+C+ZU/g/CUsYoHQ4qDruNdjxUOgDwNUl23+ dBFCZf92goa8Wkpso9y86AGBqemgojGFG4IOWnKJXau/s2hdpm1EWx7msv7nSUlDxgCdRT6LB X+6XztA8lU1ydsmf52XS4Rfx7ZlWlqDimMZzMmBKconvSnmSDDUtTykB34hxwGM2uw9oNtJ72 Tk9qY5SInOFU9v1Jenpikz8FEEwQKh1qWvpncJi3dLTlyav41cnMDWmABKgLigyoaMBROBRGq qzahGnwfKoLlfSPQWRU+hCMEXP8NPFW9rmBeKR3o8Y8jLS1RPU7bRZdIlrF0bKUmN3p/P1yes /tjEdVu8c5wnjAD3cjenMY1VnAhyuNGeE0Qbu08ZPO733hFNeUOugzWMt+P0+8HOy1B5npMW8 g4wzLq4vQzyFCjns1arsQltqyb1jRci1tmXNV3ZwfQW5CN3BQGbf73HijccF2YM2/p75ks17q /3sXreAnpqMA32LCjrLHMCcjLrnginicSS9ox6u3Iu0/vUwpqcOcHncDCeUZ5uHk5Mu8w/KCe DGFtSLy6HLbpqK8+Pw/9B9Q5g5oOgfMnq1S8qt19EOOujs7TYbbylnsHoFFgKYBUuU23pVbXa +KpwMMOx7jOwp2sp/+8VuH0YR6Fjxvy5Hi6rfeyYy58GoVIHjfp3qvla2VYFQmPILHtrwWWM5 4t7oDfv5oC/XetfovpMtgluA90zCQrg6WZrYiEWlL5+L4jGmA/wZVXPbi+Gj3GTNJW4ZYUBEn kGKcG52g9q6C9FDe6pj75KiG70Mag== Subject: [Bloat] qdisc traversing flows X-BeenThere: bloat@lists.bufferbloat.net X-Mailman-Version: 2.1.20 Precedence: list List-Id: General list for discussing Bufferbloat List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 27 Jan 2018 13:40:25 -0000 This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --y4921U0Tw0RvqU7jCgL7uoQT9RFUYO3Bj Content-Type: multipart/mixed; boundary="srTSVEJlTrblvFNgtokvByFVlWYi3h0u9"; protected-headers="v1" From: Matthias Tafelmeier To: "bloat@lists.bufferbloat.net" Message-ID: Subject: qdisc traversing flows --srTSVEJlTrblvFNgtokvByFVlWYi3h0u9 Content-Type: multipart/mixed; boundary="------------648557816DAED0FF29B70822" Content-Language: de-DE This is a multi-part message in MIME format. --------------648557816DAED0FF29B70822 Content-Type: multipart/alternative; boundary="------------A64634799BE8CCCA75E138DF" --------------A64634799BE8CCCA75E138DF Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 SGFsbG8sCgpzaW5jZSB0aGlzIE1MIGhhcyBhIHN0cm9uZyBxZGlzYyBvcmllbnRlZCBzcGlu LCBJJ2QgbGlrZSB0byBzaGFyZSB3aGF0IEkKZGlkIGVuZCBvZiBsYXN0IHllYXIuIEkgd2Fz IHBsYXlpbmcgYSBsaXR0bGUgd2l0aCBCQ0MvZUJQRiBhbmQga2VybmVsCmZsb3cgaW50ZXJm YWNpbmcgWzFdIC4uLiBleGN1c2VzIGZvciB0aGUgY29kZSBxdWFsaXR5LCBpdCB3YXMKcHJv dG90eXBpbmcsIHRob3VnaCAuLi4KCkkgY2FuIGltYWdpbmUgcmV2aXZpbmcgZWZmb3J0cyBh cyB0byBmbGV1dGFuLCBzaW5jZSBJIHBlcmNlaXZlIG1hbnkKdXNlZmVsIGFzcGVjdHMgYXMg dG8gZmxvd2luZyBhbmQgYXNzb2NpYXRpb25zIG9mIGl0IGFyZSBzaW1wbHkgbm90CmNvdmVy ZWQgeWV0LCBhdCBsZWFzdCBubyBjb252ZW5pZW50bHkgYWNjZXNzaWJsZSBmcm9tIHVzZXIg bGFuZCBlbmQgYW5kCm5vdCBvbiBmcm9tIGEgcGVyIG5vZGUgYW5nbGUuIEVzcGVjaWFsbHkg dGhlIGNhc2UgZm9yIGJhY2tlbmQgc2NlbmFyaW9zCndpdGggPiB0aG91c2FuZHMgb2YgZmxv d3MuIFF1aXRlIHNvbWUgYWNyZSB0byBiZSBwbG93ZWQgaWYgeW91IGFza2VkIG1lLgpGZWVs IGZyZWUgdG8gcHJvdmUgbWUgd3JvbmcuIE1vc3RseSwgSSBwZXJjZWl2ZSBxdWlja2VyIGxl YXBzIGFyZSBkb3duCnRvIG11bmRhbmUgdGhpbmdzIGxpa2UgZWZmaWNpZW50LCBjb252ZW5p ZW50IGRpZ2dlc3RhYmlsdHkgb2YgbG93IGxldmVsCmtlcm5lbCBpbnRlcmZhY2luZyBvdXRw dXQgLi4uIGUuZy4gaXByb3V0ZTIuIEEgbG90IG9mIHZpYnJhbnQgZHltYW5pY3MKYXJlIHBl cmNlaXZhYmxlIGxhdGVseSBpbiB0aGlzIGNvcm5lciB0aG91Z2ggLSBJJ20gYXBwbGF1ZGlu Zy4gWzJdW10KClVudGlsIGZ1cnRoZXIgcHJvZ3Jlc3MsIG1pZ2h0IHRvIHRoZSBtZXJyaXQg b2Ygc29tZS4KCnwkIHN1ZG8gLi9mbGV1dGFuIGZsb3dzIC1xIC1pIDUgcWRpc2MgcXVldWVz ICM+IGxvYWQgKGJ5dGVzKSBwZXIgcXUKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwrilojilojilojilojilojilojilojilojilojilojilojiloji lojilojilojilojilojilojilojilojilojilojiloggMC4zSyAwCuKWiOKWiOKWiOKWiOKW iOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKW iOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKW iOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKW iOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiAoxLjAwSyAx IC0tLS0gZmxvd2luZyB2b2x1bWVzIHBlciBxdSAjIz4gMAojIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCuKWiOKWiOKWiOKWiCA2Ni4wMCAxOTIuMTY4LjEw LjUwIzQ3OTU2IDkxLjEuNDkuOTcjODAg4paI4paI4paI4paI4paIIDc4LjAwIDo6IzU4IDo6 IzAK4paI4paI4paI4paI4paI4paIIDg2LjAwIDIwMDM6NjI6NDYyNTpkMWE0OmExNjY6Y2Y0 NzozMGE2OmU2MTIjNTEzNTgKMmEwMDoxNDUwOjQwMDE6ODBiOjoyMDBhIzgwIOKWiOKWiOKW iOKWiOKWiOKWiCA4Ni4wMAoyMDAzOjYyOjQ2MjU6ZDFhNDphMTY2OmNmNDc6MzBhNjplNjEy IzUxMzYwIDJhMDA6MTQ1MDo0MDAxOjgwYjo6MjAwYSM4MAotLS0tIGZsb3dpbmcgdm9sdW1l cyBwZXIgcXUgIyM+IDEKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwrilojilojilojilojilojiloggODYuMDAgMjAwMjoyMjo0NjI1OmQxYTQ6YTE2Njpj ZjQ3OjMwYTY6ZTYxMiM1MTM2MAoyYTAwOjE0NTA6NDAwMTo4MGI6OjIwMGEjODAg4paI4paI 4paI4paI4paI4paI4paIIDExMi4wMCAxOTIuMTY4LjEwLjUwIzQzNjYwCjE5Mi4xMTEuMjQ5 LjkjNDQzIOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiCAxNzIuMDAKMjAw Mzo2Mjo0NjI1OmQxYTQ6YTE2NjpjZjQ3OjMwYTY6ZTYxMiM1NTgzNCAyYTAyOjI2ZjA6ZmM6 OjVjN2E6MzE3YyM4MArilojilojilojilojilojilojilojilojilojilojilojilojiloji lojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojiloji lojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojiloji loggNzEwLjAwCjIwMDM6NjI6NDYyNTpkMWE0OmExNjY6Y2Y0NzozMGE2OmU2MTIjNTQyOTIg MmEwMDoxNDUwOjQwMDE6ODE5OjoyMDBlIzQ0MyB8CgoKWzFdIGh0dHBzOi8vZ2l0aHViLmNv bS9jaGVydXNrL2ZsZXV0YW4KClsyXSBodHRwczovL2dpdGh1Yi5jb20vc3Zpbm90YS9weXJv dXRlMgoKWzNdCmh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwv Z2l0L2Rib3JrbWFuL2lwcm91dGUyLmdpdC9jb21taXQvP2lkPTQzYmMyMGFlNzM2Yzk0M2E3 MjAyZmVmMDcxMDRlYjFiNTgwMGI3ZjgKCi0tIApCZXN0ZW4gR3J1w58KCk1hdHRoaWFzIFRh ZmVsbWVpZXIKCg== --------------A64634799BE8CCCA75E138DF Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable

Hallo,

since this ML has a strong qdisc oriented spin, I'd like to share what I did end of last year. I was playing a little with BCC/eBPF and kernel flow interfacing [1] ... excuses for the code quality, it was prototyping, though ...

I can imagine reviving efforts as to fleutan, since I perceive many usefel aspects as to flowing and associations of it are simply not covered yet, at least no conveniently accessible from user land end and not on from a per node angle. Especially the case for backend scenarios with > thousands of flows. Quite some acre to be plowed if you asked me. Feel free to prove me wrong. Mostly, I perceive quicker leaps are down to mundane things like efficient, convenient diggestabilty of low level kernel interfacing output ... e.g. iproute2. A lot of vibrant dymanics are perceivable lately in this corner though - I'm applauding. [2][]

Until further progress, might to the merrit of some.

$ sudo ./fleutan flows -q -i 5

qdisc queues #>
load (bytes) per qu
#########################################################################=
###########################
=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=
=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=
=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88                =
                                              0.3K          0
=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=
=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=
=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=
=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=
=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=
=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=
=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=
=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=
=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88       =
   1.00K          1
----

flowing volumes per qu ##>
0
#########################################################################=
#########################################################################=
#####
=E2=96=88=E2=96=88=E2=96=88=E2=96=88                                     =
                    66.00                 192.168.10.50#47956         91.=
1.49.97#80                        =20
=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88                            =
                            78.00                            ::#58       =
               ::#0                         =20
=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88                   =
                                    86.00          2003:62:4625:d1a4:a166=
:cf47:30a6:e612#51358 2a00:1450:4001:80b::200a#80   =20
=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88                   =
                                    86.00          2003:62:4625:d1a4:a166=
:cf47:30a6:e612#51360 2a00:1450:4001:80b::200a#80   =20

----
flowing volumes per qu ##>
1
#########################################################################=
#########################################################################=
#####
=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88                   =
                                    86.00          2002:22:4625:d1a4:a166=
:cf47:30a6:e612#51360 2a00:1450:4001:80b::200a#80   =20
=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88          =
                                           112.00                 192.168=
=2E10.50#43660        192.111.249.9#443                       =20
=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=
=96=88=E2=96=88=E2=96=88=E2=96=88                                        =
        172.00          2003:62:4625:d1a4:a166:cf47:30a6:e612#55834 2a02:=
26f0:fc::5c7a:317c#80    =20
=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=
=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=
=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=
=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=
=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=
=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=
          710.00          2003:62:4625:d1a4:a166:cf47:30a6:e612#54292 2a0=
0:1450:4001:819::200e#443   


[1] https://github.com/cherusk/fleutan

[2] https://github.com/svinota/pyroute2

[3] https://git.kernel.org/pub/scm/linux/kernel/git/dbo= rkman/iproute2.git/commit/?id=3D43bc20ae736c943a7202fef07104eb1b5800b7f8<= /a>

--=20
Besten Gru=C3=9F

Matthias Tafelmeier

--------------A64634799BE8CCCA75E138DF-- --------------648557816DAED0FF29B70822 Content-Type: application/pgp-keys; name="0x8ADF343B.asc" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="0x8ADF343B.asc" -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v2 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 0GB325hkf9UOJN7L =3D+YtT -----END PGP PUBLIC KEY BLOCK----- --------------648557816DAED0FF29B70822-- --srTSVEJlTrblvFNgtokvByFVlWYi3h0u9-- --y4921U0Tw0RvqU7jCgL7uoQT9RFUYO3Bj Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iQEcBAEBCQAGBQJabIFHAAoJEOAWT1uK3zQ7vpoH/ArgRUCrd1ZTWzJ46CVD9ybf 21vwRSpIHjCDvkCKZHRF2X5bnrpK9mSflkp1qK7jYPrmMUtsSjjElg4fK2L6rk20 d+Kv+qJUGDo5o4GciukZlSot7c0656tygNZaX9oTY+iqLL1WH/5t6p9A+UuL8IYj UHMyz4alT7FBl3tevHOp6blVb9ehRiKiPTWV1Zz0ioEjmkHtYDsw29kAgq1Tdz7E cGFTuS+LCmi238FbKg+qwfqHFnaQGXyNjuPCRswkVPHGGqZMbsU1Koxf80rHSIxW mF61Y0LvizLSp8YrYEhxJITWsuIxLqTCt/qtocQhZSPmKycwl+Agsvn9Zh7TkyE= =wTOl -----END PGP SIGNATURE----- --y4921U0Tw0RvqU7jCgL7uoQT9RFUYO3Bj--