OnixS C++ Cboe CFE Multicast PITCH Market Data Handler  1.12.1
API documentation
Hardware-timestamping

By default, a feed engine assigns the timestamp to the incoming multicast packet] as soon as it is received. The application code can use this timestamp to measure the latency of market data processing by the handler.

The handler also supports timestamps assigned by the network adapter (so-called hardware timestamps). Hardware timestamps allow measuring the time the network packet spent in the kernel/adapter before the Handle received and processed it.

Note
The support of hardware timestamps is limited to Linux only.

Enabling hardware timestamps

Hardware timestamps are enabled by assigning an OnixS::CboeCFE::MarketData::Pitch::NicWatch instance.

For example:

1 SocketFeedEngine fe(10, 8 * 1024 * 1024, NicWatch::service());

Enabling hardware timestamps on a network adaptor

The hardware timestamps must also be enabled for the network interface. Otherwise, a feed engine will raise a warning or report an error, depending on the implementation.

Enabling hardware timestamps on a NIC affects all applications and requires additional (root) privileges.

Also, a network adapter may require clock synchronization manipulations before using the hardware timestamping feature.

Before running, it's necessary to enable hardware timestamps for a network interface and to synchronise both adapter and system clocks.

The best way to complete both preparation steps is to run the Solarflare PTP daemon. Please follow the Solarflare documentation on configuring and running the daemon.

Note
The Solarflare PTP daemon requires some time to synchronise an adapter and system clock. Therefore, please, wait until the daemon reports clocks are synced before benchmarking market data processing.

OnixS::CboeCFE::MarketData::Pitch::SocketFeedEngine can also be used in combination with the Solarflare OpenOnload tools. The EF_RX_TIMESTAMPING environment variable must be set to 1 before benchmarking under the Solarflare OpenOnload. This environment variable activates hardware timestamping for the Solarflare OpenOnload tools.