<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">Hi Kartik,<div><br></div><div>Thanks for the questions.</div><div><br><div><blockquote type="cite"><div dir="ltr"><div>Has HTTP/2[1] been discussed on this list?[2] I've been thinking about bufferbloat as I read the spec, and had a couple of questions that weren't answered in the FAQ[3]:<br><br></div><div>1. HTTP/2 reduces the number of connections per webpage. Assume for a second that all players instantaneously adopt HTTP/2 and so reduce their buffer sizes everywhere. Latencies will improve and there'll be less congestion. Now back to the real world with people building websites, trying to improve performance of websites and devices all over the place. Will bufferbloat stay eradicated, or will the gains be temporary?<br></div></div></blockquote><div><br></div>A Bufferbloat algorithm (fq_codel, or other SQM (smart queue management)) is required to minimize the number of buffers queued at *any* bottleneck in a network. This occurs frequently at the home router/edge of the network, but can appear anywhere. Wherever a queue begins to build up in a network, optimal performance demands some kind of SQM</div><div><br></div><div>HTTP/2 may well help by requesting fewer connections, but the SQM in the router will still be in effect. If the smaller number of HTTP/2 requests from the browser don't create a queue, then SQM won't even become active. But if the browser traffic does manage to generate a queue, the router's SQM will keep it under control.</div><div><br></div><div>I want to emphasize that point: SQM doesn't force any fixed allocations of bandwidth, packet rate, etc. It actually measures the queue length (in msec) for each traffic flow. If all the packets are whistling through without any congestion, every sender will get the full rate of the link. SQM only becomes active when there *is* congestion, and it throttles those flows that are sending the most traffic (to preserve the link capacity for the "little flows" that are time sensitive. </div><div><br><blockquote type="cite"><div dir="ltr"><div>2. More generally, is there any technical way for bufferbloat to stay solved? Or is it an inevitable tragedy of the commons dynamic that we just have to live with and make temporary dents in?</div></div></blockquote><div><br></div>Yes, it will stay solved. No, there's no tragedy of the commons. (Great question, though.) The SQM algorithm only examines packets within a single router, so multiple routers are essentially independent. There's no central communication required - it's all local to a router.</div><div><br></div><div>In fact, the "tragedy" of solving bufferbloat is that it needs to be solved *everywhere*. That is to say that *every* router, cell phone, DSLAM, Cable modem (home and head-end), personal computer OS, and other piece of equipment on the planet needs to be updated. This is the hard part.</div><div><br><blockquote type="cite"><div dir="ltr"><div>3. Has there been discussion of solving bufferbloat at the TCP layer, by making buffers harder to fill up? I'm thinking of heuristics like disallowing a single site from using 80% of the buffer, thereby leaving some slack available for other bursty requirements.<br></div></div></blockquote><div><br></div><div>I am personally not hopeful for this kind of approach. a) The TCP algorithm in hosts isn't easily made aware of congestion elsewhere in the network, so it can't react to that congestion; b) there aren't a lot of tested proposals (beyond dropping packets) to make things better; c) it suffers from exactly the same problem as solving bufferbloat - it needs to be rolled out in every piece of gear. (We can't even attract the attention of vendors (Apple, Microsoft, most routing gear, etc). to implement the solved algorithms to improve bufferbloat. Sigh.)</div><br><blockquote type="cite"><div dir="ltr"><div>I'm sure these questions are quite naive. Pointers to further reading greatly appreciated.<br><br></div><div>Kartik<br></div><div><a href="http://akkartik.name/about">http://akkartik.name/about</a><br></div><div><br>[1] <a href="https://insouciant.org/tech/http-slash-2-considerations-and-tradeoffs">https://insouciant.org/tech/http-slash-2-considerations-and-tradeoffs</a><br><br></div>[2] Google search on "site:<a href="https://lists.bufferbloat.net/">https://lists.bufferbloat.net</a>" didn't turn up anything, and I get "permission denied" when trying to access the downloadable archives at <a href="https://lists.bufferbloat.net/pipermail/bloat">https://lists.bufferbloat.net/pipermail/bloat</a>.<br><br>[3] <a href="https://gettys.wordpress.com/bufferbloat-faq">https://gettys.wordpress.com/bufferbloat-faq</a></div>
_______________________________________________<br>Bloat mailing list<br><a href="mailto:Bloat@lists.bufferbloat.net">Bloat@lists.bufferbloat.net</a><br>https://lists.bufferbloat.net/listinfo/bloat<br></blockquote></div><br></div></body></html>