Brussels / 2 & 3 February 2019


How a Connect-X device driver works

How we wrote a Connect-X 4/5 10G-100G driver for Snabb

I will explain how to write your own device driver for the Mellanox Connect-X device family, why you might want to do this, and what lessons we learned when we wrote the driver for Snabb.

I will put this into context with other hardware and related technologies like AF_XDP, Intel AVF, DPDK, etc.

Good news! Hackers nowadays feel empowered to write our own 10G-100G ethernet device drivers. Github contains many such drivers written in languages including C, C++, Lua, Rust, and Go. Community projects successfully use these simple bespoke drivers to keep in control of our applications' software architectures.

The problem is that today these drivers mostly target aging hardware: the beloved Intel 82599 (Niantic) 10G family. Niantic is on the way out of the market and, surprisingly perhaps, there is no obvious successor for independent developers.

In this talk I will present the Mellanox Connect-X family as a potential successor to Niantic as the darling of independent driver hackers. I will tell you how we independently wrote our device driver for the Snabb project and why this driver works for all 10G/25G/40G/50G/100G NICs in the ConnectX-4 and ConnectX-5 device families. I will go into technical detail about how the driver and the hardware works in case you want to write your own driver one day too.

Together we will contemplate the merits of such a custom device driver in the context of related technologies like AF_XDP, Intel AVF, DPDK, and hardware from other vendors.


Photo of Luke Gorrie Luke Gorrie