On a peer-to-peer ethernet connection, I saw something that cause me trouble. An application running on a Linux box with Centos 6.4 send successively two UDP packets :
- 1 big packet : size above the MTU (so it will be fragmented) => MSG1
- 1 small packet : size below the MTU (no need to fragment it) => MSG2
It's a peer-to-peer connection so there is no switch between sender and the receiver. Here is what the receiver sees:
| Fragm. 1 MSG1 | MSG2 | Fragm. 2 MSG1 |
Even if MSG2 is send after in the application it will be receive before the end of MSG1. Do you where this kind of treatment is made : in the kernel or in the NIC driver ? Is there a way to disable it ?
Update 1 : The receiver is a FPGA without a complete IP stack so it crashes if segments are not contiguous.