Back To Schedule
Tuesday, September 22 • 1:40pm - 2:10pm
DPDK for ultra low latency applications - Muhammad Ahmad & Ali Rizvi, eMumba Inc.

Sign up or log in to save this to your schedule, view media, leave feedback and see who's attending!

Feedback form is now closed.
DPDK is the go-to off the shelf, stable and reliable solution for data planes and switching applications globally. It is widely used to accelerate packet processing in various verticals, focusing more on throughput while providing decent latency.

In this presentation, we look at how to use DPDK to provide a network stack solution for ultra-low latency (ULL) applications in the world of algorithmic trading. We examine out of the box latency performance from DPDK. Next, we show how, through systematic tuning and benchmarking, we were able to reduce round trip time (RTT) latency. This involved configuring DPDK in scalar mode, pre-allocating mbuffs by enabling RX bulk allocation and using optimized versions of functions by enabling intrinsics. We used an open source FreeBSD network stack on top of DPDK and modified it in a way that favors low latency (burst_size=1, timeout=0). For low latency use cases, it is necessary that there are no context switches and data shared between the cores, so we used rte_flow to direct packets to specific cores. These optimizations enabled us to process the packets at wire speed and reduce latency by fivefold over the pre-tuning results. For benchmarking at these aggressively low latency levels we built a testbed with commodity hardware providing 7 nanosecond timestamp granularity. We replicated the STAC-T1 test which is a widely accepted latency benchmark in the electronic trading industry.

We also compare the results we achieved with DPDK against those we achieved with OpenOnload TCPDirect, the kernel bypass solution from Solarflare. We conclude with some thoughts on upstream contributions for enabling ULL use cases.


Muhammad Ahmad

Sr. Design Engineer, eMumba Inc

Ali Rizvi

eMumba Inc

Tuesday September 22, 2020 1:40pm - 2:10pm UTC