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
- Architecture
- Supported Transports
- Supported CPU Architectures
- Supported NICs
- Licenses
- Information
- Contribution
- Configuration
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.
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
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.
$ ./autogen.sh
$ ./configure --prefix=/where/to/install --with-dpcp --enable-utls
$ make -j
$ make install
LD_PRELOAD=libxlio.so sockperf <params>
Reposiroty: Sockperf
LD_PRELOAD=libxlio.so XLIO_NGINX_WORKERS_NUM=<N> nginx <nginx_params>
N - Number of Nginx workers.
- IPv4/6
- TCP
- UDP
- NVIDIA ConnectX®-6
- NVIDIA ConnectX®-7
- NVIDIA BlueField®-2
- NVIDIA BlueField®-3
See LICENSE file
See README file
Contribution guidelines for this project
Configuration options description