Masataka Ohta wrote on 03/09/2023 14:32:
See, for example, the famous paper of "Sizing Router Buffers".
With thousands of TCP connections at the backbone recognized
by the paper, buffers with thousands of packets won't cause
packet reordering.
What you said reminds me of the old saying: in theory, there's no
difference between theory and practice, but in practice there is.
In theory, you can always fabricate unrealistic counter examples
against theories by ignoring essential assumptions of the theories.
In this case, "Without buffer bloat" is an essential assumption.
I can see how this conclusion could potentially be reached in specific
styles of lab configs, but the real world is more complicated and the
assumptions you've made don't hold there, especially the implicit ones.
Buffer bloat will make this problem worse, but small buffers won't
eliminate the problem.
That isn't to say that packet / cell spray arrangements can't work.
There are some situations where they can work reasonably well, given
specific constraints, e.g. limited distance transmission path and path
congruence with far-side reassembly (!), but these are the exception.
Usually this only happens inside network devices rather than between
devices, but occasionally you see products on the market which support
this between devices with varying degrees of success.
Generally in real world situations on the internet, packet reordering
will happen if you use round robin, and this will impact performance for
higher speed flows. There are several reasons for this, but mostly they
boil down to a lack of control over the exact profile of the packets
that the devices are expected to transmit, and no guarantee that the
individual bearer channels have identical transmission characteristics.
Then multiply that across the N load-balanced hops that each flow will
take between source and destination. It's true that per-hash load
balancing is a nuisance, but it works better in practice on larger
heterogeneous networks than RR.
Nick