Module retina_datatypes::packet_list

source ·
Expand description

Vectors of raw packet data. All of these types are Connection-level, meaning they are delivered on connection termination.

There are two types of packet lists: those containing Mbufs (Zc prefix) and those containing raw bytes (as vectors).

For the former: Mbufs are shared across these lists via DPDK reference counting, so requesting lists of packets does not require copying. However, it may introduce additional mempool requirements, as Mbufs must be kept in memory for the duration of the connection. This is often particularly infeasible for UDP connections, which must stay in memory until a timeout is reached. In such cases, users may wish to use the non-Zc variants.

For TCP connections, the non-Zc variants wait to clone data until the first few packets have passed or until the packet data is requested. After the first PKTS_START_CLONE packets, it is likely that some traffic has been filtered out by the framework (e.g., TLS handshake has been parsed). This is a middle ground between memory usage and compute performance.

For UDP connections, this is not feasible without unacceptable mempool utilization; many UDP connections are short-lived, and UDP connections are not “closed” until a timeout period has passed.

Structs§

  • For a connection, the bidirectional stream of packets in the order received by the framework.
  • For a connection, the bidirectional stream of packets in the order received by the framework.
  • For a connection, an originator’s (unidirectional) stream of packets in the order received by the framework. For TCP streams, the “originator” is the endpoint that sends the first SYN. For UDP, it is the endpoint which sends the first-seen packet.
  • For a connection, an originator’s (unidirectional) stream of packets in reassembled order. This should be used for TCP only.
  • For a connection, an originator’s (unidirectional) stream of packets in the order received by the framework. For TCP streams, the “originator” is the endpoint that sends the first SYN. For UDP, it is the endpoint which sends the first-seen packet.
  • For a connection, an originator’s (unidirectional) stream of packets in reassembled order. This should be used for TCP only.
  • Pasic raw packet bytes.
  • For a connection, a responder’s (unidirectional) stream of packets in the order received by the framework. For TCP streams, the “responder” is the endpoint that receives the first SYN and responds with a SYN/ACK. For UDP, it is the endpoint which does not send the first packet.
  • For a connection, a responder’s (unidirectional) stream of packets in reassembled order. This should be used for TCP only.
  • For a connection, a responder’s (unidirectional) stream of packets in the order received by the framework. For TCP streams, the “responder” is the endpoint that receives the first SYN and responds with a SYN/ACK. For UDP, it is the endpoint which does not send the first packet.
  • For a connection, a responder’s (unidirectional) stream of packets in reassembled order. This should be used for TCP only.

Traits§