(Tom Herbert, SiPanda CTO, Thursday May 20, 2021)
SiPanda has released Version 1.2 of Programming And Network Datapath Acceleration (PANDA) to GitHub. The key feature of PANDA v1.2 is the PANDA Parser in eXpress Data Path (XDP) and extended Berkeley Packet Filter (eBPF).PANDA in XDP combines the flexibility, ease-of-use, and ubiquity of PANDA with the programmable low level datapath capabilities of XDP to produce the most flexible and generalized parser for XDP/eBPF.
PANDA in XDP allows developers to write protocol parsers for the networking datapath that can be seamlessly integrated in XDP programs. XDP was developed in 2016 to provide a means to develop high-performance network packet processing code that runs on the server CPU while minimizing CPU overhead (I am a co-inventor of XDP). XDP executes dynamically loaded packet processing code securely in the kernel, while achieving near-bare metal performance (think upwards of 25 Mpps). PANDA is an open source and very flexible software model for programming high performance protocol parsers and network datapaths. PANDA in XDP combines the flexibility of PANDA with the programmable low level datapath capabilities of XDP to produce the most flexible and generalized parser for XDP/eBPF.
PANDA supports development and deployment of XDP/ in a variety of ways:
Extensibility and ease-of-use: The PANDA Parser framework makes it easy to support new protocols in an XDP program. Similar to eBPF code that is commonly written in restricted C, PANDA is programmed in C/C++.
Robust and simple code: The PANDA parser allows defining a parser in a declarative representation that abstracts out much of the bookkeeping needed for protocol parsing (for instance, checking that each protocol header fits in the packet). The panda-compiler for PANDA in XDP emits codes that automatically handles specific bookkeeping required in the XDP environment. Hence, the user developed parser code written in PANDA is generally simpler and more robust than equivalent “hand-written” code for XDP/eBPF.
Ubiquity: A PANDA parser is generic code that can be compiled to different software and target environments. The flow_tracker_combo sample application demonstrates using the same parser in XDP as well as a userspace program.
Hiding Details of eBPF: Anyone who has written a eBPF program for the Linux kernel knows that one of the biggest challenges is to get the code to “pass the verifier''. The verifier imposes restrictions on code size and complexity to ensure robustness of code loaded in the kernel. The panda-compiler for XDP in PANDA PANDA helps to automate and streamline this process in a number of ways. For example, PANDA provides an XDP template that hides tail calls, simplifying passing the Linux verifier.
For more information on PANDA in XDP, including instructions to run and sample code to take for a test drive, see PANDA-in-XDP.
SiPanda was created to rethink the network datapath and bring both flexibility and wire-speed performance at scale to networking infrastructure. The SiPanda architecture enables data center infrastructure operators and application architects to build solutions for cloud service providers to edge compute (5G) that don’t require the compromises inherent in today’s network solutions. For more information, please visit www.sipanda.io. If you want to find out more about PANDA, you can email us at firstname.lastname@example.org.