Page MenuHomeVyOS Platform

Support VyOS on Mellanox SNxxxx switches
Open, LowPublic

Description

Support VyOS running on Mellanox SNxxxx switches.

The stock Linux kernel has ~full support for the switch ASIC in these switches, and their control CPU is just an older Intel CPU, so they boot VyOS just fine. VyOS even ships with the correct module for the ASIC pre-built. This is enough to be able to turn up interfaces, set up bridging and routing, and have ~everything offloaded to hardware.

There are a few issues that keep them from being usable out of the box:

  • They have port naming issues; like many switches, the front panel ports aren't technically wired up in order, so eth1, eth2, etc don't map cleanly to the labels printed on the switch. Since members of the family have up to 64 ports, having a random mapping between ethX and the actual front panel port is fairly user-hostile. There are several approaches to this, but using udev with the naming recommended by the Kernel's switchdev docs seems best. This requires changes to the various regexes that control legal interface names.
  • VxLAN bridging doesn't work unless the noudpcsum property is set on the VxLAN interface, and VyOS doesn't currently support this, although it's trivial to add.
  • Hardware-accelerated bridging doesn't work (and assigning switch interfaces to bridges fails) unless the bridge has a real MAC assigned to it. Using set interface bridge br200 mac xx.xx.xx.xx.xx.xx works, as long as the address given matches one of the existing interfaces.
  • Hardware acceleration stats aren't visible out of the box. Needs tooling.
  • Port splitting (1 QSFP+ -> 4x 10G interfaces) is kind of complicated but supported via devlink which is already installed.

Details

Version
-
Is it a breaking change?
Perfectly compatible
Issue type
Feature (new functionality)
Forum thread
https://forum.vyos.io/t/vyos-on-mellanox-spectrum-snxxxx-switches-w-switchdev/17112