P4 Programmability for the Netronome Agilio SmartNIC

By Netronome | Mar 08, 2016

In the past few years P4 enabled network switches have gained popularity and many of the network switch and device vendors are already working on providing P4 programmability. One of the main driving factors for this is emergence of SDN with separation of control and data plane. P4 is a target-independent network programming language where users can write the forwarding behavior of the network devices (ASIC/NPUs/FPGAs) using the standard forwarding model defined in the P4 architecture specification. P4 language specifications are standardized by the P4 Language Consortium ( Netronome is an active participant in the consortium and one the first companies to demonstrate P4 programmability on a network adapter.

The P4 language permits data plane programming of the network element by writing the packet processing behavior without the knowledge of underlying hardware. Programs written in P4 can define the header extraction and ingress/egress processing of the incoming packets in terms of match action tables. The Agilio SmartNIC easily adapts to the P4 packet processing architecture, proven through Netronome’s Agilio software which is a match-action based implementation.

Netronome’s software development kit (SDK) supports P4 syntax as defined by the P4 specifications published on Additionally, Netronome has integrated the open source P4 compiler into the Agilio SDK to generate an intermediate representation (AIR) of the P4 program in the YAML format, which is further compiled by the Netronome back end compiler to generate C program for the data path on the Agilio SmartNIC.

A P4 programmer can implement following packet processing actions based on the incoming packet header match:

  • Drop packets
  • Pass it to the host via PCIe interface (PCIe port using a virtual function)
  • Build a custom tunnel using P4
  • Write a P4 data path with C sandbox for stateful functionality

Process flow

Netronome’s IDE provides all the necessary tools such as editor, compiler and linker, all available in a single GUI, where a programmer can write and build a firmware to be loaded on the Agilio SmartNIC. The IDE interfaces with the Agilio SmartNIC through a TCP connection and provides visibility of the P4 program executing on the adapter. Users can also set breakpoints in the P4 editor and monitor the packet statistics as the packet makes its way through the P4 program running on the Agilio SmartNIC.

Netronome has a live demo of the P4 programs running on Agilio SmartNIC in Netronome’s POC lab in Santa Clara, CA and at upcoming events such as the 2016 Open Networking Summit. For more information, please read more about our datapath programming tools.