RDS Improvements

Reliable Datagram Sockets (RDS) is a high-performance transport protocol that offers low overhead and low latency to deliver datagrams over a variety of transports, such as InfiniBand, loopback or TCP sockets. The following notable changes and features are included in this update:

  • RDS IPv6 support

    Support for the use of IPv6 addresses has been added to the kernel RDS and related modules. Existing RDS applications using IPv4 addresses are able to continue to run normally, but applications that require IPv6 addresses can do so by passing the address in struct sockaddr_in6 to bind(), connect() or sendmsg().

    Additional updates have been made to user space packages, such as rds-tools and libibacl to ensure that support is enabled in tools that can make use of this feature.

  • Improvements to RDS large fragment size implementation

    A patch was applied to improve the RDS large fragment size implementation by taking advantage of multiple scatter-gather entries and to match the allocation of the scatter-gather entries to the PAGE_SIZE. This improves the performance and resolves issues in congestion handling.

  • Fix for NULL pointer dereference when using RDS with a debug kernel

    A debug statement in the RDS code could cause a NULL pointer dereference resulting in a stack trace when running RDS on a debug version of the kernel. The fix moves the debug statement to avoid the NULL pointer dereference.