An Internet Protocol (IP) datagram is a self-contained message unit having payload data and routing data for routing the datagram from a source host to a destination host. A host can otherwise be referred to as a node in a network.
During routing from a source host to a destination host, a datagram can undergo fragmentation and reassembly. Fragmentation refers to the parsing of a datagram into two or more sub-datagrams referred to as fragments. Reassembly refers to the reassembling of the two or more fragments into the datagram.
During reassembly, a node, such as the destination host, can store fragment data and reassembly state records for the one or more datagrams. The reassembly state records can comprise pointers to the fragment data, counts of bytes in the received fragments, and other information about the datagrams.
A variety of schemes are currently available for reassembling IP datagrams. Many of these schemes lack efficiency in their allocation of memory, thereby inhibiting their utility.