[Bloat] datapoint from one vendor regarding bloat

Jonathan Morton chromatix99 at gmail.com
Thu Apr 11 14:28:51 EDT 2019


> On 11 Apr, 2019, at 9:00 pm, Holland, Jake <jholland at akamai.com> wrote:
> 
> MBS = maximum burst size
> PIR = peak information rate
> CBS = committed burst size
> CIR = committed information rate

Ah, this is enough to map the terms onto my prior knowledge of TBFs.  (In my considered opinion, TBFs are obsolete technology for shaping - but there is a lot of deployed hardware still using them.)

So what this boils down to is a two-stage TBF policer.  From idle, such a system will let a burst of traffic through unfiltered, then start dropping once the bucket is empty; the bucket is refilled at some configured rate.  The two-stage system allows implementation of "PowerBoost" style policies.

The practical effect is that if there's a 10ms burst permitted, there may be 10ms of traffic collecting in some downstream dumb FIFO.  This depends on fine details of the network topology, but this is the main reason I implemented a deficit-mode "virtual clock" shaper in Cake, which has no initial burst.  With that said, 10ms isn't too bad in itself.

A question I would ask, though, is whether that 10ms automatically scales to the actual link rate, or whether it is pre-calculated for the fastest rate and then actually turns into a larger time value when the link rate drops.  That's a common fault with sizing FIFOs, too.

> Pages 1185 thru 1222 of the referenced doc* are actually really interesting reading
> and an excellent walk-through of their token bucket concept and how to use it.

Nearly 40 pages?  I have work to do, y'know!

I did just glance through it, and it looks like exactly the sort of arcane system which ISPs would *want* to leave well alone in its default configuration, or make only the simplest and easiest-to-understand changes to.  There's obviously a lot of support for Diffserv designed into it, but nobody really knows how to configure a given Diffserv implementation to work well in the general case, simply because Diffserv itself is under-specified.

 - Jonathan Morton




More information about the Bloat mailing list