Datapath Programming Tools

The Programmer Studio with the Agilio™ P4C 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 intelligent server adapters (ISAs), 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, please visit

Agilio P4C SDK


Netronome® Agilio™ series of intelligent server adapters (ISAs) are based on Netronome’s purpose-built network flow processors, namely the NFP-4000 and NFP-6000 devices. Based on a RISC architecture, these devices which are optimized for networking and security processing 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 ISAs 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 ISA 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 the Agilio ISAs can be used ground-up and complete datapath programmability. An example is development of complete packet classification and processing pipeline for server-based networking.

The P4 Programming Model
This model is ideal for users who want to program the Agilio ISA hardware without knowing the architectural details of the NFP. A P4-derived custom dataplane 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 ISA 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 dedicated set of processing resources on the ISA that are dedicated to custom development.


The Agilio intelligent server adapters (ISAs) are based on the NFP-4000 and NFP-6000 devices that 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 a 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 ISAs can be programmed using Netronome’s software development kit (SDK) tool chain. The SDK can run on Windows and Linux platforms. The windows version of the tool chain comes as an integrated development environment (IDE) that provides full visibility of the NFP device features with a graphical user interface (GUI), and also includes a simulator and a hardware debugger. The Linux version of the tool chain supports the Linux command line interface.


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 & 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 of the features above.

Using APIs, host programmers can develop the applications including:
1. DPDK-based VNFs (NFV-based applications)
2. Load balancing of network traffic to the VMs
3. Load balancing of the network traffic to the physical ports
4. Encapsulation and de-capsulation of the traffic from physical and virtual ports
5. 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:

1. Custom tunnel development using P4
2. IP forwarding with stateful flow statistics
3. Custom header encap and decap with C sandbox
4. Software-based QoS (traffic manager) with a configurable number of queues and memories.
5. Custom load balancing code based on proprietary packet header fields
6. Stateful firewall applications.
7. Complete datapath functionality using C

o Wire app
o Packet filter
o VLAN/VXLAN/NVGRE processing
o QoS (traffic manager) functionality
o Stateful filtering


How to Get Netronome Programmer Studio with the Agilio P4C SDK 6.0

The Agilio P4C SDK 6.0 supports a fully Integrated Development Environment (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 runs on Linux.

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

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

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

Community and Education

Learn more about Netronome community and education activities here.