All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net-next v2 00/18] mlxsw: Add VxLAN support
@ 2018-10-17  8:53 ` Ido Schimmel
  0 siblings, 0 replies; 42+ messages in thread
From: Ido Schimmel @ 2018-10-17  8:53 UTC (permalink / raw)
  To: netdev
  Cc: davem, Jiri Pirko, Petr Machata, jakub.kicinski, ivecera, roopa,
	nikolay, andrew, vivien.didelot, f.fainelli, stephen, bridge,
	mlxsw, Ido Schimmel

This patchset adds support for VxLAN offload in the mlxsw driver.

With regards to the forwarding plane, VxLAN support is composed from two
main parts: Encapsulation and decapsulation.

In the device, NVE encapsulation (and VxLAN in particular) takes place
in the bridge. A packet can be encapsulated using VxLAN either because
it hit an FDB entry that forwards it to the router with the IP of the
remote VTEP or because it was flooded, in which case it is sent to a
list of remote VTEPs (in addition to local ports). In either case, the
VNI is derived from the filtering identifier (FID) the packet was
classified to at ingress and the underlay source IP is taken from a
device global configuration.

VxLAN decapsulation takes place in the underlay router, where packets
that hit a local route that corresponds to the source IP of the local
VTEP are decapsulated and injected to the bridge. The packets are
classified to a FID based on the VNI they came with.

The first six patches export the required APIs in the VxLAN and mlxsw
drivers in order to allow for the introduction of the NVE core in the
next two patches. The NVE core is designed to support a variety of NVE
encapsulations (e.g., VxLAN, NVGRE) and different ASICs, but currently
only VxLAN and Spectrum are supported. Spectrum-2 support will be added
in the future.

The last 10 patches add support for VxLAN decapsulation and
encapsulation and include the addition of the required switchdev APIs in
the VxLAN driver. These APIs allow capable drivers to get a notification
about the addition / deletion of FDB entries to / from the VxLAN's FDB.

Subsequent patchset will add selftests (generic and mlxsw-specific),
data plane learning, FDB extack and vetoing and support for VLAN-aware
bridges (one VNI per VxLAN device model).

v2:
* Implement netif_is_vxlan() using rtnl_link_ops->kind (Jakub & Stephen)

Ido Schimmel (14):
  mlxsw: spectrum_fid: Allow setting and clearing NVE properties on FID
  mlxsw: spectrum_fid: Add APIs to lookup FID without creating it
  mlxsw: spectrum_router: Enable local routes promotion to perform NVE
    decap
  mlxsw: spectrum_router: Allow querying VR ID based on table ID
  vxlan: Export address checking functions
  inet: Refactor INET_ECN_decapsulate()
  mlxsw: spectrum_nve: Implement common NVE core
  mlxsw: spectrum_nve: Implement VxLAN operations
  mlxsw: spectrum_fid: Clear NVE configuration when destroying 802.1D
    FIDs
  mlxsw: spectrum_router: Configure matching local routes for NVE decap
  net: Add netif_is_vxlan()
  bridge: switchdev: Allow clearing FDB entry offload indication
  mlxsw: spectrum: Enable VxLAN enslavement to bridges
  mlxsw: spectrum_switchdev: Add support for VxLAN encapsulation

Petr Machata (4):
  vxlan: Add switchdev notifications
  vxlan: Add vxlan_fdb_find_uc() for FDB querying
  vxlan: Support marking RDSTs as offloaded
  vxlan: Notify for each remote of a removed FDB entry

 drivers/net/ethernet/mellanox/mlxsw/Makefile  |   3 +-
 .../net/ethernet/mellanox/mlxsw/spectrum.c    | 125 +++
 .../net/ethernet/mellanox/mlxsw/spectrum.h    |  89 ++
 .../ethernet/mellanox/mlxsw/spectrum_fid.c    | 225 +++-
 .../ethernet/mellanox/mlxsw/spectrum_nve.c    | 982 ++++++++++++++++++
 .../ethernet/mellanox/mlxsw/spectrum_nve.h    |  49 +
 .../mellanox/mlxsw/spectrum_nve_vxlan.c       | 249 +++++
 .../ethernet/mellanox/mlxsw/spectrum_router.c | 138 ++-
 .../mellanox/mlxsw/spectrum_switchdev.c       | 552 +++++++++-
 .../netronome/nfp/flower/tunnel_conf.c        |   3 +-
 drivers/net/ethernet/rocker/rocker_main.c     |   1 +
 drivers/net/vxlan.c                           | 176 +++-
 include/net/inet_ecn.h                        |  18 +-
 include/net/switchdev.h                       |   7 +-
 include/net/vxlan.h                           |  64 ++
 net/bridge/br.c                               |   4 +-
 net/bridge/br_fdb.c                           |   4 +-
 net/bridge/br_private.h                       |   2 +-
 net/bridge/br_switchdev.c                     |   9 +-
 net/dsa/slave.c                               |   1 +
 20 files changed, 2644 insertions(+), 57 deletions(-)
 create mode 100644 drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
 create mode 100644 drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.h
 create mode 100644 drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c

-- 
2.17.2

^ permalink raw reply	[flat|nested] 42+ messages in thread

end of thread, other threads:[~2018-10-18  0:54 UTC | newest]

Thread overview: 42+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-10-17  8:53 [PATCH net-next v2 00/18] mlxsw: Add VxLAN support Ido Schimmel
2018-10-17  8:53 ` [Bridge] " Ido Schimmel
2018-10-17  8:53 ` [PATCH net-next v2 01/18] mlxsw: spectrum_fid: Allow setting and clearing NVE properties on FID Ido Schimmel
2018-10-17  8:53   ` [Bridge] " Ido Schimmel
2018-10-17  8:53 ` [PATCH net-next v2 02/18] mlxsw: spectrum_fid: Add APIs to lookup FID without creating it Ido Schimmel
2018-10-17  8:53   ` [Bridge] " Ido Schimmel
2018-10-17  8:53 ` [PATCH net-next v2 03/18] mlxsw: spectrum_router: Enable local routes promotion to perform NVE decap Ido Schimmel
2018-10-17  8:53   ` [Bridge] " Ido Schimmel
2018-10-17  8:53 ` [PATCH net-next v2 04/18] mlxsw: spectrum_router: Allow querying VR ID based on table ID Ido Schimmel
2018-10-17  8:53   ` [Bridge] " Ido Schimmel
2018-10-17  8:53 ` [PATCH net-next v2 05/18] vxlan: Export address checking functions Ido Schimmel
2018-10-17  8:53   ` [Bridge] " Ido Schimmel
2018-10-17  8:53 ` [PATCH net-next v2 06/18] inet: Refactor INET_ECN_decapsulate() Ido Schimmel
2018-10-17  8:53   ` [Bridge] " Ido Schimmel
2018-10-17  8:53 ` [PATCH net-next v2 07/18] mlxsw: spectrum_nve: Implement common NVE core Ido Schimmel
2018-10-17  8:53   ` [Bridge] " Ido Schimmel
2018-10-17  8:53 ` [PATCH net-next v2 08/18] mlxsw: spectrum_nve: Implement VxLAN operations Ido Schimmel
2018-10-17  8:53   ` [Bridge] " Ido Schimmel
2018-10-17  8:53 ` [PATCH net-next v2 09/18] mlxsw: spectrum_fid: Clear NVE configuration when destroying 802.1D FIDs Ido Schimmel
2018-10-17  8:53   ` [Bridge] " Ido Schimmel
2018-10-17  8:53 ` [PATCH net-next v2 10/18] mlxsw: spectrum_router: Configure matching local routes for NVE decap Ido Schimmel
2018-10-17  8:53   ` [Bridge] " Ido Schimmel
2018-10-17  8:53 ` [PATCH net-next v2 11/18] net: Add netif_is_vxlan() Ido Schimmel
2018-10-17  8:53   ` [Bridge] " Ido Schimmel
2018-10-17 16:58   ` Jakub Kicinski
2018-10-17 16:58     ` [Bridge] " Jakub Kicinski
2018-10-17  8:53 ` [PATCH net-next v2 12/18] vxlan: Add switchdev notifications Ido Schimmel
2018-10-17  8:53   ` [Bridge] " Ido Schimmel
2018-10-17  8:53 ` [PATCH net-next v2 13/18] vxlan: Add vxlan_fdb_find_uc() for FDB querying Ido Schimmel
2018-10-17  8:53   ` [Bridge] " Ido Schimmel
2018-10-17  8:53 ` [PATCH net-next v2 14/18] vxlan: Support marking RDSTs as offloaded Ido Schimmel
2018-10-17  8:53   ` [Bridge] " Ido Schimmel
2018-10-17  8:53 ` [PATCH net-next v2 15/18] vxlan: Notify for each remote of a removed FDB entry Ido Schimmel
2018-10-17  8:53   ` [Bridge] " Ido Schimmel
2018-10-17  8:53 ` [PATCH net-next v2 16/18] bridge: switchdev: Allow clearing FDB entry offload indication Ido Schimmel
2018-10-17  8:53   ` [Bridge] " Ido Schimmel
2018-10-17  8:53 ` [PATCH net-next v2 17/18] mlxsw: spectrum: Enable VxLAN enslavement to bridges Ido Schimmel
2018-10-17  8:53   ` [Bridge] " Ido Schimmel
2018-10-17  8:53 ` [PATCH net-next v2 18/18] mlxsw: spectrum_switchdev: Add support for VxLAN encapsulation Ido Schimmel
2018-10-17  8:53   ` [Bridge] " Ido Schimmel
2018-10-18  0:46 ` [PATCH net-next v2 00/18] mlxsw: Add VxLAN support David Miller
2018-10-18  0:46   ` [Bridge] " David Miller

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.