xilinxopenonload

difference between Xilinx solarflare scaleout onlod, solarflare onload, and solarflare TCPDirect?


enter image description here

According to this picture,

there are five different types of solarflare TCP methods.

First and the last types are not really important because i am aware of them

but i do not know the difference between three types in the middle.

solarflare scaleout onload vs solarflare onload vs solarflare TCPDirect

How are they different each others?


Solution

  • Onload allows kernel bypass for traffic but there are broadly three ways this can be implemented in an application.

    The Onload intercept library allows applications written using the standard sockets API to be accelerated and achieve kernel bypass. This can apply for UDP and TCP sockets but it depends on the capabilities of the adapter as to how much latency benefit this offers.

    A "base" adapter will enable the "Scaleout Onload" features where TCP connections will be accelerated but cut-through and the lowest latency features will not be enabled. A "-Onload" or "-Plus" adapter will enable the full suite of Onload acceleration and latency-reducing features, e.g. cut-through, and UDP kernel bypass.

    They both use the same software with the same hardware, it's down to feature enablement on the adapter(s). The additional latency reduction will therefore give a lower latency figure.

    The other two ways use custom APIs, meaning the application must be written to make use of them specifically. The lowest level is ef_vi, which operates at the lowest level where an application creates ethernet frames directly to be sent out onto the wire. There is no management of any protocols, which must be done within the application, or things like bonding.

    TCPDirect is a custom network stack Solarflare created that provides a reduced set of features compared to Onload but gives lower latency as a result. It supports some of the things missing from ef_vi, such as bonding and TCP management, but doesn't support all of the options that may be desired on sockets. Like ef_vi is uses a custom API rather than standard sockets.

    The TCPDirect User Guide explains what it can and cannot do: https://docs.xilinx.com/v/u/en-US/SF-116303-CD-TCPDirect_User_Guide