Skip to main content

Overview

Open Programmable Infrastructure (OPI) is an open-source project from the Linux Foundation that aims to provide a standard interface for DPUs/IPUs. As a member of the OPI project, MangoBoost provides a gRPC bridge that enables users to interact with the MangoBoost SDK via the OPI gRPC interface. It currently supports the OPI APIs for storage; future versions of the bridge will include support for additional OPI APIs, such as networking and security.

Officially, using mango-cli is the recommended way to configure features on MangoBoost devices, as it provides a user-friendly interface without the need for manual setup of required components. However, the OPI API can also be used to configure the same capabilities, which is useful for automation and integration with other systems. Utilizing OPI enables DPU/IPU devices from different vendors to be configured in a standardized way.

OPI MangoBoost Storage Bridge

opi-mangoboost-bridge is a gRPC server running on the DPU (or host) that translates standard OPI commands into calls to the MangoBoost SDK and hardware. This allows the DPU to be configured as an NVMe-oF endpoint (initiator or target) via OPI. The bridge enables users to implement StorageBoost NTI and NTT products in a standardized way using OPI APIs. The OPI bridge exposes OPI gRPC APIs. When a management entity (e.g., grpc_cli or godpu) issues an OPI command, the OPI bridge translates it into the corresponding MangoBoost SPDK RPC calls. The OPI bridge also provides a way to query the DPU’s current state, including the status of NVMe-oF subsystems, controllers, namespaces, and paths.

info

In the diagram below, the blue lines represent the actual data path with NVMe-oF. The yellow lines represent the control path when using mango-cli to configure NTI/NTT, while the green lines represent the control path when using the OPI gRPC bridge to configure NTI/NTT.

OPI-ARCH

The left part of the diagram shows how NTI is configured. When configuring NTI on a DPU from the host via mango-cli, it issues commands through the management PF, which are recognized by the NTI Agent on the SoC. This agent then sends gRPC calls to SPDK, which configures NTI on the DPU. When using the OPI bridge, the OPI gRPC server running on the DPU receives the OPI commands from an OOB channel and translates them into SPDK RPC calls, which then configure NTI on the DPU. As you can see, the control paths using mango-cli (yellow lines) and the OPI gRPC bridge (green lines) are different, but both eventually send the same gRPC calls to SPDK to configure NTI on the DPU.

The right part of the diagram shows how NTT is configured. When configuring NTT on a DPU directly on the SoC using mango-cli, it directly sends gRPC calls to SPDK to configure NTT on the DPU. When using the OPI bridge, the OPI gRPC server running on the DPU receives the OPI commands from an OOB channel and translates them into SPDK RPC calls, which then configure NTT on the DPU. Again, you can see how the control paths using mango-cli (yellow lines) and the OPI gRPC bridge (green lines) are different, but both eventually send the same gRPC calls to SPDK to configure NTT on the DPU.

Supported Product

  • Mango StorageBoost™ - NTI
  • Mango StorageBoost™ - NTT