This week in XDP2 -- October 3, 2025

Tom Herbert <[email protected]> Fri, 3 Oct 2025 16:06:57 -0700
Newsgroups dev.linux.lists.xdp2
Message-ID <CALx6S35QPu2aRNRc2k+5EPt1pFjeiN_NiTTtbXf+=659dcKfrQ@mail.gmail.com>
Here's a summary of XDP2 new XDP2 patches:

- A bunch of changes to the parser API. This was done for performance
which was way off relative to the old PANDA baseline. This includes
changes to metadata extract and handler function arguments. Hopefully,
it'll be the last time we need to touch the API like this :-).
- Reworked control data to be clearer and split out sub-structures to
be: key data that doesn't typically change per packet, var data that
is per packet and used by the parser, and pkt data that contains
packet information not used by the parser
- Removed lnn_maxlen protocol definition function. Added an max length
argument to the normal len operation
- Add configuration for building json (Parser Intermediate
Representation or PIR). Still need a couple more patches to output
correct json
- Fixed parser test and added some cores for testing performance. Will
write an article on XDP2 parser performance shortly
- Add raw interface support to parse_dump so we can dump a network
interface. Argument is "-i <ifac>". Example use is:

sudo ./parse_dump -i lo -U -v 10

Here's a run of the various parser cores for performance testing.:

$ for i in flowdis xdp2 xdp2fast xdp2opt xdp2_notcpopts
xdp2fast_notcpopts xdp2opt_notcpopts parselite; do echo "*** $i ***";
./test_parser -v -n 10000000 -i
pcap,/home/tom/xdp2/data/pcaps/tcp_ipv4.pcap -c $i -o null;done
*** flowdis ***
Packet 1 (repeated 10000000): avg 29 ns/p 34 Mpps
Packet 2 (repeated 10000000): avg 21 ns/p 47 Mpps
Packet 3 (repeated 10000000): avg 21 ns/p 47 Mpps
Packet 4 (repeated 10000000): avg 21 ns/p 47 Mpps
Packet 5 (repeated 10000000): avg 21 ns/p 47 Mpps
Packet 6 (repeated 10000000): avg 21 ns/p 47 Mpps
Packet 7 (repeated 10000000): avg 22 ns/p 45 Mpps
Packet 8 (repeated 10000000): avg 22 ns/p 45 Mpps
Packet 9 (repeated 10000000): avg 21 ns/p 47 Mpps
Packet 10 (repeated 10000000): avg 22 ns/p 45 Mpps
Packet 11 (repeated 10000000): avg 22 ns/p 45 Mpps
Total avg 22 ns/packet 45 Mpps
*** xdp2 ***
Packet 1 (repeated 10000000): avg 72 ns/p 13 Mpps
Packet 2 (repeated 10000000): avg 45 ns/p 22 Mpps
Packet 3 (repeated 10000000): avg 37 ns/p 27 Mpps
Packet 4 (repeated 10000000): avg 37 ns/p 27 Mpps
Packet 5 (repeated 10000000): avg 36 ns/p 27 Mpps
Packet 6 (repeated 10000000): avg 37 ns/p 27 Mpps
Packet 7 (repeated 10000000): avg 37 ns/p 27 Mpps
Packet 8 (repeated 10000000): avg 38 ns/p 26 Mpps
Packet 9 (repeated 10000000): avg 37 ns/p 27 Mpps
Packet 10 (repeated 10000000): avg 38 ns/p 26 Mpps
Packet 11 (repeated 10000000): avg 37 ns/p 27 Mpps
Total avg 41 ns/packet 24 Mpps
*** xdp2fast ***
Packet 1 (repeated 10000000): avg 64 ns/p 15 Mpps
Packet 2 (repeated 10000000): avg 38 ns/p 26 Mpps
Packet 3 (repeated 10000000): avg 31 ns/p 32 Mpps
Packet 4 (repeated 10000000): avg 31 ns/p 32 Mpps
Packet 5 (repeated 10000000): avg 31 ns/p 32 Mpps
Packet 6 (repeated 10000000): avg 31 ns/p 32 Mpps
Packet 7 (repeated 10000000): avg 30 ns/p 33 Mpps
Packet 8 (repeated 10000000): avg 31 ns/p 32 Mpps
Packet 9 (repeated 10000000): avg 31 ns/p 32 Mpps
Packet 10 (repeated 10000000): avg 31 ns/p 32 Mpps
Packet 11 (repeated 10000000): avg 31 ns/p 32 Mpps
Total avg 35 ns/packet 28 Mpps
*** xdp2opt ***
Packet 1 (repeated 10000000): avg 37 ns/p 27 Mpps
Packet 2 (repeated 10000000): avg 25 ns/p 40 Mpps
Packet 3 (repeated 10000000): avg 24 ns/p 41 Mpps
Packet 4 (repeated 10000000): avg 23 ns/p 43 Mpps
Packet 5 (repeated 10000000): avg 23 ns/p 43 Mpps
Packet 6 (repeated 10000000): avg 24 ns/p 41 Mpps
Packet 7 (repeated 10000000): avg 23 ns/p 43 Mpps
Packet 8 (repeated 10000000): avg 23 ns/p 43 Mpps
Packet 9 (repeated 10000000): avg 24 ns/p 41 Mpps
Packet 10 (repeated 10000000): avg 23 ns/p 43 Mpps
Packet 11 (repeated 10000000): avg 24 ns/p 41 Mpps
Total avg 25 ns/packet 40 Mpps
*** xdp2_notcpopts ***
Packet 1 (repeated 10000000): avg 38 ns/p 26 Mpps
Packet 2 (repeated 10000000): avg 32 ns/p 31 Mpps
Packet 3 (repeated 10000000): avg 33 ns/p 30 Mpps
Packet 4 (repeated 10000000): avg 32 ns/p 31 Mpps
Packet 5 (repeated 10000000): avg 32 ns/p 31 Mpps
Packet 6 (repeated 10000000): avg 32 ns/p 31 Mpps
Packet 7 (repeated 10000000): avg 32 ns/p 31 Mpps
Packet 8 (repeated 10000000): avg 32 ns/p 31 Mpps
Packet 9 (repeated 10000000): avg 32 ns/p 31 Mpps
Packet 10 (repeated 10000000): avg 33 ns/p 30 Mpps
Packet 11 (repeated 10000000): avg 32 ns/p 31 Mpps
Total avg 33 ns/packet 30 Mpps
*** xdp2fast_notcpopts ***
Packet 1 (repeated 10000000): avg 37 ns/p 27 Mpps
Packet 2 (repeated 10000000): avg 31 ns/p 32 Mpps
Packet 3 (repeated 10000000): avg 31 ns/p 32 Mpps
Packet 4 (repeated 10000000): avg 31 ns/p 32 Mpps
Packet 5 (repeated 10000000): avg 31 ns/p 32 Mpps
Packet 6 (repeated 10000000): avg 31 ns/p 32 Mpps
Packet 7 (repeated 10000000): avg 31 ns/p 32 Mpps
Packet 8 (repeated 10000000): avg 31 ns/p 32 Mpps
Packet 9 (repeated 10000000): avg 31 ns/p 32 Mpps
Packet 10 (repeated 10000000): avg 31 ns/p 32 Mpps
Packet 11 (repeated 10000000): avg 31 ns/p 32 Mpps
Total avg 32 ns/packet 31 Mpps
*** xdp2opt_notcpopts ***
Packet 1 (repeated 10000000): avg 20 ns/p 50 Mpps
Packet 2 (repeated 10000000): avg 20 ns/p 50 Mpps
Packet 3 (repeated 10000000): avg 20 ns/p 50 Mpps
Packet 4 (repeated 10000000): avg 20 ns/p 50 Mpps
Packet 5 (repeated 10000000): avg 20 ns/p 50 Mpps
Packet 6 (repeated 10000000): avg 21 ns/p 47 Mpps
Packet 7 (repeated 10000000): avg 20 ns/p 50 Mpps
Packet 8 (repeated 10000000): avg 20 ns/p 50 Mpps
Packet 9 (repeated 10000000): avg 21 ns/p 47 Mpps
Packet 10 (repeated 10000000): avg 21 ns/p 47 Mpps
Packet 11 (repeated 10000000): avg 21 ns/p 47 Mpps
Total avg 20 ns/packet 50 Mpps
*** parselite ***
Packet 1 (repeated 10000000): avg 20 ns/p 50 Mpps
Packet 2 (repeated 10000000): avg 16 ns/p 62 Mpps
Packet 3 (repeated 10000000): avg 16 ns/p 62 Mpps
Packet 4 (repeated 10000000): avg 16 ns/p 62 Mpps
Packet 5 (repeated 10000000): avg 16 ns/p 62 Mpps
Packet 6 (repeated 10000000): avg 16 ns/p 62 Mpps
Packet 7 (repeated 10000000): avg 16 ns/p 62 Mpps
Packet 8 (repeated 10000000): avg 16 ns/p 62 Mpps
Packet 9 (repeated 10000000): avg 16 ns/p 62 Mpps
Packet 10 (repeated 10000000): avg 16 ns/p 62 Mpps
Packet 11 (repeated 10000000): avg 16 ns/p 62 Mpps
Total avg 16 ns/packet 62 Mpps