Vladimir Oltean
2022-Jul-17 13:59 UTC
[Bridge] [PATCH v4 net-next 3/6] drivers: net: dsa: add locked fdb entry flag to drivers
On Sun, Jul 17, 2022 at 03:09:10PM +0200, netdev at kapio-technology.com wrote:> On 2022-07-17 14:57, Vladimir Oltean wrote: > > On Sun, Jul 17, 2022 at 02:21:47PM +0200, netdev at kapio-technology.com > > wrote: > > > On 2022-07-13 14:39, Ido Schimmel wrote: > > > > On Wed, Jul 13, 2022 at 09:09:58AM +0200, netdev at kapio-technology.com > > > > wrote: > > > > > > > > > > > What are "Storm Prevention" and "zero-DPV" FDB entries? > > > > > > They are both FDB entries that at the HW level drops all packets > > > having a > > > specific SA, thus using minimum resources. > > > (thus the name "Storm Prevention" aka, protection against DOS > > > attacks. We > > > must remember that we operate with CPU based learning.) > > > > DPV means Destination Port Vector, and an ATU entry with a DPV of 0 > > essentially means a FDB entry pointing nowhere, so it will drop the > > packet. That's a slight problem with Hans' implementation, the bridge > > thinks that the locked FDB entry belongs to port X, but in reality it > > matches on all bridged ports (since it matches by FID). FID allocation > > in mv88e6xxx is slightly strange, all VLAN-unaware bridge ports, > > belonging to any bridge, share the same FID, so the FDB databases are > > not exactly isolated from each other. > > But if the locked port is vlan aware and has a pvid, it should not block > other ports.I don't understand what you want to say by that. It will block all other packets with the same MAC SA that are classified to the same FID. In case of VLAN-aware bridges, the mv88e6xxx driver allocates a new FID for each VID (see mv88e6xxx_atu_new). In other words, if a locked port is VLAN-aware and has a pvid, then whatever the PVID may be, all ports in that same VLAN are still blocked in the same way.> Besides the fid will be zero with vlan unaware afaik, and all with > zero fid do not create locked entries.If by 0 you mean 1 (MV88E6XXX_FID_BRIDGED), then you are correct: ports with FID 0 (MV88E6XXX_FID_STANDALONE) should not create locked FDB entries, because they are, well, standalone and not bridged. Again I don't exactly see the relevance though.
netdev at kapio-technology.com
2022-Jul-17 14:57 UTC
[Bridge] [PATCH v4 net-next 3/6] drivers: net: dsa: add locked fdb entry flag to drivers
On 2022-07-17 15:59, Vladimir Oltean wrote:> On Sun, Jul 17, 2022 at 03:09:10PM +0200, netdev at kapio-technology.com > wrote: >> On 2022-07-17 14:57, Vladimir Oltean wrote: >> > On Sun, Jul 17, 2022 at 02:21:47PM +0200, netdev at kapio-technology.com >> > wrote: >> > > On 2022-07-13 14:39, Ido Schimmel wrote: >> > > > On Wed, Jul 13, 2022 at 09:09:58AM +0200, netdev at kapio-technology.com >> > > > wrote: >> > > >> > > > >> > > > What are "Storm Prevention" and "zero-DPV" FDB entries? >> > > >> > > They are both FDB entries that at the HW level drops all packets >> > > having a >> > > specific SA, thus using minimum resources. >> > > (thus the name "Storm Prevention" aka, protection against DOS >> > > attacks. We >> > > must remember that we operate with CPU based learning.) >> > >> > DPV means Destination Port Vector, and an ATU entry with a DPV of 0 >> > essentially means a FDB entry pointing nowhere, so it will drop the >> > packet. That's a slight problem with Hans' implementation, the bridge >> > thinks that the locked FDB entry belongs to port X, but in reality it >> > matches on all bridged ports (since it matches by FID). FID allocation >> > in mv88e6xxx is slightly strange, all VLAN-unaware bridge ports, >> > belonging to any bridge, share the same FID, so the FDB databases are >> > not exactly isolated from each other. >> >> But if the locked port is vlan aware and has a pvid, it should not >> block >> other ports. > > I don't understand what you want to say by that. It will block all > other > packets with the same MAC SA that are classified to the same FID. > In case of VLAN-aware bridges, the mv88e6xxx driver allocates a new FID > for each VID (see mv88e6xxx_atu_new). In other words, if a locked port > is VLAN-aware and has a pvid, then whatever the PVID may be, all ports > in that same VLAN are still blocked in the same way.Maybe I am just trying to understand the problem you are posing, so afaics MAC addresses should be unique and having the same MAC address behind a locked port and a not-locked port seems like a mis-configuration regardless of vlan setup? As the zero-DPV entry only blocks the specific SA MAC on a specific vlan, which is behind a locked port, there shouldn't be any problem...? If the host behind a locked port starts sending on another vlan than where it got the first locked entry, another locked entry will occur, as the locked entries are MAC + vlan.> >> Besides the fid will be zero with vlan unaware afaik, and all with >> zero fid do not create locked entries. > > If by 0 you mean 1 (MV88E6XXX_FID_BRIDGED), then you are correct: ports > with FID 0 (MV88E6XXX_FID_STANDALONE) should not create locked FDB > entries, because they are, well, standalone and not bridged. > Again I don't exactly see the relevance though.