From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <3chas3@gmail.com> Received: from mail-io1-f65.google.com (mail-io1-f65.google.com [209.85.166.65]) by dpdk.org (Postfix) with ESMTP id D2043199AE for ; Thu, 13 Sep 2018 17:14:49 +0200 (CEST) Received: by mail-io1-f65.google.com with SMTP id q4-v6so3430285iob.8 for ; Thu, 13 Sep 2018 08:14:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:sender:from:date:message-id :subject:to:cc:content-transfer-encoding; bh=BPyJGhueXF4VK2G3fMbqS9+nMG4GelijGwAoIIOOTjA=; b=EsReIWYZHO3eGgzaVGoRot5kZe7CmI9Jyx+ta10s6+i8Vh+wrRb+fEVH9/4kQGrFBM ltYQR5032fAFhqGBDA0PGvLnBJhVm2WlmgsYlsoxHS/JVEk+P9W52ewQiLnoHYlBUePw XlF1Vf024M8HYyDgJsS0nmmf6pK8IR9FPeCMAtgIS1rX2/n33/OFuJIZ5/sMWqNz5gjK UdpcovqxkdVMO2Mx9e3YZF2AgIY7z4cWMKFGnA/5r1bN/CjQvGJrZoPhGuQ+vozO2ebV I7F05kFIn/lDyBzn/vmx6gpZSwIPh5VaHdVXRXdwBFvk+n6G5zP4JY54+4fN1O8Yv1Fu sA1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:sender:from :date:message-id:subject:to:cc:content-transfer-encoding; bh=BPyJGhueXF4VK2G3fMbqS9+nMG4GelijGwAoIIOOTjA=; b=ns4bft65Enm8f8RZOAdCKgyQT7fPPo//QZePsfosFK1pkXkzG+zNlEZjdi4Ka3LHhC pqQK7eQmnkCk2L2j8Fky79Ljs4RZXdhtmzvpHRQzBoXtNwCxFFJvq2Trkt2myvhEA9ds //GtOY0KcLJd1evlYWj4HVRiUWYukogPqPSK0WyzBG+0zvaSdpPYu7m68WBzV+oFmOg5 IIOajjbpQeUHx7y4grpYqG4jF1MeJ7iQfDZbrnslgcOC4khd8Cl+WDxawV/3ZNRNgO0/ kjW0yBlclFUyRqvk21VSdo6Oqp3vj4Y0eEu2l/mzh1TuAeas1ZTS/v238TWuo8sAfuAM OFzQ== X-Gm-Message-State: APzg51BNrgmJTCYIEQn/AHLFkIy/Jg1f7G9KQgKNSFmaXXvqrkfzVItA siuGANgO4S5lJcr83Sfab/1P2wK/Mo5N5bRGRE8= X-Google-Smtp-Source: ANB0VdbU6TI2yL16VdOqyGjdliLiafltHyBKcyEGlGiHXkcv4zcEmQ9LNTQJFhVH/p0IyF5wWfHRlc+n9K/AwRHiO0A= X-Received: by 2002:a6b:9704:: with SMTP id z4-v6mr6615704iod.110.1536851689082; Thu, 13 Sep 2018 08:14:49 -0700 (PDT) MIME-Version: 1.0 References: <1533128278-4685-1-git-send-email-radu.nicolau@intel.com> <2eac631f-1402-67b5-04de-1ce161cfcf92@intel.com> <017918fc-70dc-e6d3-6e9f-35bf9bd73fc3@intel.com> In-Reply-To: Sender: chasmosaurus@gmail.com X-Google-Sender-Delegation: chasmosaurus@gmail.com From: Chas Williams <3chas3@gmail.com> Date: Thu, 13 Sep 2018 11:14:37 -0400 X-Google-Sender-Auth: Td52qKO3OfnYouJF-T4NpmVD_X4 Message-ID: To: Matan Azrad Cc: Declan Doherty , Radu Nicolau , dev@dpdk.org, Chas Williams Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Subject: Re: [dpdk-dev] [PATCH] net/bonding: propagate promiscous mode in mode 4 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 13 Sep 2018 15:14:50 -0000 On Wed, Sep 12, 2018 at 1:56 AM Matan Azrad wrote: > > Hi Chas > > From: Chas Williams > > On Mon, Aug 6, 2018 at 3:35 PM Matan Azrad > > wrote: > > > > > > > > > Hi Chas > > > > > > From: Chas Williams > > > >On Mon, Aug 6, 2018 at 1:46 PM Matan Azrad > > wrote: > > > >Hi Chas > > > > > > > >From: Chas Williams > > > >>On Fri, Aug 3, 2018 at 1:47 AM Matan Azrad > > wrote: > > > >>Hi Chas > > > >> > > > >> From: Chas Williams [mailto:mailto:mailto:mailto:3chas3@gmail.com] > > > >> On Thu, Aug 2, 2018 at 1:33 > > > >>> PM Matan Azrad 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=3D5) should raise a= n > > 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 du= ring > > 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 th= e > > 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=E2=80=99m suggesting h= ere, 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 shoul= d 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 thi= s > > > >>> to happen is that you don't have promisc support which is the ult= imate > > 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 traffi= c. > > > >>> > > > >>> > > > >>> 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 abo= ut > > 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 w= e > > disagree on the option. > > > >>If the PMD has no other way to subscribe the multicast group, it ha= s 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. > > > > > > > >Unfortunately, it's the only option implemented. > > > > > > Yes, I know, I suggest to change it or at least not to make it worst. > > > > > > >>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 u= se case) if > > he has an option to tell to the bond PMD, please use rte_flow to confi= gure > > the specific LACP MC group it will be great. > > > >>Think how much work these applications should do in the current > > behavior. > > > > > > > >The bond PMD should already know how to do that itself. > > > > > > The bond can do it with a lot of complexity, but again the user must = know > > what the bond chose to be synchronized. > > > So, I think it's better that the user will define it because it is a > > > traffic configuration (the same as promiscuous configuration - the > > > user configures it) > > > > Again, you are forcing more work on the user to ask them to select > > between the methods. > > > > > > We can create a default option as now(promiscuous). > > > > > > >> For instance, if the least common denominator between the two PMD= s > > > >>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 PM= D > > 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 problem= s and > > complications for some applications. > > > > > > > >Those applications should already have those problems. > > > > I can make the counter > > > >argument that there are potentially applications relying on the brok= en > > behavior. > > > > > > You right. So adding allmulticast will require changes in these appli= cations. > > > > > > >We need to ignore those issues and fix this the "right" way. The > > > >"right" way IMHO is the pass the least amount of traffic possible in= each > > case. > > > > > > Not in cost of an inconsistency, but looks like we are not agree here= . > > > > > > > I have recently run into this issue again with a device that doesn't su= pport > > promiscuous, but does let me subscribe to the appropriate multicast gro= ups. > > At this point, I am leaning toward adding another API call to the bondi= ng API > > so that the user can provide a callback to setup whatever they want on = the > > slaves. > > The default setup routine would be enable promiscuous. > > > > Comments? > > The bonding already allows to the users to do operations directly to the = slaves(it exports the port ids - rte_eth_bond_slaves_get), so I don't under= stand why do you need a new API. > The only change you need may be to add parameter to disable the promiscuo= us configuration in mode4. Changing the API is new API. We should attempt to not break any of the existing API. As for being able to operate on the slaves, yet, you can. But the bonding PMD also controls the slaves as well. It seems cleaner to make this explcit, that the bonding driver calls out to the application to setup the 802.3ad listening when it needs to be done. If you want to control it a different way, you simply provide a null routine that does nothing and control it however you like.