All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Allan W. Nielsen" <allan.nielsen@microchip.com>
To: Andrew Lunn <andrew@lunn.ch>
Cc: Horatiu Vultur <horatiu.vultur@microchip.com>,
	Nikolay Aleksandrov <nikolay@cumulusnetworks.com>,
	<roopa@cumulusnetworks.com>, <davem@davemloft.net>,
	<bridge@lists.linux-foundation.org>, <netdev@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] net: bridge: Allow bridge to joing multicast groups
Date: Sun, 28 Jul 2019 21:15:59 +0200	[thread overview]
Message-ID: <20190728191558.zuopgfqza2iz5d5b@lx-anielsen.microsemi.net> (raw)
In-Reply-To: <20190727030223.GA29731@lunn.ch>

The 07/27/2019 05:02, Andrew Lunn wrote:
> > As you properly guessed, this model is quite different from what we are used to.
> 
> Yes, it takes a while to get the idea that the hardware is just an
> accelerator for what the Linux stack can already do. And if the switch
> cannot do some feature, pass the frame to Linux so it can handle it.
This is understood, and not that different from what we are used to.

The surprise was to make all multicast traffic to go to the CPU.

> You need to keep in mind that there could be other ports in the bridge
> than switch ports, and those ports might be interested in the
> multicast traffic. Hence the CPU needs to see the traffic.
This is a good argument, but I was under the impression that not all HW/drivers
supports foreign interfaces (see ocelot_netdevice_dev_check and
mlxsw_sp_port_dev_check).

> But IGMP snooping can be used to optimise this.
Yes, IGMP snooping can limit the multicast storm of multicast IP traffic, but
not for L2 non-IP multicast traffic.

We could really use something similar for non-IP multicast MAC addresses.

Trying to get back to the original problem:

We have a network which implements the ODVA/DLR ring protocol. This protocol
sends out a beacon frame as often as every 3 us (as far as I recall, default I
believe is 400 us) to this MAC address: 01:21:6C:00:00:01.

Try take a quick look at slide 10 in [1].

If we assume that the SwitchDev driver implemented such that all multicast
traffic goes to the CPU, then we should really have a way to install a HW
offload path in the silicon, such that these packets does not go to the CPU (as
they are known not to be use full, and a frame every 3 us is a significant load
on small DMA connections and CPU resources).

If we assume that the SwitchDev driver implemented such that only "needed"
multicast packets goes to the CPU, then we need a way to get these packets in
case we want to implement the DLR protocol.

I'm sure that both models can work, and I do not think that this is the main
issue here.

Our initial attempt was to allow install static L2-MAC entries and append
multiple ports to such an entry in the MAC table. This was rejected, for several
good reasons it seems. But I'm not sure it was clear what we wanted to achieve,
and why we find it to be important. Hopefully this is clear with a real world
use-case.

Any hints or ideas on what would be a better way to solve this problems will be
much appreciated.

/Allan

[1] https://www.odva.org/Portals/0/Library/Conference/2017-ODVA-Conference_Woods_High%20Availability_Guidelines%20for%20Use%20of%20DLR%20in%20EtherNetIP%20Networks_FINAL%20PPT.pdf

WARNING: multiple messages have this Message-ID (diff)
From: "Allan W. Nielsen" <allan.nielsen@microchip.com>
To: Andrew Lunn <andrew@lunn.ch>
Cc: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>,
	netdev@vger.kernel.org, roopa@cumulusnetworks.com,
	bridge@lists.linux-foundation.org, linux-kernel@vger.kernel.org,
	davem@davemloft.net,
	Horatiu Vultur <horatiu.vultur@microchip.com>
Subject: Re: [Bridge] [PATCH] net: bridge: Allow bridge to joing multicast groups
Date: Sun, 28 Jul 2019 21:15:59 +0200	[thread overview]
Message-ID: <20190728191558.zuopgfqza2iz5d5b@lx-anielsen.microsemi.net> (raw)
In-Reply-To: <20190727030223.GA29731@lunn.ch>

The 07/27/2019 05:02, Andrew Lunn wrote:
> > As you properly guessed, this model is quite different from what we are used to.
> 
> Yes, it takes a while to get the idea that the hardware is just an
> accelerator for what the Linux stack can already do. And if the switch
> cannot do some feature, pass the frame to Linux so it can handle it.
This is understood, and not that different from what we are used to.

The surprise was to make all multicast traffic to go to the CPU.

> You need to keep in mind that there could be other ports in the bridge
> than switch ports, and those ports might be interested in the
> multicast traffic. Hence the CPU needs to see the traffic.
This is a good argument, but I was under the impression that not all HW/drivers
supports foreign interfaces (see ocelot_netdevice_dev_check and
mlxsw_sp_port_dev_check).

> But IGMP snooping can be used to optimise this.
Yes, IGMP snooping can limit the multicast storm of multicast IP traffic, but
not for L2 non-IP multicast traffic.

We could really use something similar for non-IP multicast MAC addresses.

Trying to get back to the original problem:

We have a network which implements the ODVA/DLR ring protocol. This protocol
sends out a beacon frame as often as every 3 us (as far as I recall, default I
believe is 400 us) to this MAC address: 01:21:6C:00:00:01.

Try take a quick look at slide 10 in [1].

If we assume that the SwitchDev driver implemented such that all multicast
traffic goes to the CPU, then we should really have a way to install a HW
offload path in the silicon, such that these packets does not go to the CPU (as
they are known not to be use full, and a frame every 3 us is a significant load
on small DMA connections and CPU resources).

If we assume that the SwitchDev driver implemented such that only "needed"
multicast packets goes to the CPU, then we need a way to get these packets in
case we want to implement the DLR protocol.

I'm sure that both models can work, and I do not think that this is the main
issue here.

Our initial attempt was to allow install static L2-MAC entries and append
multiple ports to such an entry in the MAC table. This was rejected, for several
good reasons it seems. But I'm not sure it was clear what we wanted to achieve,
and why we find it to be important. Hopefully this is clear with a real world
use-case.

Any hints or ideas on what would be a better way to solve this problems will be
much appreciated.

/Allan

[1] https://www.odva.org/Portals/0/Library/Conference/2017-ODVA-Conference_Woods_High%20Availability_Guidelines%20for%20Use%20of%20DLR%20in%20EtherNetIP%20Networks_FINAL%20PPT.pdf

  reply	other threads:[~2019-07-28 19:16 UTC|newest]

Thread overview: 86+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-07-25 11:44 [PATCH] net: bridge: Allow bridge to joing multicast groups Horatiu Vultur
2019-07-25 11:44 ` [Bridge] " Horatiu Vultur
2019-07-25 13:06 ` Nikolay Aleksandrov
2019-07-25 13:06   ` [Bridge] " Nikolay Aleksandrov
2019-07-25 13:21   ` Nikolay Aleksandrov
2019-07-25 13:21     ` [Bridge] " Nikolay Aleksandrov
2019-07-25 14:21     ` Horatiu Vultur
2019-07-25 14:21       ` [Bridge] " Horatiu Vultur
2019-07-26  8:41       ` Nikolay Aleksandrov
2019-07-26  8:41         ` [Bridge] " Nikolay Aleksandrov
2019-07-26  9:26         ` Nikolay Aleksandrov
2019-07-26  9:26           ` [Bridge] " Nikolay Aleksandrov
2019-07-26 12:02           ` Horatiu Vultur
2019-07-26 12:02             ` [Bridge] " Horatiu Vultur
2019-07-26 12:31             ` Nikolay Aleksandrov
2019-07-26 12:31               ` [Bridge] " Nikolay Aleksandrov
2019-07-29 12:14               ` Allan W. Nielsen
2019-07-29 12:14                 ` [Bridge] " Allan W. Nielsen
2019-07-29 12:22                 ` Nikolay Aleksandrov
2019-07-29 12:22                   ` [Bridge] " Nikolay Aleksandrov
2019-07-29 12:50                   ` Nikolay Aleksandrov
2019-07-29 12:50                     ` [Bridge] " Nikolay Aleksandrov
2019-07-29 13:14                   ` Allan W. Nielsen
2019-07-29 13:14                     ` [Bridge] " Allan W. Nielsen
2019-07-29 13:42                     ` Nikolay Aleksandrov
2019-07-29 13:42                       ` [Bridge] " Nikolay Aleksandrov
2019-07-29 13:52                       ` Allan W. Nielsen
2019-07-29 13:52                         ` [Bridge] " Allan W. Nielsen
2019-07-29 14:21                         ` Nikolay Aleksandrov
2019-07-29 14:21                           ` [Bridge] " Nikolay Aleksandrov
2019-07-29 14:35                           ` Allan W. Nielsen
2019-07-29 14:35                             ` [Bridge] " Allan W. Nielsen
2019-07-29 17:51                             ` Ido Schimmel
2019-07-29 17:51                               ` [Bridge] " Ido Schimmel
2019-07-30  6:27                               ` Allan W. Nielsen
2019-07-30  6:27                                 ` [Bridge] " Allan W. Nielsen
2019-07-30  7:06                                 ` Ido Schimmel
2019-07-30  7:06                                   ` [Bridge] " Ido Schimmel
2019-07-30  8:30                                   ` Allan W. Nielsen
2019-07-30  8:30                                     ` [Bridge] " Allan W. Nielsen
2019-07-30  8:58                                     ` Nikolay Aleksandrov
2019-07-30  8:58                                       ` [Bridge] " Nikolay Aleksandrov
2019-07-30  9:21                                       ` Allan W. Nielsen
2019-07-30  9:21                                         ` [Bridge] " Allan W. Nielsen
2019-07-30  9:55                                         ` Nikolay Aleksandrov
2019-07-30  9:55                                           ` [Bridge] " Nikolay Aleksandrov
2019-07-30 11:23                                           ` Allan W. Nielsen
2019-07-30 11:23                                             ` [Bridge] " Allan W. Nielsen
2019-07-30 10:04                                     ` Ido Schimmel
2019-07-30 10:04                                       ` [Bridge] " Ido Schimmel
2019-07-30 12:19                                       ` Allan W. Nielsen
2019-07-30 12:19                                         ` [Bridge] " Allan W. Nielsen
2019-07-30 14:34                                 ` Andrew Lunn
2019-07-30 14:34                                   ` [Bridge] " Andrew Lunn
2019-07-30 19:00                                   ` Allan W. Nielsen
2019-07-30 19:00                                     ` [Bridge] " Allan W. Nielsen
2019-07-31  3:31                                     ` Andrew Lunn
2019-07-31  3:31                                       ` [Bridge] " Andrew Lunn
2019-07-31  8:01                                       ` Allan W. Nielsen
2019-07-31  8:01                                         ` [Bridge] " Allan W. Nielsen
2019-07-31 13:45                                         ` Andrew Lunn
2019-07-31 13:45                                           ` [Bridge] " Andrew Lunn
2019-07-31 19:38                                           ` Allan W. Nielsen
2019-07-31 19:38                                             ` [Bridge] " Allan W. Nielsen
2019-08-01 14:22               ` Allan W. Nielsen
2019-08-01 14:22                 ` [Bridge] " Allan W. Nielsen
2019-07-26 13:46             ` Andrew Lunn
2019-07-26 13:46               ` [Bridge] " Andrew Lunn
2019-07-26 19:50               ` Allan W. Nielsen
2019-07-26 19:50                 ` [Bridge] " Allan W. Nielsen
2019-07-27  3:02                 ` Andrew Lunn
2019-07-27  3:02                   ` [Bridge] " Andrew Lunn
2019-07-28 19:15                   ` Allan W. Nielsen [this message]
2019-07-28 19:15                     ` Allan W. Nielsen
2019-07-28 23:07                     ` Andrew Lunn
2019-07-28 23:07                       ` [Bridge] " Andrew Lunn
2019-07-29  6:09                     ` Ido Schimmel
2019-07-29  6:09                       ` [Bridge] " Ido Schimmel
2019-07-29 12:43                       ` Allan W. Nielsen
2019-07-29 12:43                         ` [Bridge] " Allan W. Nielsen
2019-08-01 19:17 ` Vivien Didelot
2019-08-01 19:17   ` [Bridge] " Vivien Didelot
2019-08-01 19:48   ` Horatiu Vultur
2019-08-01 19:48     ` [Bridge] " Horatiu Vultur
2019-08-01 20:08     ` Vivien Didelot
2019-08-01 20:08       ` [Bridge] " Vivien Didelot

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=20190728191558.zuopgfqza2iz5d5b@lx-anielsen.microsemi.net \
    --to=allan.nielsen@microchip.com \
    --cc=andrew@lunn.ch \
    --cc=bridge@lists.linux-foundation.org \
    --cc=davem@davemloft.net \
    --cc=horatiu.vultur@microchip.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=nikolay@cumulusnetworks.com \
    --cc=roopa@cumulusnetworks.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 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.