All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Allan W. Nielsen" <allan.nielsen@microchip.com>
To: "Jürgen Lambrecht" <j.lambrecht@televic.com>
Cc: Andrew Lunn <andrew@lunn.ch>,
	Horatiu Vultur <horatiu.vultur@microchip.com>,
	<linux-kernel@vger.kernel.org>, <netdev@vger.kernel.org>,
	<bridge@lists.linux-foundation.org>, <jiri@resnulli.us>,
	<ivecera@redhat.com>, <davem@davemloft.net>,
	<roopa@cumulusnetworks.com>, <nikolay@cumulusnetworks.com>,
	<anirudh.venkataramanan@intel.com>, <olteanv@gmail.com>,
	<jeffrey.t.kirsher@intel.com>, <UNGLinuxDriver@microchip.com>
Subject: Re: [RFC net-next v3 06/10] net: bridge: mrp: switchdev: Extend switchdev API to offload MRP
Date: Tue, 28 Jan 2020 10:58:23 +0100	[thread overview]
Message-ID: <20200128095823.limui36nes7e2hqh@lx-anielsen.microsemi.net> (raw)
In-Reply-To: <8561814d-bfae-5e23-b0e8-a0e3adf800b4@televic.com>

On 27.01.2020 15:39, Jürgen Lambrecht wrote:
>EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
>
>On 1/27/20 1:27 PM, Allan W. Nielsen wrote:
>> Hi Jürgen,
>>
>> On 27.01.2020 12:29, Jürgen Lambrecht wrote:
>>> EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
>>>
>>> On 1/26/20 4:59 PM, Andrew Lunn wrote:
>>>> Given the design of the protocol, if the hardware decides the OS etc
>>>> is dead, it should stop sending MRP_TEST frames and unblock the ports.
>>>> If then becomes a 'dumb switch', and for a short time there will be a
>>>> broadcast storm. Hopefully one of the other nodes will then take over
>>>> the role and block a port.
>This can probably be a configuration option in the hardware, how to fall-back.
>>
>>> In my experience a closed loop should never happen. It can make
>>> software crash and give other problems.  An other node should first
>>> take over before unblocking the ring ports. (If this is possible - I
>>> only follow this discussion halfly)
>>>
>>> What is your opinion?
>> Having loops in the network is never a good thing - but to be honest, I
>> think it is more important that we ensure the design can survive and
>> recover from loops.
>Indeed
>>
>> With the current design, it will be really hard to void loops when the
>> network boot. MRP will actually start with the ports blocked, but they
>> will be unblocked in the period from when the bridge is created and
>> until MRP is enabled. If we want to change this (which I'm not too keen
>> on), then we need to be able to block the ports while the bridge is
>> down.
>Our ring network is part of a bigger network. Loops are really not allowed.
That is understood, and should be avoided. But I assume that switches
which crashes is not allowed either ;-)

We will consider if we somehow can block the ports before/after a
user-space protocol kicks in. I can not promise anything, but we will
see what can be done.

>> And even if we do this, then we can not guarantee to avoid loops. Lets
>> assume we have a small ring with just 2 nodes: a MRM and a MRC. Lets
>> assume the MRM boots first. It will unblock both ports as the ring is
>> open. Now the MRC boots, and make the ring closed, and create a loop.
>> This will take some time (milliseconds) before the MRM notice this and
>> block one of the ports.
>In my view there is a bring-up and tear-down module needed. I don't
>know if it should be part of MRP or not? Probably not, so something on
>top of the mrp daemon.
If we need this kind of policies, then I agree it should be on top of or
out-side the user-space MRP daemon.

>> But while we are at this topic, we need to add some functionality to
>> the user-space application such that it can set the priority of the MRP
>> frames. We will get that fixed.
>Indeed! In my old design I had to give high priority, else the loop was
>wrongly closed at high network load.
Yes, I'm not surprised to hear that.

>I guess you mean the priority in the VLAN header?
>I think to remember one talked about the bride code being VLAN-agnostic.
Yes, if it has a VLAN header (which is optional). But even without the
VLAN header these frames needs to be classified to a high priority
queue.

>>> (FYI: I made that mistake once doing a proof-of-concept ring design:
>>> during testing, when a "broken" Ethernet cable was "fixed" I had for a
>>> short time a loop, and then it happened often that that port of the
>>> (Marvell 88E6063) switch was blocked.  (To unblock, only solution was
>>> to bring that port down and up again, and then all "lost" packets came
>>> out in a burst.) That problem was caused by flow control (with pause
>>> frames), and disabling flow control fixed it, but flow-control is
>>> default on as far as I know.)
>> I see. It could be fun to see if what we have proposed so far will with
>> with such a switch.
>
>Depending on the projects I could work on it later this year (or only next year or not..)
Sounds good - no hurry.

/Allan

WARNING: multiple messages have this Message-ID (diff)
From: "Allan W. Nielsen" <allan.nielsen@microchip.com>
To: "Jürgen Lambrecht" <j.lambrecht@televic.com>
Cc: ivecera@redhat.com, Andrew Lunn <andrew@lunn.ch>,
	jiri@resnulli.us, nikolay@cumulusnetworks.com,
	netdev@vger.kernel.org, roopa@cumulusnetworks.com,
	bridge@lists.linux-foundation.org, linux-kernel@vger.kernel.org,
	davem@davemloft.net, UNGLinuxDriver@microchip.com,
	anirudh.venkataramanan@intel.com, jeffrey.t.kirsher@intel.com,
	olteanv@gmail.com, Horatiu Vultur <horatiu.vultur@microchip.com>
Subject: Re: [Bridge] [RFC net-next v3 06/10] net: bridge: mrp: switchdev: Extend switchdev API to offload MRP
Date: Tue, 28 Jan 2020 10:58:23 +0100	[thread overview]
Message-ID: <20200128095823.limui36nes7e2hqh@lx-anielsen.microsemi.net> (raw)
In-Reply-To: <8561814d-bfae-5e23-b0e8-a0e3adf800b4@televic.com>

On 27.01.2020 15:39, Jürgen Lambrecht wrote:
>EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
>
>On 1/27/20 1:27 PM, Allan W. Nielsen wrote:
>> Hi Jürgen,
>>
>> On 27.01.2020 12:29, Jürgen Lambrecht wrote:
>>> EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
>>>
>>> On 1/26/20 4:59 PM, Andrew Lunn wrote:
>>>> Given the design of the protocol, if the hardware decides the OS etc
>>>> is dead, it should stop sending MRP_TEST frames and unblock the ports.
>>>> If then becomes a 'dumb switch', and for a short time there will be a
>>>> broadcast storm. Hopefully one of the other nodes will then take over
>>>> the role and block a port.
>This can probably be a configuration option in the hardware, how to fall-back.
>>
>>> In my experience a closed loop should never happen. It can make
>>> software crash and give other problems.  An other node should first
>>> take over before unblocking the ring ports. (If this is possible - I
>>> only follow this discussion halfly)
>>>
>>> What is your opinion?
>> Having loops in the network is never a good thing - but to be honest, I
>> think it is more important that we ensure the design can survive and
>> recover from loops.
>Indeed
>>
>> With the current design, it will be really hard to void loops when the
>> network boot. MRP will actually start with the ports blocked, but they
>> will be unblocked in the period from when the bridge is created and
>> until MRP is enabled. If we want to change this (which I'm not too keen
>> on), then we need to be able to block the ports while the bridge is
>> down.
>Our ring network is part of a bigger network. Loops are really not allowed.
That is understood, and should be avoided. But I assume that switches
which crashes is not allowed either ;-)

We will consider if we somehow can block the ports before/after a
user-space protocol kicks in. I can not promise anything, but we will
see what can be done.

>> And even if we do this, then we can not guarantee to avoid loops. Lets
>> assume we have a small ring with just 2 nodes: a MRM and a MRC. Lets
>> assume the MRM boots first. It will unblock both ports as the ring is
>> open. Now the MRC boots, and make the ring closed, and create a loop.
>> This will take some time (milliseconds) before the MRM notice this and
>> block one of the ports.
>In my view there is a bring-up and tear-down module needed. I don't
>know if it should be part of MRP or not? Probably not, so something on
>top of the mrp daemon.
If we need this kind of policies, then I agree it should be on top of or
out-side the user-space MRP daemon.

>> But while we are at this topic, we need to add some functionality to
>> the user-space application such that it can set the priority of the MRP
>> frames. We will get that fixed.
>Indeed! In my old design I had to give high priority, else the loop was
>wrongly closed at high network load.
Yes, I'm not surprised to hear that.

>I guess you mean the priority in the VLAN header?
>I think to remember one talked about the bride code being VLAN-agnostic.
Yes, if it has a VLAN header (which is optional). But even without the
VLAN header these frames needs to be classified to a high priority
queue.

>>> (FYI: I made that mistake once doing a proof-of-concept ring design:
>>> during testing, when a "broken" Ethernet cable was "fixed" I had for a
>>> short time a loop, and then it happened often that that port of the
>>> (Marvell 88E6063) switch was blocked.  (To unblock, only solution was
>>> to bring that port down and up again, and then all "lost" packets came
>>> out in a burst.) That problem was caused by flow control (with pause
>>> frames), and disabling flow control fixed it, but flow-control is
>>> default on as far as I know.)
>> I see. It could be fun to see if what we have proposed so far will with
>> with such a switch.
>
>Depending on the projects I could work on it later this year (or only next year or not..)
Sounds good - no hurry.

/Allan

  reply	other threads:[~2020-01-28  9:58 UTC|newest]

Thread overview: 114+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-24 16:18 [RFC net-next v3 00/10] net: bridge: mrp: Add support for Media Redundancy Protocol (MRP) Horatiu Vultur
2020-01-24 16:18 ` [Bridge] " Horatiu Vultur
2020-01-24 16:18 ` [RFC net-next v3 01/10] net: bridge: mrp: Expose mrp attributes Horatiu Vultur
2020-01-24 16:18   ` [Bridge] " Horatiu Vultur
2020-01-24 16:18 ` [RFC net-next v3 02/10] net: bridge: mrp: Expose function br_mrp_port_open Horatiu Vultur
2020-01-24 16:18   ` [Bridge] " Horatiu Vultur
2020-01-24 17:37   ` Andrew Lunn
2020-01-24 17:37     ` [Bridge] " Andrew Lunn
2020-01-25 11:29     ` Horatiu Vultur
2020-01-25 11:29       ` [Bridge] " Horatiu Vultur
2020-01-24 16:18 ` [RFC net-next v3 03/10] net: bridge: mrp: Add MRP interface used by netlink Horatiu Vultur
2020-01-24 16:18   ` [Bridge] " Horatiu Vultur
2020-01-24 17:43   ` Andrew Lunn
2020-01-24 17:43     ` [Bridge] " Andrew Lunn
2020-01-25 11:37     ` Horatiu Vultur
2020-01-25 11:37       ` [Bridge] " Horatiu Vultur
2020-01-25 15:20       ` Andrew Lunn
2020-01-25 15:20         ` [Bridge] " Andrew Lunn
2020-01-25 19:16         ` Allan W. Nielsen
2020-01-25 19:16           ` [Bridge] " Allan W. Nielsen
2020-01-26 13:28           ` Horatiu Vultur
2020-01-26 13:28             ` [Bridge] " Horatiu Vultur
2020-01-26 15:39             ` Andrew Lunn
2020-01-26 15:39               ` [Bridge] " Andrew Lunn
2020-02-20  9:08             ` Nikolay Aleksandrov
2020-02-20  9:08               ` [Bridge] " Nikolay Aleksandrov
2020-02-20 13:00               ` Allan W. Nielsen
2020-02-20 13:00                 ` [Bridge] " Allan W. Nielsen
2020-01-24 16:18 ` [RFC net-next v3 04/10] net: bridge: mrp: Add generic netlink interface to configure MRP Horatiu Vultur
2020-01-24 16:18   ` [Bridge] " Horatiu Vultur
2020-01-25 15:34   ` Andrew Lunn
2020-01-25 15:34     ` [Bridge] " Andrew Lunn
2020-01-25 19:28     ` Allan W. Nielsen
2020-01-25 19:28       ` [Bridge] " Allan W. Nielsen
2020-01-26 13:39       ` Horatiu Vultur
2020-01-26 13:39         ` [Bridge] " Horatiu Vultur
2020-01-27 15:39     ` Jürgen Lambrecht
2020-01-24 16:18 ` [RFC net-next v3 05/10] net: bridge: mrp: Update MRP interface to add switchdev support Horatiu Vultur
2020-01-24 16:18   ` [Bridge] " Horatiu Vultur
2020-01-24 16:18 ` [RFC net-next v3 06/10] net: bridge: mrp: switchdev: Extend switchdev API to offload MRP Horatiu Vultur
2020-01-24 16:18   ` [Bridge] " Horatiu Vultur
2020-01-25 16:35   ` Andrew Lunn
2020-01-25 16:35     ` [Bridge] " Andrew Lunn
2020-01-26 13:22     ` Horatiu Vultur
2020-01-26 13:22       ` [Bridge] " Horatiu Vultur
2020-01-26 15:59       ` Andrew Lunn
2020-01-26 15:59         ` [Bridge] " Andrew Lunn
2020-01-27 11:04         ` Allan W. Nielsen
2020-01-27 11:04           ` [Bridge] " Allan W. Nielsen
2020-01-27 14:26           ` Jürgen Lambrecht
2020-01-27 15:06             ` Andrew Lunn
2020-01-27 15:06               ` [Bridge] " Andrew Lunn
2020-01-27 14:41           ` Jürgen Lambrecht
2020-01-27 14:41             ` [Bridge] " Jürgen Lambrecht
2020-01-28  9:50           ` Jürgen Lambrecht
2020-01-27 11:29         ` Jürgen Lambrecht
2020-01-27 11:29           ` [Bridge] " Jürgen Lambrecht
2020-01-27 12:27           ` Allan W. Nielsen
2020-01-27 12:27             ` [Bridge] " Allan W. Nielsen
2020-01-27 14:39             ` Jürgen Lambrecht
2020-01-27 14:39               ` [Bridge] " Jürgen Lambrecht
2020-01-28  9:58               ` Allan W. Nielsen [this message]
2020-01-28  9:58                 ` Allan W. Nielsen
2020-01-24 16:18 ` [RFC net-next v3 07/10] net: bridge: mrp: switchdev: Implement MRP API for switchdev Horatiu Vultur
2020-01-24 16:18   ` [Bridge] " Horatiu Vultur
2020-01-24 16:18 ` [RFC net-next v3 08/10] net: bridge: mrp: Connect MRP api with the switchev API Horatiu Vultur
2020-01-24 16:18   ` [Bridge] " Horatiu Vultur
2020-01-24 16:18 ` [RFC net-next v3 09/10] net: bridge: mrp: Integrate MRP into the bridge Horatiu Vultur
2020-01-24 16:18   ` [Bridge] " Horatiu Vultur
2020-01-25 15:42   ` Andrew Lunn
2020-01-25 15:42     ` [Bridge] " Andrew Lunn
2020-01-26 12:49     ` Horatiu Vultur
2020-01-26 12:49       ` [Bridge] " Horatiu Vultur
2020-01-25 16:16   ` Andrew Lunn
2020-01-25 16:16     ` [Bridge] " Andrew Lunn
2020-01-26 13:01     ` Horatiu Vultur
2020-01-26 13:01       ` [Bridge] " Horatiu Vultur
2020-01-26 17:12       ` Andrew Lunn
2020-01-26 17:12         ` [Bridge] " Andrew Lunn
2020-01-27 10:57         ` Allan W. Nielsen
2020-01-27 10:57           ` [Bridge] " Allan W. Nielsen
2020-01-27 13:02           ` Horatiu Vultur
2020-01-27 13:02             ` [Bridge] " Horatiu Vultur
2020-01-27 13:40           ` Andrew Lunn
2020-01-27 13:40             ` [Bridge] " Andrew Lunn
2020-01-27 15:33             ` Jürgen Lambrecht
2020-01-28  9:56             ` Jürgen Lambrecht
2020-01-28  9:56               ` [Bridge] " Jürgen Lambrecht
2020-01-28 10:17             ` Allan W. Nielsen
2020-01-28 10:17               ` [Bridge] " Allan W. Nielsen
2020-01-24 16:18 ` [RFC net-next v3 10/10] net: bridge: mrp: Update Kconfig and Makefile Horatiu Vultur
2020-01-24 16:18   ` [Bridge] " Horatiu Vultur
2020-01-24 20:34 ` [RFC net-next v3 00/10] net: bridge: mrp: Add support for Media Redundancy Protocol (MRP) Allan W. Nielsen
2020-01-24 20:34   ` [Bridge] " Allan W. Nielsen
2020-01-24 21:05   ` Vinicius Costa Gomes
2020-01-24 21:05     ` [Bridge] " Vinicius Costa Gomes
2020-01-25  9:44     ` Allan W. Nielsen
2020-01-25  9:44       ` [Bridge] " Allan W. Nielsen
2020-01-25 16:23       ` Andrew Lunn
2020-01-25 16:23         ` [Bridge] " Andrew Lunn
2020-01-25 19:12         ` Allan W. Nielsen
2020-01-25 19:12           ` [Bridge] " Allan W. Nielsen
2020-01-25 21:18       ` Vinicius Costa Gomes
2020-01-25 21:18         ` [Bridge] " Vinicius Costa Gomes
2020-01-28 10:35         ` Jürgen Lambrecht
2020-01-28 10:35           ` [Bridge] " Jürgen Lambrecht
2020-02-18 12:18 ` Allan W. Nielsen
2020-02-18 12:18   ` [Bridge] " Allan W. Nielsen
2020-02-18 16:55   ` Jakub Kicinski
2020-02-18 16:55     ` [Bridge] " Jakub Kicinski
2020-02-20 10:48   ` Nikolay Aleksandrov
2020-02-20 10:48     ` [Bridge] " Nikolay Aleksandrov
2020-02-20 12:58     ` Allan W. Nielsen
2020-02-20 12:58       ` [Bridge] " Allan W. Nielsen

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=20200128095823.limui36nes7e2hqh@lx-anielsen.microsemi.net \
    --to=allan.nielsen@microchip.com \
    --cc=UNGLinuxDriver@microchip.com \
    --cc=andrew@lunn.ch \
    --cc=anirudh.venkataramanan@intel.com \
    --cc=bridge@lists.linux-foundation.org \
    --cc=davem@davemloft.net \
    --cc=horatiu.vultur@microchip.com \
    --cc=ivecera@redhat.com \
    --cc=j.lambrecht@televic.com \
    --cc=jeffrey.t.kirsher@intel.com \
    --cc=jiri@resnulli.us \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=nikolay@cumulusnetworks.com \
    --cc=olteanv@gmail.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.