Fields
Head of buffer - the value of
skb->head when the packet was first seen by the tracking logic.This pointer, combined with the timestamp, creates a unique tracking ID for the packet.Timestamp when the tracking logic first saw the packet (in nanoseconds).Combined with
orig_head to form the unique tracking ID.Current socket buffer address - the address of the
struct sk_buff *.Used to distinguish between skb clones that share the same tracking ID.Tracking ID
The unique tracking ID for a packet is computed as:- Remains consistent for a packet across the network stack
- Is shared between skb clones (same packet, different skbs)
- Changes only when the underlying packet data is reallocated
SKB Address
Theskb field contains the current skb pointer, which allows distinguishing between:
- Related packets: Same
tracking_id, differentskb(clones) - Same packet: Same
tracking_id, sameskb(same skb at different probes)
Display Format
Example JSON
Basic Tracking Event
Multiple Events for Same Packet
Event 1 (first time packet is seen):orig_head and timestamp), but events 2 and 3 have different skb addresses.
Tracking Info Section
During post-processing with thesort command, the skb_tracking section may be replaced with a tracking section that includes an event index:
Enhanced tracking information added during post-processing.
TrackingInfo Fields
Display Format with Index
Example JSON (Post-Processed)
When This Section Appears
The skb tracking section is populated when:- The
skb-trackingcollector is enabled (-c skb-tracking) - The probe has access to an
struct sk_buff *parameter - This is the first time Retis sees this packet (assigns tracking ID)
Reconstructing Packet Flows
Use tracking IDs to reconstruct packet journeys:- Filter by tracking ID: Find all events with the same
tracking_id - Sort by timestamp: Order events chronologically (use
retis sort) - Follow the path: Trace the packet through kernel functions
- Identify clones: Events with same
tracking_idbut differentskbare clones
Example Flow
Limitations
Tracking IDs are not preserved across:- Packet reallocations (new
skb->head) - Packet fragmentation/reassembly
- Encapsulation/decapsulation (in some cases)
- Packet copies with new buffers
For complete packet flow analysis, use the
retis sort command which groups and sorts events by tracking ID, adding the idx field to show event order.