Hans S
2022-Jul-01 07:47 UTC
[Bridge] [PATCH net-next v1 1/1] net: bridge: ensure that link-local traffic cannot unlock a locked port
One question though... wouldn't it be an issue that the mentioned option setting is bridge wide, while the patch applies a per-port effect? On Thu, Jun 30, 2022 at 1:38 PM Ido Schimmel <idosch at nvidia.com> wrote:> > On Thu, Jun 30, 2022 at 01:16:34PM +0200, Hans Schultz wrote: > > This patch is related to the patch set > > "Add support for locked bridge ports (for 802.1X)" > > Link: https://lore.kernel.org/netdev/20220223101650.1212814-1-schultz.hans+netdev at gmail.com/ > > > > This patch makes the locked port feature work with learning turned on, > > which is enabled with the command: > > > > bridge link set dev DEV learning on > > > > Without this patch, link local traffic (01:80:c2) like EAPOL packets will > > create a fdb entry when ingressing on a locked port with learning turned > > on, thus unintentionally opening up the port for traffic for the said MAC. > > > > Some switchcore features like Mac-Auth and refreshing of FDB entries, > > require learning enables on some switchcores, f.ex. the mv88e6xxx family. > > Other features may apply too. > > > > Since many switchcores trap or mirror various multicast packets to the > > CPU, link local traffic will unintentionally unlock the port for the > > SA mac in question unless prevented by this patch. > > Why not just teach hostapd to do: > > echo 1 > /sys/class/net/br0/bridge/no_linklocal_learn > > ?
Ido Schimmel
2022-Jul-01 13:51 UTC
[Bridge] [PATCH net-next v1 1/1] net: bridge: ensure that link-local traffic cannot unlock a locked port
On Fri, Jul 01, 2022 at 09:47:24AM +0200, Hans S wrote:> One question though... wouldn't it be an issue that the mentioned > option setting is bridge wide, while the patch applies a per-port > effect?Why would it be an issue? To me, the bigger issue is changing the semantics of "locked" in 5.20 compared to previous kernels. What is even the use case for enabling learning when the port is locked? In current kernels, only SAs from link local traffic will be learned, but with this patch, nothing will be learned. So why enable learning in the first place? As an administrator, I mark a port as "locked" so that only traffic with SAs that I configured will be allowed. Enabling learning when the port is locked seems to defeat the purpose? It would be helpful to explain why mv88e6xxx needs to have learning enabled in the first place. IIUC, the software bridge can function correctly with learning disabled. It might be better to solve this in mv88e6xxx so that user space would not need to enable learning on the SW bridge and then work around issues caused by it such as learning from link local traffic.