Cake - FQ_codel the next generation
-
http://www.bufferbloat.net/projects/codel/wiki/Cake - Introduction/Summary
https://lists.bufferbloat.net/listinfo/cake - Mailing List (less than a month old)
Cake seems to be a more inclusive FQ_CoDel and it apparently includes a bit of a traffic-shaper, but it is included only to aid the Fair Queueing aspect, I think.
Personally I will be happy to see it better support "low bandwidth" connections, like mine. :)If you have access to Linux, there is https://github.com/dtaht/sch_cake, which apparently compiles fine on kernels 3.12, 3.18, and 4.
-
Using the link above, Cake compiles and presumably functions fine on ArchLinux. I am using the directions found here: https://lists.bufferbloat.net/pipermail/cake/2015-April/000073.html
-
I can't wait for buffer bloat to be "solved". If even regular codel was all over the place, the Internet would feel so much faster.
Oh yeah. I was downloading some torrents the other day and my connection was getting maxed out. hehe. No ping spikes, just some packet-loss. Down with buffer bloat!
From 8.8.4.4: bytes=60 seq=6289 TTL=53 ID=4887 time=14.140ms
From 8.8.4.4: bytes=60 seq=628a TTL=53 ID=49c2 time=13.967ms
From 8.8.4.4: bytes=60 seq=628b TTL=53 ID=4a3b time=13.393ms
From 8.8.4.4: bytes=60 seq=628c TTL=53 ID=4af1 time=13.857ms
Timeout waiting for seq=6287
From 8.8.4.4: bytes=60 seq=628d TTL=53 ID=4c5d time=13.827ms
From 8.8.4.4: bytes=60 seq=628e TTL=53 ID=4cb0 time=13.985ms
From 8.8.4.4: bytes=60 seq=628f TTL=53 ID=4dcd time=13.741ms
From 8.8.4.4: bytes=60 seq=6290 TTL=53 ID=4e6c time=13.889ms
From 8.8.4.4: bytes=60 seq=6291 TTL=53 ID=4ef7 time=14.717ms
From 8.8.4.4: bytes=60 seq=6289 TTL=53 ID=4887 time=14.140ms
From 8.8.4.4: bytes=60 seq=628a TTL=53 ID=49c2 time=13.967ms
From 8.8.4.4: bytes=60 seq=628b TTL=53 ID=4a3b time=13.393ms
From 8.8.4.4: bytes=60 seq=628c TTL=53 ID=4af1 time=13.857ms
Timeout waiting for seq=6287
From 8.8.4.4: bytes=60 seq=628d TTL=53 ID=4c5d time=13.827ms
From 8.8.4.4: bytes=60 seq=628e TTL=53 ID=4cb0 time=13.985ms
From 8.8.4.4: bytes=60 seq=628f TTL=53 ID=4dcd time=13.741ms
From 8.8.4.4: bytes=60 seq=6290 TTL=53 ID=4e6c time=13.889ms
From 8.8.4.4: bytes=60 seq=6291 TTL=53 ID=4ef7 time=14.717ms
From 8.8.4.4: bytes=60 SEQ=62d4 TTL=53 ID=9267 time=13.858ms
From 8.8.4.4: bytes=60 seq=62d5 TTL=53 ID=927e time=13.840ms
From 8.8.4.4: bytes=60 seq=62d6 TTL=53 ID=9307 time=13.802ms
From 8.8.4.4: bytes=60 seq=62d7 TTL=53 ID=93ec time=14.816ms
Timeout waiting for seq=62d3
From 8.8.4.4: bytes=60 seq=62d8 TTL=53 ID=9552 time=15.040ms
From 8.8.4.4: bytes=60 seq=62d9 TTL=53 ID=96b3 time=14.688ms
From 8.8.4.4: bytes=60 seq=62da TTL=53 ID=9869 time=15.626ms
From 8.8.4.4: bytes=60 seq=62db TTL=53 ID=991d time=13.664ms -
Using the link above, Cake compiles and presumably functions fine on ArchLinux. I am using the directions found here: https://lists.bufferbloat.net/pipermail/cake/2015-April/000073.html
We have quite a bit of work left to do to finalize cake, (there are many experimental features like a newer codel model and 8 way set associative hashing) but among other things, the shaper is smart enough to do the right things at very low bandwidths, for which htb + fq_codel required a bit of scripting.
We are expressly dual licensing BSD/GPL the code in the hope that a BSD like pfsense will take the code and run with it. We have heard someone will be trying a dpdk (userspace) version also.
Please join us on the cake mailing list to discuss your results and requirements!
-
I have a basic understanding of N-way associative caching on CPUs, but what does N-way associative hashing mean? What benefits does this give over just hashing the tuples, then dropping the packet in the corresponding bucket?
-
I'll we glad when we can have our Cake and delete it too.