Q: Why introduce another Open Source API rather than reuse an existing framework such as DPDK or ODP?
A: Great question! We have no intention to reinvent the wheel and would happily reuse an existing Open Source frame work, if it made sense. However, the following considerations stopped us:
- The Mellanox NPU SDK, of which OpenNPU is derived, pre-dated DPDK by a couple of years. Customers and partners have invested thousands of man years developing software on top of these APIs and we wanted to allow them to easily the results as a fully Open Source solution, should they choose to do so.
- As wonderful as existing frameworks such as DPDK and ODP are, an NPU usage model differs from the multi-core or general server with NICs which these frameworks target. As a result OpenNPU deals with things that frameworks such as DPDK and ODP do not currently cover, for example support for running a single instance of control plane application controlling multiple separate network processors each running a separate copy of the data plane program, with a mix of shared and unique data. We are working with these framework communities to extend them much as possible and as appropriate, but it is not always possible or even desirable to bring features from the NPU world into these frameworks.
Q: How much of the Mellanox NPS SDK is supported in OpenNPU? Are there any missing features?
A: The bulk of the functionality is supported and the code base is exactly the same one that is found in the commercially licensable NPS SDK offering with a few noted exceptions of the following types:
- The Mellanox branded Eclipse® based IDE that ships with the commercially licensed SDK is not provided as one can just as easily use any of the existing Open Source IDE.
- Ancillary tools and drivers that are based in whole or in part on third-party software which we are not in liberty to license, such the Indigo (NPS) software simulator and drivers to manage third-party vendor external TCAM. (The driver of the Indigo internal TCAM is included.)
- Certain algorithmic libraries which are mainly useful in creation of a large scale system spanning multiple NPUs, such as UltraIP, Algorithmic TCAM and which the same functionality can be easily attained in other means (for example, by use of the internal Indigo NPS-400 TCAM). Based on the acceptance and adoption of the OpenNPU release we will revisit the possibility to release these as well in the future.
Q: Is this a one off release or do you intend to keep it updated?
A: We intend to issue three releases of OpenNPU a year in conjunction with the commercially licensed Mellanox Indigo (NPS) SDK.