The IP fragment handling feature accelerates the processing of fragmented IP traffic and
enables the use of 5-tuple (or other non 2-tuple) hash keys on fragments for better CPU
load distribution. The normal flow is handled in the hardware, while the software
application must handle the exceptions. The IP fragment handling feature is useful, for
instance, for GTP traffic.
Note: The IP fragment handling feature only
supports outer fragments and not inner fragments. However, inner hash key types can
be used if the first outer fragment contains all required hash key data.
Fragmented datagrams
This figure shows how an unfragmented datagram is fragmented and split up in individual
fragments.
General operation
Received fragmented datagrams are not reassembled in the SmartNIC but identified and
sorted for reassembly in the application.
Note: For all fragments, the UDP
and TCP checksums cannot be calculated, since this requires all fragments. The
checksums must be evaluated in the application.
Fragmented datagrams are identified on the first fragment and subsequent fragments are
moved to the same stream (matched fragments stream). If a received fragment is not
recognized as belonging to an identified datagram, it is handled as unmatched and moved
to a stream for unmatched fragments (unmatched fragments stream).
Note: On
2-port and 4-port SmartNICs, a fragment can be recognized as belonging to an
identified datagram even if it is not received on the same port as the first
fragment.
A flow is regarded as normal (see Normal Flow) if the first and last fragments are received
first and last respectively. Otherwise the flow is regarded as an exception flow (see
Exception Flow).
It can be
specified that all outer fragmented packets are classified as unmatched to ensure that
all fragments of interest end up in the same stream.
IP fragment handling combined with other features
Deduplication compares first fragments. If a first
fragment is recognized as a duplicate frame, subsequent fragments from the same datagram
are discarded.
When a first fragment matches a filter or is discarded by a filter, all subsequent fragments belonging to the same datagram are captured or discarded, respectively.
Frame slicing is performed as if the packets were not part of a fragmented datagram. Each fragment is sliced separately. Some dynamic slicing depends on information that is only available to first fragments and therefore does not apply to subsequent fragments.