Mechanisms
The APIs are not interchangeable.
Onload / VMA
Accelerates ordinary sockets below the application. It can sit beneath native and managed runtimes without rewriting the FIX session API.
TCPDirect / SocketXtreme
Uses a vendor SDK and a dedicated LibHFT transport implementation. Build-time integration and session role matter.
ef_vi / ibverbs
Receives Ethernet frames directly. This is a packet-ingest API, not a TCP FIX session.
Ordinary TCP
The reference path every accelerated result must be compared with under the same workload and flavor.
Surface coverage
Where each mechanism can run.
| Mechanism | C++ | Java Pure | Java/JNI | .NET Pure | .NET Native |
|---|---|---|---|---|---|
| Solarflare Onload | Yes | Yes | Yes | Yes | Yes |
| Mellanox VMA preload | Yes | Loads; verify acceleration | Yes | Yes | Yes |
| Solarflare TCPDirect | Yes | — | Initiator + acceptor | — | Initiator + acceptor |
| Mellanox SocketXtreme | Yes | — | Initiator + acceptor | — | Initiator + acceptor |
| ef_vi / ibverbs raw RX | Yes | — | Vendor-neutral facade | — | Vendor-neutral facade |
Rust Pure uses its own transport track and is not included in the established vendor-SDK matrix above. Preload interposition may be technically possible beneath ordinary sockets, but it is not published here without the same classified and measured evidence.
Measured transport-floor campaign · HP Z6 G4, 23 August 2026
Back-to-back cards, isolated cores.
On the dual-card HP Z6 G4 rig (Intel Xeon Gold 6154, before the host’s September CPU upgrade), the canonical 500,000-sample raw transport comparison of 23 August 2026 pinned both receiver paths to isolated cores. This campaign measures the transport path rather than the sustained FIX workload shown on the performance page.
| Path | p50 | p99 | Tail ratio |
|---|---|---|---|
| Solarflare TCPDirect | 2.858 µs | 2.908 µs | 1.02 |
| Mellanox SocketXtreme | 3.145 µs | 3.964 µs | 1.27 |
SocketXtreme recorded 500,000 zero-copy borrows with zero gather copies. The remaining tail difference is documented as a property of the measured completion paths after warm-up and affinity corrections—not as a universal vendor ranking.
Verification
Refuse a label the process cannot prove.
LibHFT treats preload mechanisms as runtime-gated and vendor stacks as build-gated. A requested preload mode must be visible in the process; a dedicated stack token must not silently fall back to kernel TCP when its SDK was not compiled in.
In the 25 August 2026 full bypass matrix on the same HP Z6 G4 rig (Xeon Gold 6154), VMA initialized beneath one pure-Java NIO test but delivered only 1.03× its own kernel baseline. Onload accelerated the same pure-Java path, while Java/JNI accelerated under VMA. A mapped library proves initialization—not offload or improvement.
Deployment checklist
Measure the actual card and runtime.
- Record NIC model, firmware, driver and vendor-stack versions.
- Verify interface, route, offload counters and the selected initiator/acceptor path.
- Pin owner and receiver loops deliberately; document housekeeping and isolated cores.
- Compare with the same flavor’s own kernel baseline.
- Keep raw-Ethernet, transport-floor and FIX-session measurements separate.