Skip to content

cxyzhao/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

Licenses

See LICENSE file

Information

See README file

Contribution

Contribution guidelines for this project

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 77.4%
  • C 15.8%
  • Shell 3.8%
  • Python 1.3%
  • M4 0.9%
  • Makefile 0.3%
  • Other 0.5%