I know that if the IP payload is> MTU, routers usually fragment the IP packet. Finally, all fragmented packets are collected at the destination using IP-ID fields, IP fragment offsets, and fragment flags. The maximum IP payload length is 64 KB. Thus, it is very believable for L4 to transfer a payload of 64K. If the L2 protocol is Ethernet, which is often the case, the MTU will be around 1600 bytes. Consequently, the IP packet will be fragmented on the source host itself. However, a quick search for IP implementation on Linux tells me that in the latest kernels, the L4 protocols are fragment friendly, i.e. They try to keep fragmentation work for IP by passing buffers of size close to the MTU.
Given these two facts, I wonder how often an IP packet gets fragmentation on the original host itself. Does this happen sometimes / rarely / never? Does anyone know if there are exceptions to the fragmentation rule in the Linux kernel (i.e. are there situations where L4 protocols are not fragment-friendly)? How is this handled on other common operating systems such as windows? How often are IP packets fragmented?
source share