A Theoretical Foundation for Middleboxes
When talking to colleagues outside the networking community, the question of what is a middlebox is commonly brought up. One definition we might consider is from RFC 3234:
… “middleboxes” - defined as any intermediary box performing functions apart from normal, standard functions of an IP router on the data path between a source host and destination host.
The problem with this particular definition and perhaps middleboxes in general is that this allows nearly unbounded computational power and provides no hints on how these boxes behave. More specifically this leads to several strange questions:
- Do middleboxes produce an output packet for every packet received?
- Do middleboxes produce an output packet only when presented with an input, i.e., can a middlebox produce a packet in response to no packets being input?
Note this is not as simple as it sounds, what if a data path element holds on to every input packet for a random duration: this is not quite a queue but is indistinguishable from one based on just external behavior. Is this a middlebox? Pacers and the like often exhibit such behavior.
- Are webservers that serve as a front-end to a database a middlebox?
Pedantic as these questions sound, it is hard to solve problems involving middleboxes without answers to these questions. Harder still is evaluating solutions.