On Mon, Sep 4, 2017 at 10:57 AM, Hannes Frederic Sowa <han...@stressinduktion.org> wrote: > Hi Tom, > > Tom Herbert <t...@herbertland.com> writes: > >>> The problem is that you end up having two streams, one fragmented and >>> one non-fragmented, but actually they belong to the same stream. It is >>> known to break stuff, see: >>> >>> <https://patchwork.ozlabs.org/patch/59235/> >>> >>> I would agree with you, but we can't break existing setups, >>> unfortunately. >>> >> I'm not sure what "existing setups" means here. If this is referring >> to the Internet then out of order packets and fragments abound-- any >> assumption of in order delivery for IP packets is useless there. > > Network cards don't know where traffic originates from, even on the same > card. Clouds nowadays try to convince everyone to virtualize existing > workloads. So I *assume* that at least for traffic that seems to be in > one L2 domain out of order should not occur or things will break. > > Ethernet for a long time appeared to do very much in order delivery and > guarantees that. Thus for people it appeared that UDP packets are also > strictly in order. Encapsulating Ethernet inside UDP thus must preserve > those properties, especially if used for virtualization. Unfortunately > fragmentation happens and the stack has to deal with it somehow. > There is absolutely no requirement in IP that packets are delivered in order-- there never has been and there never will be! If the ULP, like Ethernet encapsulation, requires in order deliver then it needs to implement that itself like TCP, GRE, and other protocols ensure that with sequence numbers and reassembly. All of these hoops we do make sure that packets always follow the same path and are always in order are done for benefit of middlebox devices like stateful firewalls that have force us to adopt their concept of network architecture-- in the long run this is self-defeating and kills our ability to innovate.
I'm not saying that we shouldn't consider legacy devices, but we should scrutinize new development or solutions that perpetuate incorrect design or bad assumptions. Tom