One of the weirdest things at Juniper was the obsession the networking teams had about reordering packets. They kept talking about how applications could not tolerate reordering.
And this confused me to no end.
After all TCP was based on the assumption of packets being reordered and out-of-sequence and surviving that mess?
And then it was explained to me as if I was the networking NOOB that I am. The problem is that when a packet gets reordered TCP doesn’t perform as well as when the packet gets sent in order. And there are scenarios where TCP will assume that the network is congested if the packet doesn’t get sent in time and will slow down the network connection.
And so to work around the TCP protocol thinking it understands what is going on in the network, ASIC engineers do heroics to ensure that packets flow through routers in order.
Then I read this today and I was reminded of those conversations:
There are all sorts of very interesting applications that run over the Internet that really are just pumping packets and want them arriving in order or not at all.
And that because of these applications the design complexity of routers is vastly more complex than if the layers above the network did not assume anything about a reordered packet.