Gettys: The Internet is Broken, and How to Fix It
'Fairness' between applications is also essential. We should reduce/eliminate the current perverse incentives for applications to abuse the network, as HTTP does today. We’ve had an arms race conspiracy for the last decade between web browsers and web sites to minimize latency that is destructive to other traffic we may care about (such as telephony, teleconferencing and gaming). Sometimes this is best addressed by fixing protocols to be both more efficient and more friendly to the network, as HTTP/1.1 pipelining and now SPDY are intended to do. But the 'web site sharding' problem is impossible for clients to avoid."
Posted Jun 27, 2012 17:32 UTC (Wed)
by hechacker1 (guest, #82466)
[Link] (4 responses)
Well that, and perhaps the default pfifo scheduler could be changed over to it or anything more sensible (sfq? sfq-red? codel-sfq?)
Because let's face it, as new routers come out, how many of them are actually tuned at all for QoS these days? Most manufacturers just stick to the default kernel with minimal tweaks.
Otherwise good article. I never considered that Ledbat stops working once the buffer bloat problem is fixed. But I do know that uTP surely today still hurts performance, especially by throwing off all the UDP classifiers for small packets (what looks like VOIP ends up being a uTP packet).
Posted Jun 28, 2012 7:53 UTC (Thu)
by nim-nim (subscriber, #34454)
[Link] (2 responses)
Posted Jun 28, 2012 13:09 UTC (Thu)
by Tobu (subscriber, #24111)
[Link] (1 responses)
Posted Jun 28, 2012 15:58 UTC (Thu)
by mtaht (subscriber, #11087)
[Link]
In its simplest form, fq_codel for ethernet, running at line rate,
tc qdisc add dev your_device root fq_codel
I'd love to see fq_codel or a successor on by default on ethernet in linux in the 3.7 timeframe. But I suspect it will be the distros that pick it up and run with it sooner than that, using some /etc/network/ifup.d scripting magic.
There are test kernels already for ubuntu and fedora... ( http://www.bufferbloat.net/projects/codel/wiki ), openwrt has it too... who will be next?? :)
Anyway, as for the need for "scripting magic"
wifi is more complex, having 4 queues. You need
Wifi (mac80211) has issues that cannot be solved at the qdisc layer at present.
If you are running at line rate and your underlying device driver is overbuffered, and/or doesn't have BQL support, you are not going to see all the benefit of fq_codel. BQL is very important and only in about 10 of Linux's device drivers as I write. (hint: it's about 6-12 lines of code to add it to your device driver)
If you are shaping your traffic to slower than line rate, BQL does not matter, but the relevant tc lines would include htb or hfsc as the root qdiscs. I am trying to implement many of jg's recommendations as for classification, aqm, etc in my copious spare time...
There is also an older debloat script out there that takes care of many of the BQL/network offload issues and work continues to make it all simpler.
So... do play with fq_codel, under load, especially at 100Mbit and below. This was kamal mostafa's reaction. He turned it on and...
"The result is *very* impressive: I see a 30X reduction in ping latency on a fully saturated 10Mbps network, just by switching on the new fq_codel scheduler. For an interactive ssh session over that same saturated 10Mbps network, fq_codel totally eliminates the laggy keyboard response — it feels like there’s no other network traffic at all!"
and he turned around and set up an ubuntu ppa, and wrote a howto, linked here:
Posted Jun 29, 2012 0:24 UTC (Fri)
by mtaht (subscriber, #11087)
[Link]
It's the current state of the art, although I think some more improvements can be had in soft-rate-limiting, and certainly BQL needs some love.
Posted Jun 28, 2012 14:48 UTC (Thu)
by wertigon (guest, #42963)
[Link] (2 responses)
AJAX, used properly, is a great tool. The problem is, most AJAX developers don't try to adhere to old basic idioms, like "Every file/page has a unique URI and a unique URL". And that saddens me. :(
I love the way how jQuery works with it's selectors though. jQuery, along with AJAX, allows you to do crazy stuff like:
<div id="page_content"></div>
<a href="somepage.php#page_content" class="ajaxlink">Load somepage.php in #page_content</a>
And the JavaScript is hidden from the document, completely. IMO, we need to take back the web to what it was supposed to be, and adhere to those principles. But I guess one can only dream about that...
Posted Jun 28, 2012 15:33 UTC (Thu)
by wertigon (guest, #42963)
[Link]
*runs away to fetch proper reading glasses*
Posted Jul 1, 2012 20:25 UTC (Sun)
by man_ls (guest, #15091)
[Link]
Gettys: The Internet is Broken, and How to Fix It
Gettys: The Internet is Broken, and How to Fix It
It's in 3.5, but requires per-interface setup with the tc tool. I had extracted a 4-line snippet from a script on the mailing list, but it has ceased working, so I don't have advice on trying it out.
Gettys: The Internet is Broken, and How to Fix It
Gettys: The Internet is Broken, and How to Fix It
is one line:
one fq_codel per hw queue. There are other multi-queue devices, too.
Gettys: The Internet is Broken, and How to Fix It
Gettys: The Internet is Broken, and How to Fix It
Gettys: The Internet is Broken, and How to Fix It
What is your complaint exactly? I don't get it, can you post examples or references? Thanks!
Gettys: The Internet is Broken, and How to Fix It