-
Notifications
You must be signed in to change notification settings - Fork 0
Home
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.
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.
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 , 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-hock Firmware upgrade, Spectrum-2 IPv4/IPv6 Multicast router |
5.1 | Spectrum-2 GRE, VXLAN and QoS, Expose discard counters via ethtool |
To report issues in the Wiki please send an email to: mlxsw [at] mellanox [dot] com
Installation
System Maintenance
Network Interface Configuration
- Switch Port Configuration
- Persistent Configuration
- Quality of Service
- Queues Management
- Port Mirroring
- ACLs
- OVS
- Resource Management
Layer 2
Network Virtualization
Layer 3
- Static Routing
- Virtual Routing and Forwarding (VRF)
- Tunneling
- Multicast Routing
- Virtual Router Redundancy Protocol (VRRP)
Debugging