How long are fragmented TCP fragments kept in the TCP server

Randomblue asked:

Suppose that a given TCP fragment is fragmented into two IP datagrams, and that the first datagram arrives to the TCP server, but the second datagram never arrives.

After a certain amount of time the TCP server sends a keepalive, and determines that the client is alive. What does the TCP server then do with this first datagram? Does is wait for the second datagram to arrive, or does it discard the first datagram?

My answer:

After the fragment reassembly timeout expires, the fragment is dropped; the other end would need to retransmit.

This timeout is generally configurable. On Linux, it’s 30 seconds by default and controlled via /proc/sys/net/ipv4/ipfrag_time.

View the full question and any other answers on Server Fault.

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.