Skip to content
Ido Schimmel edited this page Aug 26, 2019 · 49 revisions
Table of Contents
  1. Motivation
  2. mlxsw
    1. Features by Version
  3. Reporting Issues

Motivation

switchdev is an infrastructure in the Linux kernel which facilitates the offloading of the kernel's forwarding plane to capable ASICs.

switchdev allows users and developers to utilize current ASICs by using a standardized and well-known API exposed by the Linux kernel instead of relying on proprietary APIs implemented in binary user space blobs.

By using the Linux kernel to configure the hardware, users can use the same familiar tools to configure both their servers and switches. The sole difference would be the performance gained by offloading the kernel's forwarding plane to the switch's ASIC.

switch$ ip link add name br0 type bridge
switch$ ip link set dev br0 type bridge vlan_filtering 1
switch$ ip link set dev sw1p1 master br0
switch$ ip link set dev sw1p2 master br0
switch$ ip link set dev br0 up

hostA$ iperf –s –i1
hostB$ iperf -c hostA -i1 -P 8
------------------------------------------------------------
Client connecting to 192.168.1.1, TCP port 5001
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
...
[SUM]  1.0- 2.0 sec  10.5 GBytes  90.6 Gbits/sec

For more information about switchdev please refer to the kernel's Switchdev documentation.

mlxsw

Mellanox Technologies is the first hardware vendor to use the switchdev API to offload the kernel's forwarding plane to a real ASIC. Mellanox's current switchdev-based solution is focused on the 100Gb/s Spectrum ASIC switches (SN2000 Series) and the 200Gb/s Spectrum-2 ASIC switches (SN3000 Series).

This is achieved by using an upstream driver in the Linux kernel. A user can simply buy a switch, install Linux on it like any other server and benefit from the underlying hardware.

Features by Version

Kernel Version
4.3 SwitchX-2 driver submission. Slow path only. Not in active development
4.4 Spectrum driver submission. VLAN-aware bridge offload
4.5 LAG and VLAN-unaware bridges
4.6 devlink infrastructure and port splitter
4.7 Quality of Service: DCB and shared buffers
4.8 IPv4 unicast router, port mirroring, extended ethtool statistics
4.9 Extended ethtool support, HW stats query via iproute
4.10 SwitchIB support, I2C support, CPU policer
4.11 tc-flower offload, enhanced L3 offload, packet sampling
4.12 tc-vlan offload, VRFs, ACL activity and stats dumping, OVS offload
4.13 Match on TCP flags, firmware flashing, trap action, port module info
4.14 IPv6 unicast router, match on IP TTL and TOS, tc-multichain offload, GRE tunnels
4.15 IPv4 multicast router, IPv4 non-equal-cost multi-path, multi-path hash policy, RED queueing discipline
4.16 IPv6 non-equal-cost multi-path, PRIO scheduler, flow based mirroring
4.17 RED as a child of PRIO, IPv6 multicast router, ERSPAN, Physical ports in VLAN-unaware bridges
4.18 RSPAN, ERSPAN mirroring with bridge, VLAN or LAG in underlay
4.19 Virtual Router Redundancy Protocol (VRRP), TC chain templates, Initial Spectrum-2 support, QoS Trust-DSCP and DSCP rewrite
4.20 QoS MC-awareness, VXLAN with VLAN-unaware bridges
5.0 One-armed router support, VXLAN with VLAN-aware bridges, VXLAN routing, Ad-hoc firmware upgrade, Spectrum-2 IPv4/IPv6 multicast router
5.1 Spectrum-2 GRE, VXLAN and QoS support, VXLAN FDB vetoing, ethtool discard counters, devlink info command support
5.2 SN3700C in GA
5.3 PTP support on Spectrum-1
5.4 Packet Drops Monitoring

Reporting Issues

To report issues in the Wiki please send an email to: mlxsw [at] mellanox [dot] com

Clone this wiki locally
You can’t perform that action at this time.