Datapath Programming Tools

The Programmer Studio with the Agilio® P4C Software Development Kit (SDK) 6.0 enables direct programming of the networking datapath. The Agilio P4C SDK 6.0 supports vendor-independent P4 programming as well as programming in C on Netronome’s Agilio SmartNICs, ensuring rapid development cycles and overall investment protection. The Integrated Development Environment (IDE) helps reduce the number of lines of code required to implement typical SDN functions by up to 10X, improving developer productivity while dramatically improving problem isolation and time-to-market.

Netronome supports open programming with the Agilio P4C SDK 6.0. To learn more about our open source efforts and the SDK, please visit

Agilio P4C SDK

Netronome® Agilio SmartNICs are based on Netronome’s purpose-built network flow processors. Based on a RISC architecture, these devices are completely programmable and can be customized for server-based networking applications such as network virtualization, security, load balancing, quality of service and telemetry.


Netronome’s SmartNICs support the following four datapath programming models:

Agilio Software-Based CLI/Host API Model
In this high-level programming model where the user need not learn device-level details, the SmartNIC is supplied with the production quality Agilio Software in binary form. The features supported include PCIe and network I/O configuration, and standard datapath features (via Open vSwitch offload, tunneling, match-action, etc.) usable via supported API calls.

C-Based Programming Model
The C programming model supported on Agilio SmartNICs can be used from the ground-up and provides complete datapath programmability. An example is the development of a complete packet classification and processing pipeline for server-based networking.

The P4 Programming Model
The P4 Programming Model is ideal for users who want to program the Agilio SmartNIC hardware without knowing the architectural details of the NFP. A P4-derived custom data plane – including packet match/action manipulation and custom packet headers and tunnel types – can be implemented. This model is extended with a C-based sandbox integration into the P4 datapath, which allows for the implementation of the stateful and architecture-aware performance-oriented functions beyond what is supported in P4.

Agilio Software with C Sandbox
This model provides a performance-oriented solution for the NFP datapath where an Agilio SmartNIC software binary meets most of the user requirements while the remainder of the customization is provided by custom C code in the “sandbox,” which is a set of processing resources on the SmartNIC that are dedicated to custom development.


The Agilio SmartNICs are programmable using P4, C or Microcode languages. Configurable and programmable processing elements are distributed across the chip on a high-speed Command Push Pull (CPP) bus connecting the islands for data transfer. The number of islands on an NFP depends on the SKU of the NFP chip.

Configurable Elements:
MAC and network IO interface for ingress and egress processing PCIe Gen3 x8, ARM, crypto and Interlaken

Programmable Elements:
FPCs (Flow Processing Cores) with hierarchical memory


The Agilio P4C SDK 6.0 supports a full IDE that runs on the Microsoft Windows platform.

It includes a C compiler, a sophisticated profiler, an assembler, cycle-accurate simulation and extensive profiling capability for rapid debug and prototyping. Applications written for prior generations of NFP devices are also supported with code conversion. The SDK also includes command line tools for the C compiler, assembler and simulator that run on Linux.

The Agilio P4C SDK 6.0 supports P4 language programming for Agilio SmartNICs and includes the following tools and packages:

  • P4 front-end compiler
  • P4 back-end compiler
  • P4 defined host datapaths with an Agilio SmartNIC
  • P4 defined host datapaths with a Linux VM image
  • P4 datapath with a C sandbox


Agilio CX hardware comes with several available Agilio software packages, which have numerous built-in features that do not require additional programming, including:
  • OVS offload
  • vRouter offload
  • Acceleration via Exact Match Flow Cache
  • Transparent offload via OVS fallback and datapath hooks
  • OVSDB (configuration)
  • OpenFlow protocol (datapath)
  • Optional local flow API
  • Stand-alone or controller modes
  • OVS statistics
  • Match/action offload
  • NVGRE tunnel encap/decap
  • VXLAN tunnel encap/decap
  • MPLS tunnel encap/decap
Agilio software comes with host-accessible APIs for all the features above.

Using APIs, host programmers can develop applications including:
  • DPDK-based VNFs (NFV-based applications)
  • Load balancing of network traffic to the VMs
  • Load balancing of the network traffic to the physical ports
  • Encapsulation and de-capsulation of the traffic from physical and virtual ports
  • Stateful filtering (firewall) applications
Custom Application Development
Using the SDK for FPC programming, users can also develop custom features on the Agilio CX in P4 and C programming languages. Netronome provides sample applications and libraries for this application development.

Examples include:
  • Custom tunnel development using P4
  • IP forwarding with stateful flow statistics
  • Custom header encap and decap with C sandbox
  • Software-based QoS (traffic manager) with a configurable number of queues and memories.
  • Custom load balancing code based on proprietary packet header fields
  • Stateful firewall applications.
  • Complete datapath functionality using C
    • Wire app
    • Packet filter
    • VLAN/VXLAN/NVGRE processing
    • QoS (traffic manager) functionality
    • Stateful filtering

Additional Resources

Training and Education
The Agilio P4C SDK 6.0 can be downloaded from Netronome Support by sending a request to

See for yourself with a hands-on demo.

Test Drive