netdev at kapio-technology.com
2022-Oct-21 17:39 UTC
[Bridge] [PATCH v8 net-next 10/12] net: dsa: mv88e6xxx: mac-auth/MAB implementation
On 2022-10-21 19:30, Vladimir Oltean wrote:> On Fri, Oct 21, 2022 at 07:18:59PM +0200, netdev at kapio-technology.com > wrote: >> On 2022-10-21 18:30, Vladimir Oltean wrote: >> > On Fri, Oct 21, 2022 at 03:16:21PM +0200, netdev at kapio-technology.com wrote: >> > > As it is now in the bridge, the locked port part is handled before learning >> > > in the ingress data path, so with BR_LEARNING and BR_PORT_LOCKED, I think it >> > > will work as it does now except link local packages. >> > >> > If link-local learning is enabled on a locked port, I think those >> > addresses should also be learned with the BR_FDB_LOCKED flag. The >> > creation of those locked FDB entries can be further suppressed by the >> > BROPT_NO_LL_LEARN flag. >> > >> > > If your suggestion of BR_LEARNING causing BR_FDB_LOCKED on a locked port, I >> > > guess it would be implemented under br_fdb_update() and BR_LEARNING + >> > > BR_PORT_LOCKED would go together, forcing BR_LEARNING in this case, thus also >> > > for all drivers? >> > >> > Yes, basically where this is placed right now (in br_handle_frame_finish): >> >> As I don't know what implications it would have for other drivers to >> have learning >> forced enabled on locked ports, I cannot say if it is a good idea or >> not. >> Right now learning is not forced either way as is, but the consensus >> is that learning >> should be off with locked ports, which it would be either way in the >> common case I >> think. > > I don't think I fully understand what you mean by forcing BR_LEARNING. > A bridge port gets created with a default set of flags as can be seen > in new_nbp(). > Those flags include BR_LEARNING but don't include BR_PORT_LOCKED. > > The user can decide he wants to make the port use 802.1X without MAB, > so > he enables BR_PORT_LOCKED and disables BR_LEARNING, all with the same > netlink command (ip link set swp0 type bridge_slave learning off locked > on). > > How was the driver forced into anything?Well, with this change, to have MAB working, the bridge would need learning on of course, but how things work with the bridge according to the flags, they should also work in the offloaded case if you ask me. There should be no difference between the two, thus MAB in drivers would have to be with learning on.
Vladimir Oltean
2022-Oct-21 18:14 UTC
[Bridge] [PATCH v8 net-next 10/12] net: dsa: mv88e6xxx: mac-auth/MAB implementation
On Fri, Oct 21, 2022 at 07:39:34PM +0200, netdev at kapio-technology.com wrote:> Well, with this change, to have MAB working, the bridge would need learning on > of course, but how things work with the bridge according to the flags, they > should also work in the offloaded case if you ask me. There should be no > difference between the two, thus MAB in drivers would have to be with > learning on.Am I proposing for things to work differently in the offload and software case, and not realizing it? :-/ The essence of my proposal was to send a bug fix now which denies BR_LEARNING to be set together with BR_PORT_LOCKED. The fact that link-local traffic is learned by the software bridge is something unintended as far as I understand. You tried to fix it here, and as far as I could search in my inbox, that didn't go anywhere: https://lore.kernel.org/netdev/47d8d747-54ef-df52-3b9c-acb9a77fa14a at blackwall.org/T/#u I thought only mv88e6xxx offloads BR_PORT_LOCKED, but now, after searching, I also see prestera has support for it, so let me add Oleksandr Mazur to the discussion as well. I wonder how they deal with this? Has somebody come to rely on learning being enabled on a locked port? MAB in offloading drivers will have to be with learning on (same as in software). When BR_PORT_LOCKED | BR_LEARNING will be allowed together back in net-next (to denote the MAB configuration), offloading drivers (mv88e6xxx and prestera) will be patched to reject them. They will only accept the two together when they implement MAB support. Future drivers after this mess has been cleaned up will have to look at the BR_PORT_LOCKED and BR_LEARNING flag in combination, to see which kind of learning is desired on a port (secure, CPU based learning or autonomous learning). Am I not making sense?