We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

How a Connect-X device driver works

Formal Metadata

Title
How a Connect-X device driver works
Subtitle
How we wrote a Connect-X 4/5 10G-100G driver for Snabb
Title of Series
Number of Parts
561
Author
License
CC Attribution 2.0 Belgium:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Identifiers
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
Abstract
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.