FragmentsFragments is a module that implements an IPv4/IPv6 packet reassembly algorithm with a limit on memory consumption (using an LRU) and lifetime.
The first thing to note about IPv4 and IPv6 protocols is that fragmentation is usually quite rare (in the sense that the TCP or QUIC protocol should be able to exchange packets of the correct size). However, there may be cases of fragmentation. A fairly simple example to simulate fragmentation is to ping with a size greater than 1500 bytes (which is the default size for an Ethernet interface).
module SBstr = Slice_bstrThe type of content in an IPv4/IPv6 packet. It should be noted (the happy path) that if the data is a slice, it corresponds (without copying) to the Ethernet frame: this case signals to the user that there has been no fragmentation. Otherwise, the content is a reassembly (which necessarily involves copying) of the packets received.
module Make (Key : Hashtbl.HashedType) : sig ... end