The Onload distribution includes example client/server applications to demonstrate the wire order feature:
wire_order_server - uses onload_ordered_epoll_wait to receive ordered data over a set of sockets. Received data is echoed back to the client on a single reply socket.
wire_order_client - Sends sequenced data across the socket set, reads the reply data from the server and ensures data is received in sequence.
Building the example
Source code for the wire order API is available in:
Although not compiled as part of the Onload install process, to build the example API do the following:
Ensure mmaketool is in the current path (can be found in the onload-<version>/scripts directory):
# export PATH=$PATH:/onload-<version>/scripts
# cd /onload-<version>/build/gnu_x86_64/tests/onload/wire_order
# USEONLOADEXT=1 make
Running the example server
# EF_RX_TIMESTAMPING=3 onload ./wire_order_server
Running the example client
# onload --profile=latency ./wire_order_client <ip server>
By default the client will send data over 100 TCP sockets controlled with the -s option. UDP can be selected using the -U option.