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 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, please visit www.Open-NFP.org.
Netronome® Agilio® series of 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 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 the Agilio SmartNICs 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 SmartNIC 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 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 dedicated set of processing resources on the SmartNIC that are dedicated to custom development.
The Agilio SmartNICs 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.
MAC and network IO interface for ingress and egress processing PCIe Gen3 x8, ARM, crypto and Interlaken
FPCs (Flow Processing Cores) with hierarchical memory
The Agilio SmartNICs can be programmed using Netronome’s software development kit (SDK) toolchain. 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 toolchain supports the Linux command line interface.
• OVS offload
• vRouter offload
• Acceleration via Exact Match Flow Cache
• Transparent offload via OVS fallback & datapath hooks
• OVSDB (configuration)
• OpenFlow protocol (datapath)
• OVS CLI
• 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.
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 SmartNICs and includes the following tools and packages:
The Agilio P4C SDK 6.0 can be downloaded from Netronome Support by sending a request to firstname.lastname@example.org.