THE Technical Conference on Linux Networking

Netdev 0.1

News atom feed icon

2015-01-13: accepted proposal - Andy Gospodarek - Breaking Open Linux Switching Drivers

Linux has been the operating system of choice for hardware switches and routers for the last decade. Most users did not know this as direct access to the operating system and hardware were hidden behind a shiny UI. Community projects like (OpenWRT/DD-WRT/etc) provided users the first chance to use standard FOSS networking tools to configure and manage devices and products like Cumulus Linux and projects like Open Route Cache have taken this a step further to support enterprise and data-center grade top of rack switches using open-source tools and infrastructure -- though today they still rely on out-of-tree kernel drivers and a vendor-licensed SDK.

The goal of this talk is to present a viable alternative for how current vendor switching and routing hardware can be made significantly more usable by kernel and application developers by moving away from the current model. Today, most Linux users of datacenter hardware currently interact with network devices that are presented as tun/tap devices and use of tree kernel drivers to access hardware. This combination does not allow access to hardware information or configuration (how are the ethtool_ops for tun/tap working?) and it currently provides no ability to leverage the recently merged dataplane offload (switching and routing) infrastructure has that has recently made it into the upstream kernel. Though the short-term solution requires the unfortunate reliance on a vendor-licensed SDK, releasing and adding this driver to the upstream kernel is the first step towards a goal of simplified data-plane programming. This talk includes a description of the architecture of this driver for as it compares to some of the vendor options available today, the relationship and communication between this driver and the current vendor-licensed SDK, and plans for the future growth of this into a stand-alone driver with minimal (if any) SDK reliance.