Skip to content

Mellanox/libxlio

Repository files navigation

XLIO - Accelerated IO SW library

The NVIDIA® Accelerated IO (XLIO) SW library boosts the performance of TCP/IP applications based on NGINX (CDN, DoH Etc.) and storage solutions as part of the SPDK. XLIO is a user-space software library that exposes standard socket APIs with kernel-bypass architecture, enabling a hardware-based direct copy between an application’s user-space memory and the network interface.

Coupling XLIO with NVIDIA ConnectX®-6 Dx, NVIDIA ConnectX®-7 or NVIDIA BlueField®-2 data processing unit (DPU) acceleration capabilities provides breakthrough performance of Transport Layer Security (TLS) encryption/decryption. It also enables working with features such as HW LRO/TSO and Striding-RQ which increase TCP performance, without application code changes and using a standard socket API.

Please visit our documentation site for more details.



Getting Started

Prerequisits

Driver Stack

XLIO can work on top of both MLNX_OFED driver stack that supports Ethernet and on a lighter driver stack, MLNX_EN that supports only Ethernet.

MLNX_OFED MLNX_EN

DPCP

DPCP (Direct Packet Control Plane) is mandatory to enable advanced HW features for supported NVIDIA HW. Repository: libdpcp

$ ./autogen.sh
$ ./configure --prefix=/where/to/install
$ make -j
$ make install

Building XLIO

Run the following commands from within the directory at the top of the tree:

$ ./autogen.sh
$ ./configure --prefix=/where/to/install --with-dpcp=/where/dpcp/installed --enable-utls
$ make -j
$ make install

--enable-utls : Enables uTLS HW offload for supported NVIDIA HW.

Building XLIO using preinstalled dpcp

$ ./autogen.sh
$ ./configure --prefix=/where/to/install --with-dpcp --enable-utls
$ make -j
$ make install

Building XLIO without dpcp

$ ./autogen.sh
$ ./configure --prefix=/where/to/install
$ make -j
$ make install

Advanced HW features are not enabled for this build type.

Usage Examples

Sockperf

LD_PRELOAD=libxlio.so sockperf <params>

Reposiroty: Sockperf

nginx

LD_PRELOAD=libxlio.so XLIO_NGINX_WORKERS_NUM=<N> nginx <nginx_params>

N - Number of Nginx workers.

Architecture

Supported Transports

  • IPv4/6
  • TCP
  • UDP

Supported CPU Architectures

Supported NICs

  • NVIDIA ConnectX®-6
  • NVIDIA ConnectX®-7
  • NVIDIA BlueField®-2
  • NVIDIA BlueField®-3

Licenses

See LICENSE file

Information

See README file

Contribution

Contribution guidelines for this project

Configuration

Configuration options description