Specialization. We have many different buffer implementations tailored to
different uses: blocking/non-blocking, multi-reader, fixed-size
and variable-sized slots, auto-resizing, etc.

Copy Avoidance. One special implementation is that of "indirect buffers".
These rings only maintain pointers into
other buffers, to allow forwarding of traffic without copying. In read()
calls, indirect buffers silently resolve the referenced "data buffer" and
transparently return data from that buffer to the user.