ONLP APIs for Applications

Overview

The ONLP API provides system applications with a consistent functional abstraction for accessing platform objects. The ONLP abstraction layer allows a dataplane, system, or NMS application to be written for any supported Open Networking platform.

A dataplane application typically needs to ask the following platform-dependent questions:

An NMS agent typically needs to ask the following platform-dependent questions:

Accessing any of this information depends intimately on the design of the hardware platform. A number of custom FPGAs, CPLDs, and I2C busses are typically used and there is no agreed upon standard for arranging functionality or components in any particular way. If you don’t know the board design and you don’t have the documentation and you don’t know which CPLD register bit or GPIO indicates an SFP has been inserted into a particular port then you can’t answer any of the above questions.

Dataplane and System Applications want to deal with all of these objects at a functional level, not a board layout and design level.

The goal of the ONLP Application API is to hide this mess behind a standard abstraction layer based on the information that is of functional and operational interest, independent from the implementation on any given platform. Applications using the ONLP APIs can run on all supported platforms.

Whats wrong with IPMI?

Nothing really. But most open networking platforms do not have a BMC (and none at all when we started the ONLP project) but still require all of this functionality. Systems which do have a BMC can simply implement their ONLP interfaces using IPMI. IPMI deals with the Fans, PSUs, and Thermals, and running the thermal plan for the system to make sure it doesn’t light on fire. But it has no models for SFF pluggables and their control structures. Likewise there are other proposals for communicating to system software through interfaces like ACPI but these are not standardized either.

ONLP is the standard for all platforms supported by Open Network Linux and Open Network Linux support is required for all platforms accepted by the Open Compute Project.


Next: ONLP API Concepts