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: http://msdn.microsoft.com/en-us/library/cc904397(v=vs.85).aspx
For code examples using NDI, you may refer to: https://msdn.microsoft.com/library/cc853440(v=vs.85).aspx
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
- 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.
- Installing the MLNX_OFED on a Linux server will also provide the "rping.exe" application.
In order to run the test, follow the steps below:
- Connect two servers to Mellanox adapters.
- Verify ping between the two servers.
- Configure the ROCE version to be:
- RoCE V1 (over IP):
- Linux side - V1
- Win side - V1.25
- RoCE V2:
- Linux side - V2
- Win side - V2
- Verify that ROCE udp_port is the same on the two servers. For the registry key, refer to the RoCE Options table.
- RoCE V1 (over IP):
- Select the server side and the client side, and run accordingly:
nd_rping/rping -s [-v -V -d] [-S size] [-C count] [-a addr] [-p port]
nd_rping/rping -c [-v -V -d] [-S size] [-C count] -a addr [-p port]
|-P||Persistent server mode allowing multiple connections|
Displays ping data to stdout every test cycle
|-V||Validates ping data every test cycle|
|-d||Shows debug prints to stdout|
|-S||Indicates ping data size - must be < (64*1024)|
|-C||Indicates the number of ping cycles to perform|
rping -v -s -a <IP address> -C 10
nd_rping -v -c -a <same IP as above> -C 10