This is much better than trying to estimate bandwidth from packet loss.
This is much better than trying to estimate bandwidth from packet loss.
Excluding the HTTP/2 situations, obviously if you're fetching a single small resource (image or something) that takes <1s then that's short, but, where's the line there? Is something >1m long?
static u32 bbr_min_rtt_win_sec = 10; /* min RTT filter window (in sec) */
The code also uses a moving average over 10 round trips. So that's what the filter needs to get a stable estimate. A point in the paper [1] is that this method is said to work well for maintained TCP connections with idle periods. That means HTTP/2 in practice.It would be interesting to see test data on this for large numbers of real connections. How much do bandwidth and delay vary in practice across ISP links, cable headends, and cellular links?
[1] http://caia.swin.edu.au/cv/dahayes/content/networking2011-cd...
Super short lived sessions can really only go faster with tricks like increasing the initcwnd. Anything longer than that, I'd expect bbr to work well.
This definitely seems like an improvement, however is it possible that this changed could result in one or more additional attack vectors?
In addition, what about the additional resources needed to pull this off; how many fewer persistent connections could be maintained by a single server with the same specs?