In a few of our past posts we’ve discussed open source & open standards, so we wanted to give you a bit of a preview into some of the open networking projects we’ve been working on. One of the projects is with The Open Networking Foundation (ONF), a non-profit, operator led consortium that’s transforming access and edge networks by collaboratively building next generation mobile and broadband infrastructures.
ONF spearheaded a project called Stratum – an open source, silicon-independent switch operating system for software defined networks (SDN). With Stratum, organizations can avoid data plane vendor lock-in and easily integrate with devices in operator networks. Historically, data planes have leveraged proprietary silicon interfaces and closed software APIs, making it virtually impossible to stray outside of that particular vendor’s product line. Stratum delivers a complete white box switch solution that can actually help realize the ‘software defined’ promise of SDN.
In our project, which we’ve termed the Open Programmable Service Edge (OpenPSE), we teamed up with Dell EMC, Intel, and Netcope to run Stratum on SmartNICs, so we can offload VNF/CNF user plane traffic to the SmartNIC.
Offloading VNF/CNF User Plane traffic can offer a handful of benefits, especially at the edge:
- Increase efficiency and throughput
- Save costs on space, power, and heat
Our goals for the OpenPSE were:
- To create an open standards-based way of offloading the user plane traffic for I/O intensive VNF/CNFs
- P4 Runtime for data plane programming
- gNMI for management and telemetry
- gNOI for operations
- To use P4 as the pipeline programming language
- Initially on an Intel FPGA SmartNIC to leverage its deep buffers and HQOS
- This can also be used across different hardware over time (i.e. both SmartNICs and Switches)
- To leverage existing open source projects
- ONF (Stratum, SEBA, OMEC, COMAC), OpenConfig (gNMI/gNOI, Yang data models)
- org (P4, P4 Runtime, PI integration)
Right off the bat, we decided that integrating SmartNICs into Stratum would be the best way to go. SmartNICs consist of a full featured network controller and a programmable element, which may be an FPGA or a few low-end CPU cores (ARM/Atom). Some SmartNICs are based on programmable core processors. SmartNICs make it easy to free up host x86 server cores by offloading functions and help isolate infrastructure elements (separate control, management, security, domain, etc.).
With Intel’s ® FPGA Programmable Acceleration Card N3000, the Netcope P4 SDK and Compiler, and our Broadband Network Gateway, we integrated with Stratum by compiling a BNG user plane into an FPGA bitstream. Our BNG Control Plane (BNG-c) was then used to program the user plane using the open and standardized Stratum northbound interfaces (i.e. P4 Runtime, gNMI, and gNOI).