All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 net-next 0/6] Extend locked port feature with FDB locked flag (MAC-Auth/MAB)
@ 2022-07-07 15:29 ` Hans Schultz
  0 siblings, 0 replies; 137+ messages in thread
From: Hans Schultz @ 2022-07-07 15:29 UTC (permalink / raw)
  To: davem, kuba
  Cc: netdev, Hans Schultz, Andrew Lunn, Vivien Didelot,
	Florian Fainelli, Vladimir Oltean, Eric Dumazet, Paolo Abeni,
	Jiri Pirko, Ivan Vecera, Roopa Prabhu, Nikolay Aleksandrov,
	Shuah Khan, Daniel Borkmann, Ido Schimmel, linux-kernel, bridge,
	linux-kselftest

This patch set extends the locked port feature for devices
that are behind a locked port, but do not have the ability to
authorize themselves as a supplicant using IEEE 802.1X.
Such devices can be printers, meters or anything related to
fixed installations. Instead of 802.1X authorization, devices
can get access based on their MAC addresses being whitelisted.

For an authorization daemon to detect that a device is trying
to get access through a locked port, the bridge will add the
MAC address of the device to the FDB with a locked flag to it.
Thus the authorization daemon can catch the FDB add event and
check if the MAC address is in the whitelist and if so replace
the FDB entry without the locked flag enabled, and thus open
the port for the device.

This feature is known as MAC-Auth or MAC Authentication Bypass
(MAB) in Cisco terminology, where the full MAB concept involves
additional Cisco infrastructure for authorization. There is no
real authentication process, as the MAC address of the device
is the only input the authorization daemon, in the general
case, has to base the decision if to unlock the port or not.

With this patch set, an implementation of the offloaded case is
supplied for the mv88e6xxx driver. When a packet ingresses on
a locked port, an ATU miss violation event will occur. When
handling such ATU miss violation interrupts, the MAC address of
the device is added to the FDB with a zero destination port
vector (DPV) and the MAC address is communicated through the
switchdev layer to the bridge, so that a FDB entry with the
locked flag enabled can be added.

Log:
	v3:	Added timers and lists in the driver (mv88e6xxx)
		to keep track of and remove locked entries.

	v4:	Leave out enforcing a limit to the number of
		locked entries in the bridge.
		Removed the timers in the driver and use the
		worker only. Add locked FDB flag to all drivers
		using port_fdb_add() from the dsa api and let
		all drivers ignore entries with this flag set.
		Change how to get the ageing timeout of locked
		entries. See global1_atu.c and switchdev.c.
		Use struct mv88e6xxx_port for locked entries
		variables instead of struct dsa_port.

Hans Schultz (6):
  net: bridge: add locked entry fdb flag to extend locked port feature
  net: switchdev: add support for offloading of fdb locked flag
  drivers: net: dsa: add locked fdb entry flag to drivers
  net: dsa: mv88e6xxx: allow reading FID when handling ATU violations
  net: dsa: mv88e6xxx: mac-auth/MAB implementation
  selftests: forwarding: add test of MAC-Auth Bypass to locked port
    tests

 drivers/net/dsa/b53/b53_common.c              |   5 +
 drivers/net/dsa/b53/b53_priv.h                |   1 +
 drivers/net/dsa/hirschmann/hellcreek.c        |   5 +
 drivers/net/dsa/lan9303-core.c                |   5 +
 drivers/net/dsa/lantiq_gswip.c                |   5 +
 drivers/net/dsa/microchip/ksz9477.c           |   5 +
 drivers/net/dsa/mt7530.c                      |   5 +
 drivers/net/dsa/mv88e6xxx/Makefile            |   1 +
 drivers/net/dsa/mv88e6xxx/chip.c              |  54 +++-
 drivers/net/dsa/mv88e6xxx/chip.h              |  15 +
 drivers/net/dsa/mv88e6xxx/global1.h           |   1 +
 drivers/net/dsa/mv88e6xxx/global1_atu.c       |  32 +-
 drivers/net/dsa/mv88e6xxx/port.c              |  30 +-
 drivers/net/dsa/mv88e6xxx/port.h              |   2 +
 drivers/net/dsa/mv88e6xxx/switchdev.c         | 280 ++++++++++++++++++
 drivers/net/dsa/mv88e6xxx/switchdev.h         |  37 +++
 drivers/net/dsa/ocelot/felix.c                |   5 +
 drivers/net/dsa/qca8k.c                       |   5 +
 drivers/net/dsa/sja1105/sja1105_main.c        |   5 +
 include/net/dsa.h                             |   7 +
 include/net/switchdev.h                       |   1 +
 include/uapi/linux/neighbour.h                |   1 +
 net/bridge/br.c                               |   3 +-
 net/bridge/br_fdb.c                           |  19 +-
 net/bridge/br_input.c                         |  10 +-
 net/bridge/br_private.h                       |   5 +-
 net/bridge/br_switchdev.c                     |   1 +
 net/dsa/dsa_priv.h                            |   4 +-
 net/dsa/port.c                                |   7 +-
 net/dsa/slave.c                               |   4 +-
 net/dsa/switch.c                              |  10 +-
 .../net/forwarding/bridge_locked_port.sh      |  30 +-
 32 files changed, 566 insertions(+), 34 deletions(-)
 create mode 100644 drivers/net/dsa/mv88e6xxx/switchdev.c
 create mode 100644 drivers/net/dsa/mv88e6xxx/switchdev.h

-- 
2.30.2


^ permalink raw reply	[flat|nested] 137+ messages in thread
* Re: [PATCH v4 net-next 3/6] drivers: net: dsa: add locked fdb entry flag to drivers
@ 2022-08-12 12:29 netdev
  2022-08-14 14:55 ` Ido Schimmel
  0 siblings, 1 reply; 137+ messages in thread
From: netdev @ 2022-08-12 12:29 UTC (permalink / raw)
  To: Ido Schimmel
  Cc: Vladimir Oltean, davem, kuba, netdev, Andrew Lunn, Vivien Didelot,
	Florian Fainelli, Eric Dumazet, Paolo Abeni, Jiri Pirko,
	Ivan Vecera, Roopa Prabhu, Nikolay Aleksandrov, Shuah Khan,
	Daniel Borkmann, linux-kernel, bridge, linux-kselftest

On 2022-08-11 13:28, Ido Schimmel wrote:

>> > I'm talking about roaming, not forwarding. Let's say you have a locked
>> > entry with MAC X pointing to port Y. Now you get a packet with SMAC X
>> > from port Z which is unlocked. Will the FDB entry roam to port Z? I
>> > think it should, but at least in current implementation it seems that
>> > the "locked" flag will not be reset and having locked entries pointing
>> > to an unlocked port looks like a bug.
>> >
>> 

In general I have been thinking that the said setup is a network 
configuration error as I was arguing in an earlier conversation with 
Vladimir. In this setup we must remember that SMAC X becomes DMAC X in 
the return traffic on the open port. But the question arises to me why 
MAC X would be behind the locked port without getting authed while being 
behind an open port too?
In a real life setup, I don't think you would want random hosts behind a 
locked port in the MAB case, but only the hosts you will let through. 
Other hosts should be regarded as intruders.

If we are talking about a station move, then the locked entry will age 
out and MAC X will function normally on the open port after the timeout, 
which was a case that was taken up in earlier discussions.

But I will anyhow do some testing with this 'edge case' (of being behind 
both a locked and an unlocked port) if I may call it so, and see to that 
the offloaded and non-offloaded cases correspond to each other, and will 
work satisfactory.

I think it will be good to have a flag to enable the mac-auth/MAB 
feature, and I suggest just calling the flag 'mab', as it is short.

Otherwise I don't see any major issues with the whole feature as it is.

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

end of thread, other threads:[~2022-08-25 15:15 UTC | newest]

Thread overview: 137+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-07 15:29 [PATCH v4 net-next 0/6] Extend locked port feature with FDB locked flag (MAC-Auth/MAB) Hans Schultz
2022-07-07 15:29 ` [Bridge] " Hans Schultz
2022-07-07 15:29 ` [PATCH v4 net-next 1/6] net: bridge: add locked entry fdb flag to extend locked port feature Hans Schultz
2022-07-07 15:29   ` [Bridge] " Hans Schultz
2022-07-10  8:20   ` Ido Schimmel
2022-07-10  8:20     ` [Bridge] " Ido Schimmel
2022-07-07 15:29 ` [PATCH v4 net-next 2/6] net: switchdev: add support for offloading of fdb locked flag Hans Schultz
2022-07-07 15:29   ` [Bridge] " Hans Schultz
2022-07-08  8:54   ` Vladimir Oltean
2022-07-08  8:54     ` [Bridge] " Vladimir Oltean
2022-08-02  8:27     ` netdev
2022-08-02  8:27       ` [Bridge] " netdev
2022-08-02 10:13     ` netdev
2022-08-02 10:13       ` [Bridge] " netdev
2022-07-07 15:29 ` [PATCH v4 net-next 3/6] drivers: net: dsa: add locked fdb entry flag to drivers Hans Schultz
2022-07-07 15:29   ` [Bridge] " Hans Schultz
2022-07-08  7:12   ` kernel test robot
2022-07-08  8:49   ` Vladimir Oltean
2022-07-08  8:49     ` [Bridge] " Vladimir Oltean
2022-07-08  9:06     ` netdev
2022-07-08  9:06       ` [Bridge] " netdev
2022-07-08  9:15       ` Vladimir Oltean
2022-07-08  9:15         ` [Bridge] " Vladimir Oltean
2022-07-08  9:27         ` netdev
2022-07-08  9:27           ` [Bridge] " netdev
2022-07-08  9:50         ` netdev
2022-07-08  9:50           ` [Bridge] " netdev
2022-07-08 11:56           ` Vladimir Oltean
2022-07-08 11:56             ` [Bridge] " Vladimir Oltean
2022-07-08 12:34             ` netdev
2022-07-08 12:34               ` [Bridge] " netdev
2022-07-10  8:35               ` Ido Schimmel
2022-07-10  8:35                 ` [Bridge] " Ido Schimmel
2022-07-13  7:09                 ` netdev
2022-07-13  7:09                   ` [Bridge] " netdev
2022-07-13 12:39                   ` Ido Schimmel
2022-07-13 12:39                     ` [Bridge] " Ido Schimmel
2022-07-17 12:21                     ` netdev
2022-07-17 12:21                       ` [Bridge] " netdev
2022-07-17 12:57                       ` Vladimir Oltean
2022-07-17 12:57                         ` [Bridge] " Vladimir Oltean
2022-07-17 13:09                         ` netdev
2022-07-17 13:09                           ` [Bridge] " netdev
2022-07-17 13:59                           ` Vladimir Oltean
2022-07-17 13:59                             ` [Bridge] " Vladimir Oltean
2022-07-17 14:57                             ` netdev
2022-07-17 14:57                               ` [Bridge] " netdev
2022-07-17 15:08                               ` Vladimir Oltean
2022-07-17 15:08                                 ` [Bridge] " Vladimir Oltean
2022-07-17 16:10                                 ` netdev
2022-07-17 16:10                                   ` [Bridge] " netdev
2022-07-21 11:54                                   ` Vladimir Oltean
2022-07-21 11:54                                     ` [Bridge] " Vladimir Oltean
2022-07-17 15:20                       ` Ido Schimmel
2022-07-17 15:20                         ` [Bridge] " Ido Schimmel
2022-07-17 15:53                         ` netdev
2022-07-17 15:53                           ` [Bridge] " netdev
2022-07-21 11:59                           ` Vladimir Oltean
2022-07-21 11:59                             ` [Bridge] " Vladimir Oltean
2022-07-21 13:27                             ` Ido Schimmel
2022-07-21 13:27                               ` [Bridge] " Ido Schimmel
2022-07-21 14:20                               ` Vladimir Oltean
2022-07-21 14:20                                 ` [Bridge] " Vladimir Oltean
2022-07-24 11:10                                 ` Ido Schimmel
2022-07-24 11:10                                   ` [Bridge] " Ido Schimmel
2022-08-01 11:57                                   ` netdev
2022-08-01 11:57                                     ` [Bridge] " netdev
2022-08-01 13:14                                   ` netdev
2022-08-01 13:14                                     ` [Bridge] " netdev
2022-08-02 12:54                             ` netdev
2022-08-02 12:54                               ` [Bridge] " netdev
2022-08-01 15:33                     ` netdev
2022-08-01 15:33                       ` [Bridge] " netdev
2022-08-09  9:20                       ` Ido Schimmel
2022-08-09  9:20                         ` [Bridge] " Ido Schimmel
2022-08-09 20:00                         ` netdev
2022-08-09 20:00                           ` [Bridge] " netdev
2022-08-10  7:21                           ` Ido Schimmel
2022-08-10  7:21                             ` [Bridge] " Ido Schimmel
2022-08-10  8:40                             ` netdev
2022-08-10  8:40                               ` [Bridge] " netdev
2022-08-11 11:28                               ` Ido Schimmel
2022-08-11 11:28                                 ` [Bridge] " Ido Schimmel
2022-08-12 15:33                                 ` netdev
2022-08-12 15:33                                   ` [Bridge] " netdev
2022-08-16  7:51                             ` netdev
2022-08-16  7:51                               ` [Bridge] " netdev
2022-08-17  6:21                               ` Ido Schimmel
2022-08-17  6:21                                 ` [Bridge] " Ido Schimmel
2022-07-21 11:51           ` Vladimir Oltean
2022-07-21 11:51             ` [Bridge] " Vladimir Oltean
2022-07-08 20:39   ` kernel test robot
2022-07-07 15:29 ` [PATCH v4 net-next 4/6] net: dsa: mv88e6xxx: allow reading FID when handling ATU violations Hans Schultz
2022-07-07 15:29   ` [Bridge] " Hans Schultz
2022-07-07 15:29 ` [PATCH v4 net-next 5/6] net: dsa: mv88e6xxx: mac-auth/MAB implementation Hans Schultz
2022-07-07 15:29   ` [Bridge] " Hans Schultz
2022-07-08  9:46   ` kernel test robot
2022-07-17  0:47   ` Vladimir Oltean
2022-07-17  0:47     ` [Bridge] " Vladimir Oltean
2022-07-17 12:34     ` netdev
2022-07-17 12:34       ` [Bridge] " netdev
2022-07-21 12:04       ` Vladimir Oltean
2022-07-21 12:04         ` [Bridge] " Vladimir Oltean
2022-08-19  8:28     ` netdev
2022-08-19  8:28       ` [Bridge] " netdev
2022-07-07 15:29 ` [PATCH v4 net-next 6/6] selftests: forwarding: add test of MAC-Auth Bypass to locked port tests Hans Schultz
2022-07-07 15:29   ` [Bridge] " Hans Schultz
2022-07-10  7:29   ` Ido Schimmel
2022-07-10  7:29     ` [Bridge] " Ido Schimmel
2022-07-12 12:28     ` netdev
2022-07-12 12:28       ` [Bridge] " netdev
2022-07-08  1:00 ` [PATCH v4 net-next 0/6] Extend locked port feature with FDB locked flag (MAC-Auth/MAB) Jakub Kicinski
2022-07-08  1:00   ` [Bridge] " Jakub Kicinski
2022-08-11  5:09 ` Benjamin Poirier
2022-08-11  5:09   ` [Bridge] " Benjamin Poirier
  -- strict thread matches above, loose matches on Subject: below --
2022-08-12 12:29 [PATCH v4 net-next 3/6] drivers: net: dsa: add locked fdb entry flag to drivers netdev
2022-08-14 14:55 ` Ido Schimmel
2022-08-19  9:51   ` netdev
2022-08-21  7:08     ` Ido Schimmel
2022-08-21 13:43       ` netdev
2022-08-22  5:40         ` Ido Schimmel
2022-08-22  7:49           ` netdev
2022-08-23  6:48             ` Ido Schimmel
2022-08-23  7:13               ` netdev
2022-08-23  7:24                 ` Ido Schimmel
2022-08-23  7:37                   ` netdev
2022-08-23 12:36                     ` Ido Schimmel
2022-08-24  7:07                       ` netdev
2022-08-23 11:41               ` netdev
2022-08-25  9:36                 ` Ido Schimmel
2022-08-25 10:28                   ` netdev
2022-08-25 15:14                   ` netdev
2022-08-24 20:29       ` netdev
2022-08-25  9:23         ` Ido Schimmel
2022-08-25 10:27           ` netdev
2022-08-25 11:58             ` Ido Schimmel
2022-08-25 13:41               ` netdev

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.