What is OpenNPU?
OpenNPU is an Open Source SDK (Software Developers Kit) for programming the Mellanox Indigo (NPS) product line of network processors, made available under the terms of either the GPL or BSD licenses to everyone and anyone that wishes to explore, research and innovate with true programmable packet processing at 600 million packets per seconds.
Why is Mellanox releasing OpenNPU?
Mellanox Technologies is a strong believer in open source software. The market for networking devices is undergoing an immense paradigm shift, from closed proprietary equipment supplied by OEM manufacturers, to open whitebox/brite-box systems that end users can customize and configure at will according to their needs. Mellanox recognizes this trend and has decided to open source the entire SW SDK of its Indigo family of network processors in order to facilitate innovation within the open-source SW community. The Indigo (NPS) network processors are high-performance packet-processing devices that are C-programmable under a LINUX programming environment. They are capable of performing Layer 2-7 packet processing and are well suited to fit into a router-type usage as well as more sophisticated functions like deep packet processing for IPS/IDS or application recognition, firewalling or DDOS functions.
What is included in OpenNPU?
A complete set of fully open source software, API and tools needed to program the Indigo NPS-400 network processor and the systems built on top of it, including:
- U-boot loader, Linux kernel, GNU toolchain, uClibc and Buildroot based development environment and runtime system
- The EZdp data plane and EZcp control plane libraries and drivers which are used to program the Indigo packet processing functions, for both data and control plane functions
For more information on included functionality please see the FAQ.
What kind of application can I build with OpenNPU?
We are really interested in hearing your innovative answer to this question; after all, this is why we are releasing OpenNPU to begin with. Here are some ideas for projects we are working on to get your creative juices started:
- High-performance Layer 2/3 data path SW for Linux kernel acceleration under SwitchDev interface
- Development of Layer 4-7 applications including load-balancer, DPI/application recognition, DDOS prevention, and firewall acceleration
- P4 compiler for Indigo
- eBPF (Extended Berkeley Packet Filter) HW acceleration
- OVS (Open Virtual Switch) acceleration
- Quality of Service (QOS) processing, SwitchDev TC support
- VNF acceleration under NVF architecture
- Bitcoin super node
- High scale TCP/IP multicast-like application for presence or messaging
- High scale B2B SIP proxy
Note that we have started working on several of the projects on the list ourselves and will share the results as they become available.
Who can contribute?
We invite anyone and everyone who is interested in programmable high-speed networks to contribute. This is especially true for folks with experience in high-speed, line-rate, data plane programming, either on network processors or other platforms, such as the Linux® kernel network stack, DPDK programs or similar. We look forward to seeing the designs that evolve with OpenNPU.