Linux Kernel Switchdev API being discussed recently in the context of supporting networking switch ASIC's is the future of offload API's. And existing standard Linux interfaces can be used to offload Linux network functions to a network switch ASIC.
In this tutorial we will demonstrate this with an existing implementation.
We will show how existing Linux networking tools like iproute2/brctl/ethtool can be used to offload to a network switch ASIC.
We will start by talking and demonstrating various virtual switching technologies around the Linux bridge and related technologies (SRIOV, macvlan etc).
We will then proceed to demonstrate how Linux bridge can be accelerated with commodity network switch ASICs utilizing the same control tools:
- Create bridge device, add network switch ports using `ip link` or `brctl`
- Set vlans on bridge ports using `bridge vlan add`
- Vlans programmed in hardware
- hardware learning, software aging of fdb entries
- Dumping hardware fdb tables using `bridge fdb show`
We plan to cover L3 as well.
Most of the network switch drivers available today rely on a closed vendor SDK API. We will not be able to cover all hardware details, but we hope to show enough details of kernel structures offloaded to hardware for easier API development.
We will use an industry standard network switch running Debian based Cumulus Linux distribution. We are also looking at possibilities of showing this on other devices running Linux.