As a post-grad, I developed a podcast addiction that included the wonderfully geeky Security Now. I encourage you all to listen to Steve, the ‘explainer-in-chief’, describe the inner workings of our connected lives, but I’d like to address a specific issue discussed in episode 345 called “buffer bloat”.
Buffer bloat arose as a consequence of continued advances in computer hardware over time: as memory chips became cheaper, router manufacturers started overloading devices with RAM used to buffer data from the local network as it passed upstream to the internet. Intuitively, that sounds great — more buffering means fewer packets are dropped. But in reality, large buffers are incompatible with the design of the internet.
In general, devices connected to the internet don’t know or care about their connection speed, they simply send data as fast as possible. At a certain point the network starts dropping packets so the devices send data more conservatively. That is, dropped packets are required to assess the appropriate transmission speed. With big buffers packets are rarely dropped, and so connected devices keep pumping data until the router’s buffer overflows. Up to that point, a packet sent to the router can take hundreds or thousands of milliseconds to progress through large buffers, which means the latency of clicking a link on a website, for example, goes from milliseconds to seconds. In short, we buffer data to improve our network, but paradoxically slow it down [^ 1].
Having worked as an engineer for a while now, I consider this a perfect microcosm of the development process. At every point along the way, each of the engineers and programmers believed they were making the best choices. It is a considerable feat to see the whole picture, and we often fail. Not ‘we’ as in budding engineers, but everyone. This probably comes as no surprise to those over the age of 40, but I’m constantly dumbstruck at just how little each person sees of the greater picture (including myself). And yet, humanity shows no signs of total ruin. In fact, there doesn’t seem to be anything capable of slowing us down. I find this both heartening and terrifying.
It is wonderful to know that even when you make mistakes the world will carry on. On the other hand, it is a little terrifying to think that even with smart design choices, testing the hell out of your design, optimisation and re-design, and quadruple, quintuple, please-with-a-cherry-on-top praying for success, things can still go wrong.
In short: Reality is complex, our minds are tiny, but none of that really seems to matter anyway.
^ 1]: Following Steve’s recommendation, I went over to Berkley’s [network analyser. I have since replaced my router with a new D-Link model, which shows a more respectable 100ms.