From: Matan Azrad <matan@mellanox.com>
To: Chas Williams <3chas3@gmail.com>
Cc: Declan Doherty <declan.doherty@intel.com>,
Radu Nicolau <radu.nicolau@intel.com>,
"dev@dpdk.org" <dev@dpdk.org>, Chas Williams <chas3@att.com>
Subject: Re: [dpdk-dev] [PATCH] net/bonding: propagate promiscous mode in mode 4
Date: Mon, 6 Aug 2018 17:46:11 +0000 [thread overview]
Message-ID: <AM0PR0502MB4019EA6E15B9E5A95B0680E8D2200@AM0PR0502MB4019.eurprd05.prod.outlook.com> (raw)
In-Reply-To: <CAG2-GkniLDiQ=ZzUDFfZoKuJ+UiWkQDAPiQnHRBSoPWpoQoEQw@mail.gmail.com>
Hi Chas
From: Chas Williams
>On Fri, Aug 3, 2018 at 1:47 AM Matan Azrad <mailto:matan@mellanox.com> wrote:
>Hi Chas
>
> From: Chas Williams [mailto:mailto:3chas3@gmail.com] On Thu, Aug 2, 2018 at 1:33
>> PM Matan Azrad <mailto:matan@mellanox.com> wrote:
>> >
>> > > I suggest to do it like next,
>> > > To add one more parameter for LACP which means how to configure the
>> > LACP MC group - lacp_mc_grp_conf:
>> > > 1. rte_flow.
>> > > 2. flow director.
>> > > 3. add_mac.
>> > > 3. set_mc_add_list
>> > > 4. allmulti
>> > > 5. promiscuous
>> > > Maybe more... or less :)
>> > >
>> > > By this way the user decides how to do it, if it's fail for a slave,
>> > > the salve
>> > should be rejected.
>> > > Conflict with another configuration(for example calling to
>> > > promiscuous
>> > disable while running LACP lacp_mc_grp_conf=5) should raise an error.
>> > >
>> > > What do you think?
>> > >
>> >
>> > Supporting an LACP mc group specific configuration does make sense,
>> > but I wonder if this could just be handled by default during slave add.
>> >
>> >
>> > 1 and 2 are essentially the same hardware filtering offload mode, and
>> > the other modes are irrelevant if this is enabled, it should not be
>> > possible to add the slave if the bond is configured for this mode, or
>> > possible to change the bond into this mode if an existing slave
>> > doesn't support it.
>>
>> >
>> > 3 should be the default expected behavior, but
>> > rte_eth_bond_slave_add() should fail if the slave being added doesn't
>> > support either adding the MAC to the slave or adding the LACP MC address.
>> >
>> > Then the user could try either rte_eth_allmulticast_enable() on the
>> > bond port and then try to add the slave again, which should fail if
>> > existing slave didn't support allmulticast or the add slave would fail
>> > again if the slave didn't support allmulticast and finally just call
>> > rte_eth_promiscuous_enable() on the bond and then try to re-add the
>> > that slave.
>> >
>> > but maybe having a explicit configuration parameter would be better.
>>
>> I don't sure you understand exactly what I’m suggesting here, again:
>> I suggest to add a new parameter to the LACP mode called
>> lacp_mc_grp_conf(or something else).
>> So, when the user configures LACP (mode 4) it must to configure the
>> lacp_mc_grp_conf parameter to one of the options I suggested.
>> This parameter is not per slave means the bond PMD will use the selected
>> option to configure the LACP MC group for all the slave ports.
>>
>> If one of the slaves doesn't support the selected option it should be rejected.
>> Conflicts should rais an error.
>>
>> I agree here. Yes, if a slave can't manage to subscribe to the multicast group,
>> an error should be raised. The only way for this to happen is that you don't
>> have promisc support which is the ultimate fallback.
>
>> The advantages are:
>> The user knows which option is better to synchronize with his application.
>> The user knows better than the bond PMD what is the slaves capabilities.
>> All the slaves are configured by the same way - consistent traffic.
>>
>>
>> It would be ideal if all the slaves would have the same features and
>> capabilities. There wasn't enforced before, so this would be a new restriction
>> that would be less flexible than what we currently have. That doesn't seem like
>> an improvement.
>
>> The bonding user probably doesn't care which mode is used.
>> The bonding user just wants bonding to work. He doesn't care about the details. If I am writing
>> an application with this proposed API, I need to make a list of adapters and
>> what they support (and keep this up to date as DPDK evolves). Ugh.
>
>The applications commonly know what are the nics capabilities they work with.
>
>I know at least an one big application which really suffering because the bond
>configures promiscuous in mode 4 without the application asking (it's considered there as a bug in dpdk).
>I think that providing another option will be better.
>
>I think providing another option will be better as well. However we disagree on the option.
>If the PMD has no other way to subscribe the multicast group, it has to use promiscuous mode.
Yes, it is true but there are a lot of other and better options, promiscuous is greedy! Should be the last alternative to use.
>Providing a list of options only makes life complicated for the developer and doesn't really
>make any difference in the end results.
A big different, for example:
Let's say the bonding groups 2 devices that support rte_flow.
The user don't want neither promiscuous nor all multicast, he just want to get it's mac traffic + LACP MC group traffic,(a realistic use case)
if he has an option to tell to the bond PMD, please use rte_flow to configure the specific LACP MC group it will be great.
Think how much work these applications should do in the current behavior.
> For instance, if the least common denominator between the two PMDs is promiscuous mode,
> you are going to be forced to run both in promiscuous mode
>instead of selecting the best mode for each PMD.
In this case promiscuous is better,
Using a different configuration is worst and against the bonding PMD principle to get a consistent traffic from the slaves.
So, if one uses allmulti and one uses promiscuous the application may get an inconsistent traffic
and it may trigger a lot of problems and complications for some applications.
>DPDK already has a promiscuous flag for the PMDs:
>
> RTE_FUNC_PTR_OR_RET(*dev->dev_ops->promiscuous_enable);
> (*dev->dev_ops->promiscuous_enable)(dev);
> dev->data->promiscuous = 1;
>
>So the bonding PMD already should be able to tell if it can safely propagate the enable/disable
>for promiscuous mode. However, for 802.3ad, that is always going to be a no until we add
>some other way to subscribe to the multicast group.
>
>
>So, providing to applications a list of options will ease the application life and may be big improvement
>while not hurting the current behavior.
>
>Matan
>
next prev parent reply other threads:[~2018-08-06 17:46 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-08-01 12:57 Radu Nicolau
2018-08-01 13:34 ` Chas Williams
2018-08-01 13:47 ` Radu Nicolau
2018-08-01 15:35 ` Chas Williams
2018-08-02 6:35 ` Matan Azrad
2018-08-02 13:23 ` Doherty, Declan
2018-08-02 14:24 ` Matan Azrad
2018-08-02 15:53 ` Doherty, Declan
2018-08-02 17:33 ` Matan Azrad
2018-08-02 21:10 ` Chas Williams
2018-08-03 5:47 ` Matan Azrad
2018-08-06 16:00 ` Chas Williams
2018-08-06 17:46 ` Matan Azrad [this message]
2018-08-06 19:01 ` Chas Williams
2018-08-06 19:35 ` Matan Azrad
2018-09-11 3:31 ` Chas Williams
2018-09-12 5:56 ` Matan Azrad
2018-09-13 15:14 ` Chas Williams
2018-09-13 15:40 ` Matan Azrad
2018-09-16 16:14 ` Chas Williams
2018-09-17 6:29 ` Matan Azrad
2018-08-02 21:05 ` Chas Williams
2018-08-02 9:57 ` [dpdk-dev] [PATCH v2 1/2] net/bonding: in 8023ad mode enable all multicast rather than promiscuous Radu Nicolau
2018-08-02 9:57 ` [dpdk-dev] [PATCH v2 2/2] net/bonding: propagate promiscous mode in mode 4 Radu Nicolau
2018-08-02 10:21 ` [dpdk-dev] [PATCH v2 1/2] net/bonding: in 8023ad mode enable all multicast rather than promiscuous Matan Azrad
2018-08-02 21:16 ` Chas Williams
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=AM0PR0502MB4019EA6E15B9E5A95B0680E8D2200@AM0PR0502MB4019.eurprd05.prod.outlook.com \
--to=matan@mellanox.com \
--cc=3chas3@gmail.com \
--cc=chas3@att.com \
--cc=declan.doherty@intel.com \
--cc=dev@dpdk.org \
--cc=radu.nicolau@intel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).