From: Ido Schimmel <idosch@mellanox.com>
To: netdev@vger.kernel.org
Cc: davem@davemloft.net, jiri@mellanox.com, petrm@mellanox.com,
mlxsw@mellanox.com, Ido Schimmel <idosch@mellanox.com>
Subject: [PATCH net-next 0/4] mlxsw: Add VRRP support
Date: Sat, 14 Jul 2018 11:39:50 +0300 [thread overview]
Message-ID: <20180714083954.14754-1-idosch@mellanox.com> (raw)
When a router that is acting as the default gateway of a host stops
functioning, the host will encounter packet loss until the router starts
functioning again.
To increase the reliability of the default gateway without performing
reconfiguration on the host, a host can use a Virtual Router Redundancy
Protocol (VRRP) Router. This virtual router is composed from several
routers where only one is actually forwarding packets from the host (the
master router) while the other routers act as backup routers. The
election of the master router is determined by the VRRP protocol [1].
Packets addressed to the virtual router are always sent to the virtual
router MAC address (IPv4: 00-00-5E-00-01-XX, IPv6: 00-00-5E-00-02-XX).
Such packets can only be accepted by the master router and must be
discarded by the backup routers.
In Linux, VRRP is usually implemented by configuring a macvlan with the
virtual router MAC on top of the router interface that is connected to
the host / LAN. The macvlan on the master router is assigned the virtual
IP (VIP) that the host uses as its gateway.
In order to support VRRP in mlxsw, we first need to enable macvlan upper
devices on top of mlxsw netdevs and their uppers. This is done by the
first patch, which also takes care of sanitizing macvlan configurations
that are not currently supported by the driver.
The second patch directs packets with destination MAC addresses as the
macvlans to the router so that they will undergo an L3 lookup. This is
consistent with the kernel's behavior where the macvlan's Rx handler
will re-inject such packets to the Rx path so that they will be picked
up by the IPvX protocol handlers and undergo an L3 lookup. Note that the
driver prevents the macvlans from being enslaved to other devices, to
ensure the packets will be picked up by the protocol handler and not by
another Rx handler.
The third patch adds packet traps for VRRP control packets for both IPv4
and IPv6. Finally, the last patch optimizes the reception of VRRP MACs
by potentially skipping one L2 lookup for them.
Ido Schimmel (4):
mlxsw: spectrum: Enable macvlan upper devices
mlxsw: spectrum_router: Direct macvlans' MACs to router
mlxsw: spectrum: Add VRRP traps
mlxsw: spectrum_router: Optimize processing of VRRP MACs
drivers/net/ethernet/mellanox/mlxsw/reg.h | 14 ++
drivers/net/ethernet/mellanox/mlxsw/spectrum.c | 88 +++++++++-
drivers/net/ethernet/mellanox/mlxsw/spectrum.h | 2 +
.../net/ethernet/mellanox/mlxsw/spectrum_router.c | 190 ++++++++++++++++++++-
drivers/net/ethernet/mellanox/mlxsw/trap.h | 2 +
5 files changed, 292 insertions(+), 4 deletions(-)
--
2.14.4
next reply other threads:[~2018-07-14 8:59 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-07-14 8:39 Ido Schimmel [this message]
2018-07-14 8:39 ` [PATCH net-next 1/4] mlxsw: spectrum: Enable macvlan upper devices Ido Schimmel
2018-07-14 8:39 ` [PATCH net-next 2/4] mlxsw: spectrum_router: Direct macvlans' MACs to router Ido Schimmel
2018-07-14 8:39 ` [PATCH net-next 3/4] mlxsw: spectrum: Add VRRP traps Ido Schimmel
2018-07-14 8:39 ` [PATCH net-next 4/4] mlxsw: spectrum_router: Optimize processing of VRRP MACs Ido Schimmel
2018-07-14 18:24 ` [PATCH net-next 0/4] mlxsw: Add VRRP support David Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180714083954.14754-1-idosch@mellanox.com \
--to=idosch@mellanox.com \
--cc=davem@davemloft.net \
--cc=jiri@mellanox.com \
--cc=mlxsw@mellanox.com \
--cc=netdev@vger.kernel.org \
--cc=petrm@mellanox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox