image image image image image

On This Page

Software Development Kit (SDK) is a set of development tools that allows the creation of InfiniBand applications for MLNX_VPI software package.

The SDK package contains header files, libraries, and code examples.

To compile the examples provided with the SDK, you must install Windows Driver Kit (WDK) version 8.1 and higher over Visual Studio 2015.

To open the SDK package, you must run the sdk.exe file and get the complete list of files. SDK package can be found under <installation_directory>\IB\SDK.

IBAL API is no longer supported. The user should program the application over the ND API instead.

Network Direct Interface

The Network Direct Interface (NDI) architecture provides application developers with a networking interface that enables zero-copy data transfers between applications, kernel-bypass I/O generation and completion processing, and one-sided data transfer operations.

NDI is supported by Microsoft and is the recommended method to write RDMA application. NDI exposes the advanced capabilities of the Mellanox networking devices and allows applications to leverage advances of RDMA.

Both RoCE and InfiniBand (IB) can implement NDI.

For further information, please refer to:

For code examples using NDI, you may refer to:

Win-Linux nd_rping Test

The purpose of this test is to check interoperability between Linux and Windows via an RDMA ping. The Windows nd_rping was ported from Linux's RDMACM example: rping.c

  • Windows
    • If you wish to use a built-in nd_rping.exe, you may find it in: Program Files\Mellanox\MLNX_VPI\IB\Tools
    • If you wish to build the nd_rping.exe from scratch, you can build it using the SDK example: choose the machine's OS in the configuration manager of the solution, and build the nd_rping.exe.
  • Linux
    • Installing the MLNX_OFED on a Linux server will also provide the "rping.exe" application.

Test Running

In order to run the test, follow the steps below:

  1. Connect two servers to Mellanox adapters.
  2. Verify ping between the two servers.
  3. Configure the ROCE version to be:
    1. RoCE V1 (over IP):
      1. Linux side - V1
      2. Win side - V1.25
    2. RoCE V2:
      1. Linux side - V2
      2. Win side - V2
      3. Verify that ROCE udp_port is the same on the two servers. For the registry key, refer to the RoCE Options table.
  4. Select the server side and the client side, and run accordingly:
    1. Server:

      nd_rping/rping -s [-v -V -d] [-S size] [-C count] [-a addr] [-p port]
    2. Client:

      nd_rping/rping -c [-v -V -d] [-S size] [-C count] -a addr [-p port]

Executable Options:

-sServer side
-PPersistent server mode allowing multiple connections
-cClient side


Debug Extensions:


Displays ping data to stdout every test cycle

-VValidates ping data every test cycle
-dShows debug prints to stdout
-SIndicates ping data size - must be < (64*1024)
-CIndicates the number of ping cycles to perform


Linux server:

rping -v -s -a <IP address> -C 10

Windows client:

nd_rping -v -c -a <same IP as above> -C 10