From: Neil Horman <nhorman@tuxdriver.com> To: "Doherty, Declan" <declan.doherty@intel.com> Cc: "dev@dpdk.org" <dev@dpdk.org> Subject: Re: [dpdk-dev] [PATCH v2 0/4] Link Bonding Library Date: Fri, 13 Jun 2014 11:11:56 -0400 Message-ID: <20140613151156.GA22451@hmsreliant.think-freely.org> (raw) In-Reply-To: <345C63BAECC1AD42A2EC8C63AFFC3ADC13D38DBF@IRSMSX101.ger.corp.intel.com> On Fri, Jun 13, 2014 at 02:56:47PM +0000, Doherty, Declan wrote: > > -----Original Message----- > > From: Neil Horman [mailto:nhorman@tuxdriver.com] > > Sent: Friday, June 6, 2014 3:54 PM > > To: Doherty, Declan > > Cc: dev@dpdk.org > > Subject: Re: [dpdk-dev] [PATCH v2 0/4] Link Bonding Library > > > > On Fri, Jun 06, 2014 at 08:23:31AM +0000, Doherty, Declan wrote: > > > > -----Original Message----- > > > > From: Neil Horman [mailto:nhorman@tuxdriver.com] > > > > Sent: Thursday, May 29, 2014 12:34 PM > > > > To: Doherty, Declan > > > > Cc: dev@dpdk.org > > > > Subject: Re: [dpdk-dev] [PATCH 0/4] Link Bonding Library > > > > > > > > On Thu, May 29, 2014 at 10:33:00AM +0000, Doherty, Declan wrote: > > > > > -----Original Message----- > > > > > > From: Neil Horman [mailto:nhorman@tuxdriver.com] > > > > > > Sent: Wednesday, May 28, 2014 6:49 PM > > > > > > To: Doherty, Declan > > > > > > Cc: dev@dpdk.org > > > > > > Subject: Re: [dpdk-dev] [PATCH 0/4] Link Bonding Library > > > > > > > > > > > > On Wed, May 28, 2014 at 04:32:00PM +0100, declan.doherty@intel.com > > > > wrote: > > > > > > > From: Declan Doherty <declan.doherty@intel.com> > > > > > > > > > > > > > > Initial release of Link Bonding Library (lib/librte_bond) with > > > > > > > support for bonding modes : > > > > > > > 0 - Round Robin > > > > > > > 1 - Active Backup > > > > > > > 2 - Balance l2 / l23 / l34 > > > > > > > 3 - Broadcast > > > > > > > > > > > > > Why make this a separate library? That requires exposure of yet > > > > > > another > > > > API to applications. Instead, why > not write a PMD that can enslave > > > > other PMD's and treat them all as a single interface? That way this > > > > all > > works with the existing API. > > > > > > > > > > > > Neil > > > > > > > > > > Hi Neil, > > > > > the link bonding device is essentially a software PMD, and as such > > > > > supports > > > > all the standard PMD APIs, the only new APIs which the link bonding > > > > library introduces are for the control operations of the bonded > > > > device which are currently unsupported by the standard PMD API. > > > > Operations such as creating, adding/removing slaves, and configuring > > > > the modes of operation of the device have no analogous APIs in the > > > > current PMD API and required new ones to be created . > > > > > > > > Thats really only true in spirit, in the sense that this library > > > > transmits and receives frames like a PMD does. In practice it doesn't > > > > work and isn't architected the same way. You don't register the > > > > driver using the same method as the other PMDs, which means that using > > > > --vdev on the command line wont work for this type of device. It also > > > > implies that applications have to be made specifically aware of the > > > > fact that they are using a bonded interface (i.e. they need to call > > > > the bonding setup routines to create the bond). I would > > > > recommend: > > > > > > > > 1) Register the pmd using the PMD_DRIVER_REGISTER macro, like other > > > > PMD's > > > > 2) Use the kvargs library to support configuration via the --vdev > > > > command line option, so bonds can be created administratively, rather > > > > than just programatically > > > > 3) Separate the command api from the PMD functionality into separate > > > > libraries (use control mbufs to communicate configuration changes to > > > > the pmd). This will allow users to dynamically load the pmd > > > > functionality (without compile or run time linking requirements), and > > > > then optionally use the programatic interface (or not if they want to > > > > save memory) > > > > > > > > Regards > > > > Neil > > > > -----Original Message----- > > > > From: Neil Horman [mailto:nhorman@tuxdriver.com] > > > > Sent: Thursday, June 5, 2014 12:04 PM > > > > To: Doherty, Declan > > > > Cc: dev@dpdk.org > > > > Subject: Re: [dpdk-dev] [PATCH v2 0/4] Link Bonding Library > > > > > > > > On Wed, Jun 04, 2014 at 04:18:01PM +0100, declan.doherty@intel.com > > > > wrote: > > > > > From: Declan Doherty <declan.doherty@intel.com> > > > > > > > > > > v2 patch additions, > > > > > fix for tx burst broadcast, incrementing the reference count on each > > > > > mbuf by the number of slaves - 1 add/remove slave behavior chnange > > > > > to fix primary slave port assignment patchcheck code fixes > > > > > > > > > > > > > > > > > > > This doesn't address any of the comments I made previously. > > > > Neil > > > > > > > > > Hi Neil, > > > > > > sorry for not replying regarding this earlier, in relation to your > > recommendations 1 and 2, I'm currently working on the implementation of both > > and should have an additional patch within the next couple of days to add this > > functionality. > > > > > > Regarding your third recommendation, I have no problem splitting the library > > into separate API and PMD libraries although this does seem to break convention > > with the other non hw based pmd's, such as pmd_pcap, > > I'm not at all sure what you mean here. pmd_pcap registers a driver with the > > registration mechanism, allowing for the use of the --vdev option on the command > > line, same as all the other virtual drivers. The physical drivers do the same > > thing using the --whitelist and --blacklist options. How is the bonding driver > > following convention with pmd_pcap? > > > > > > > so would prefer not to go down that route. Also, I don't see the ability to > > dynamically load the pmd as justification for the use of a control mbufs interface, > > this would require that either additional queues be created to handle control > > messages, or that the data TX queues have the ability to identify and process > > control mbufs, and either of these options will have a performance hit, > > > > Well, you're correct in that the driver would have to identify control messages, > > but I don't see how thats a performance hit at all. If you create a control > > channel queue, then all you have to introduce to the datapath is a single branch > > to see which queue is transmitting, and your done. If control mbufs are just > > that hurtful to performance, it seems thats an area that really needs > > improvement then. > > > > Another alternative is to add a control packet method to the rte_eth_dev > > structure allowing you to pass control mbufs directly to a pmd out of line with > > the datapath. That could avoid any additional branches in the datapath, and > > still allow you to separate user api from driver implementation. > > > > > > > for the core handling the separate control messages or directly to the tx burst > > performance. I am not currently aware of any functional requirements or use > > cases for bonded devices to be used over multiple processes which is the only > > reason I can see for using an interface based on control mbufs, > > > > The reason is administrative. Its got nothing to do with how many processes > > want to use an interface, it has to do with an interface knowing if its using > > the bonding driver or not (it shouldn't ever have to, but with your patch set, > > its required to use the bonding api to create the interface and add slaves. > > > > > and by providing a --vdev configuration options the user can still write their > > applications without any knowledge of the additional link bonding programmatic > > interface. If in the future a use case does emerge which requires multi-process > > control of bonded devices, I think it would make sense then to add an additional > > library to provide this functionality. > > > > How exactly does that happen? At what point does the bonding library in its > > current form register a driver with rte_ethdev without the application first > > calling some function in the bonding library to do so. Because until that > > happens, --vdev is non functional for this pmd. > > > > FWIW, the concern for me here is one of packaging. I don't want users to have > > to pull in a library that they don't absolutely need. the way you have this put > > together right now, they need the entire bonding library even if they just want > > a statically configured bond interface > > > > Neil > > > > > > > > > > Regards > > > Declan > > > -------------------------------------------------------------- > > Hi Neil, > I waited to reply to this until I had v3 of the patch ready to submit. I think you mistook the intent of my last > response, but anyway I think v3 of the patch addresses the majority of your concerns regarding the bonded device. Which > can now be initialized using the --vdev options and supports both virtual and physical devices to be specified > as slaves and no knowledge of the bonding API is required by the user application if the bonding ports are configure at > runtime. > Sounds great, I look forward to seeing it. Thanks! Neil > Regards >
next prev parent reply other threads:[~2014-06-13 15:11 UTC|newest] Thread overview: 127+ messages / expand[flat|nested] mbox.gz Atom feed top 2014-05-28 15:32 [dpdk-dev] [PATCH " declan.doherty 2014-05-28 15:32 ` [dpdk-dev] [PATCH 1/4] " declan.doherty 2014-05-28 16:54 ` Shaw, Jeffrey B 2014-05-29 13:32 ` Doherty, Declan 2014-05-28 15:32 ` [dpdk-dev] [PATCH 2/4] Link bonding unit tests declan.doherty 2014-05-28 15:32 ` [dpdk-dev] [PATCH 3/4] Link bonding integration into testpmd declan.doherty 2014-05-28 15:32 ` [dpdk-dev] [PATCH 4/4] Add Link Bonding Library to Doxygen declan.doherty 2014-05-28 17:49 ` [dpdk-dev] [PATCH 0/4] Link Bonding Library Neil Horman 2014-05-29 10:33 ` Doherty, Declan 2014-05-29 11:33 ` Neil Horman 2014-05-29 3:23 ` Cao, Waterman 2014-05-29 10:35 ` Doherty, Declan 2014-06-04 15:18 ` [dpdk-dev] [PATCH v2 " declan.doherty 2014-06-04 15:18 ` [dpdk-dev] [PATCH v2 1/4] " declan.doherty 2014-06-04 15:18 ` declan.doherty 2014-06-05 15:15 ` Stephen Hemminger 2014-06-06 9:07 ` Doherty, Declan 2014-06-06 15:13 ` Stephen Hemminger 2014-06-09 21:11 ` Eric Kinzie 2014-06-13 14:03 ` Doherty, Declan 2014-06-04 15:18 ` [dpdk-dev] [PATCH v2 2/4] Link bonding unit tests, including: - code to generate packet bursts for testing rx and tx functionality of bonded device - virtual/stubbed out ethdev for use as slave ethdev in testing - checkpack fixes declan.doherty 2014-06-04 15:18 ` declan.doherty 2014-06-04 15:18 ` [dpdk-dev] [PATCH v2 0/4] Link Bonding Library declan.doherty 2014-06-04 15:18 ` [dpdk-dev] [PATCH v2 3/4] Adding link bonding support to testpmd. - Includes the ability to create new bonded devices. - Add /remove bonding slave devices. - Interogate bonded device stats/configuration - Change bonding modes and select balance transmit polices declan.doherty 2014-06-04 15:18 ` [dpdk-dev] [PATCH v2 4/4] Add Link Bonding Library to Doxygen declan.doherty 2014-06-04 16:10 ` [dpdk-dev] [PATCH v2 0/4] Link Bonding Library Doherty, Declan 2014-06-05 8:03 ` De Lara Guarch, Pablo 2014-06-05 11:03 ` Neil Horman 2014-06-06 8:23 ` Doherty, Declan 2014-06-06 14:54 ` Neil Horman 2014-06-13 14:56 ` Doherty, Declan 2014-06-13 15:11 ` Neil Horman [this message] 2014-06-06 3:26 ` Cao, Waterman 2014-06-11 16:33 ` Thomas Monjalon 2014-06-13 14:08 ` Doherty, Declan 2014-06-13 15:15 ` Thomas Monjalon 2014-06-13 14:41 ` [dpdk-dev] [PATCH v3 0/5] Link Bonding PMD Library Declan Doherty 2014-06-13 14:41 ` [dpdk-dev] [PATCH v3 1/5] " Declan Doherty 2014-06-13 14:41 ` [dpdk-dev] [PATCH v3 2/5] Link Bonding PMD Library (librte_eal/librte_ether link bonding support changes) Declan Doherty 2014-06-13 16:08 ` Neil Horman 2014-06-13 18:34 ` Doherty, Declan 2014-06-13 19:38 ` Neil Horman 2014-06-16 8:59 ` Doherty, Declan 2014-06-16 11:07 ` Neil Horman 2014-06-16 16:17 ` Richardson, Bruce 2014-06-16 17:47 ` Neil Horman 2014-06-16 18:07 ` Richardson, Bruce 2014-06-16 18:09 ` Thomas Monjalon 2014-06-13 21:59 ` Stephen Hemminger 2014-06-16 7:59 ` Doherty, Declan 2014-06-13 14:42 ` [dpdk-dev] [PATCH v3 3/5] Link Bonding PMD Library (Unit Test Suite) Declan Doherty 2014-06-13 14:42 ` [dpdk-dev] [PATCH v3 4/5] Link Bonding PMD Library (testpmd link bonding API support) Declan Doherty 2014-06-13 14:42 ` [dpdk-dev] [PATCH v3 5/5] Link Bonding PMD Library (Doxygen Additions) Declan Doherty 2014-06-13 15:20 ` [dpdk-dev] [PATCH v3 0/5] Link Bonding PMD Library Neil Horman 2014-06-16 11:18 ` [dpdk-dev] [PATCH v4 0/6] Link Bonding Library Declan Doherty 2014-06-18 16:14 ` [dpdk-dev] [PATCH v5 " Declan Doherty 2014-06-18 16:18 ` Neil Horman 2014-06-24 14:52 ` [dpdk-dev] [PATCH v6 " Declan Doherty 2014-06-24 16:03 ` [dpdk-dev] [PATCH v7 " Declan Doherty 2014-06-25 20:07 ` [dpdk-dev] [PATCH v8 " Declan Doherty 2014-06-26 16:02 ` De Lara Guarch, Pablo 2014-06-26 23:57 ` [dpdk-dev] [PATCH v9 0/5] link bonding Thomas Monjalon 2014-06-26 23:57 ` [dpdk-dev] [PATCH v9 1/5] bond: new link bonding library Thomas Monjalon 2014-06-27 0:45 ` Thomas Monjalon 2014-06-26 23:57 ` [dpdk-dev] [PATCH v9 2/5] ethdev: add unique name to devices Thomas Monjalon 2014-06-26 23:57 ` [dpdk-dev] [PATCH v9 3/5] eal: support link bonding device initialization Thomas Monjalon 2014-06-26 23:57 ` [dpdk-dev] [PATCH v9 4/5] bond: unit tests Thomas Monjalon 2014-06-26 23:57 ` [dpdk-dev] [PATCH v9 5/5] bond: testpmd support Thomas Monjalon 2014-06-27 10:18 ` [dpdk-dev] [PATCH v10 0/5] link bonding Declan Doherty 2014-06-27 20:58 ` Thomas Monjalon 2014-06-29 17:49 ` [dpdk-dev] [PATCH v11 0/5] link bonding library Declan Doherty 2014-06-30 9:21 ` Thomas Monjalon 2014-06-30 9:28 ` Doherty, Declan 2014-07-01 22:01 ` Thomas Monjalon 2014-06-29 17:49 ` [dpdk-dev] [PATCH v11 1/5] bond: new " Declan Doherty 2014-06-30 9:13 ` Thomas Monjalon 2014-06-30 22:29 ` Robert Sanford 2014-07-01 14:16 ` Thomas Monjalon 2014-07-01 14:19 ` Doherty, Declan 2014-07-01 14:26 ` Thomas Monjalon 2014-06-29 17:49 ` [dpdk-dev] [PATCH v11 2/5] ethdev: add unique name to devices Declan Doherty 2014-06-29 17:49 ` [dpdk-dev] [PATCH v11 3/5] eal: support link bonding device initialization Declan Doherty 2014-06-29 17:49 ` [dpdk-dev] [PATCH v11 4/5] bond: unit tests Declan Doherty 2014-06-30 8:56 ` Thomas Monjalon 2014-06-29 17:49 ` [dpdk-dev] [PATCH v11 5/5] bond: testpmd support Declan Doherty 2014-06-27 10:18 ` [dpdk-dev] [PATCH v10 1/5] bond: new link bonding library Declan Doherty 2014-06-27 10:18 ` [dpdk-dev] [PATCH v10 2/5] ethdev: add unique name to devices Declan Doherty 2014-06-27 10:18 ` [dpdk-dev] [PATCH v10 3/5] eal: support link bonding device initialization Declan Doherty 2014-06-27 10:18 ` [dpdk-dev] [PATCH v10 4/5] bond: unit tests Declan Doherty 2014-06-27 10:18 ` [dpdk-dev] [PATCH v10 5/5] bond: testpmd support Declan Doherty 2014-06-25 20:07 ` [dpdk-dev] [PATCH v8 1/6] Link Bonding Library (lib/librte_pmd_bond) Declan Doherty 2014-06-25 20:07 ` [dpdk-dev] [PATCH v8 2/6] Support for unique interface naming of pmds Declan Doherty 2014-06-25 20:07 ` [dpdk-dev] [PATCH v8 3/6] EAL support for link bonding device initialization Declan Doherty 2014-06-25 20:07 ` [dpdk-dev] [PATCH v8 4/6] Link bonding Unit Tests Declan Doherty 2014-06-25 20:07 ` [dpdk-dev] [PATCH v8 5/6] testpmd link bonding additions Declan Doherty 2014-06-25 20:07 ` [dpdk-dev] [PATCH v8 6/6] Link Bonding Library doxygen additions Declan Doherty 2014-06-24 16:03 ` [dpdk-dev] [PATCH v7 1/6] Link Bonding Library (lib/librte_pmd_bond) Declan Doherty 2014-06-24 16:03 ` [dpdk-dev] [PATCH v7 2/6] Support for unique interface naming of pmds Declan Doherty 2014-06-24 16:03 ` [dpdk-dev] [PATCH v7 3/6] EAL support for link bonding device initialization Declan Doherty 2014-06-25 13:54 ` Thomas Monjalon 2014-06-25 14:41 ` Doherty, Declan 2014-06-25 16:00 ` Thomas Monjalon 2014-06-25 16:15 ` Richardson, Bruce 2014-06-24 16:03 ` [dpdk-dev] [PATCH v7 4/6] Link bonding Unit Tests Declan Doherty 2014-06-24 16:03 ` [dpdk-dev] [PATCH v7 5/6] testpmd link bonding additions Declan Doherty 2014-06-24 16:03 ` [dpdk-dev] [PATCH v7 6/6] Link Bonding Library doxygen additions Declan Doherty 2014-06-25 13:43 ` Thomas Monjalon 2014-06-25 14:19 ` Doherty, Declan 2014-06-25 14:23 ` Thomas Monjalon 2014-06-24 14:52 ` [dpdk-dev] [PATCH v6 1/6] Link Bonding Library (lib/librte_pmd_bond) Declan Doherty 2014-06-24 14:52 ` [dpdk-dev] [PATCH v6 2/6] Support for unique interface naming of pmds Declan Doherty 2014-06-24 14:52 ` [dpdk-dev] [PATCH v6 3/6] EAL support for link bonding device initialization Declan Doherty 2014-06-24 14:52 ` [dpdk-dev] [PATCH v6 4/6] Link bonding Unit Tests Declan Doherty 2014-06-24 14:52 ` [dpdk-dev] [PATCH v6 5/6] testpmd link bonding additions Declan Doherty 2014-06-24 14:52 ` [dpdk-dev] [PATCH v6 6/6] Link Bonding Library doxygen additions Declan Doherty 2014-06-18 16:14 ` [dpdk-dev] [PATCH v5 1/6] Link Bonding Library (lib/librte_pmd_bond) Declan Doherty 2014-06-18 16:14 ` [dpdk-dev] [PATCH v5 2/6] Support for unique interface naming of pmds Declan Doherty 2014-06-18 16:14 ` [dpdk-dev] [PATCH v5 3/6] EAL support for link bonding device initialization Declan Doherty 2014-06-18 16:14 ` [dpdk-dev] [PATCH v5 4/6] Link bonding Unit Tests Declan Doherty 2014-06-18 16:14 ` [dpdk-dev] [PATCH v5 5/6] testpmd link bonding additions Declan Doherty 2014-06-18 16:14 ` [dpdk-dev] [PATCH v5 6/6] Link Bonding Library doxygen additions Declan Doherty 2014-06-16 11:18 ` [dpdk-dev] [PATCH v4 1/6] Link Bonding Library (lib/librte_pmd_bond) initial release with support for Mode 0 - Round Robin Mode 1 - Active Backup Mode 2 - Balance -> Supports 3 transmit polices (layer 2, layer 2+3, la Mode 3 - Broadcast Declan Doherty 2014-06-16 11:18 ` [dpdk-dev] [PATCH v4 2/6] Support for unique interface naming of pmds Declan Doherty 2014-06-16 11:18 ` [dpdk-dev] [PATCH v4 3/6] EAL support for link bonding device initialization Declan Doherty 2014-06-16 11:18 ` [dpdk-dev] [PATCH v4 4/6] Link bonding Unit Tests Declan Doherty 2014-06-16 11:18 ` [dpdk-dev] [PATCH v4 5/6] testpmd link bonding additions Declan Doherty 2014-06-16 11:18 ` [dpdk-dev] [PATCH v4 6/6] Link Bonding Library doxygen additions Declan Doherty
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=20140613151156.GA22451@hmsreliant.think-freely.org \ --to=nhorman@tuxdriver.com \ --cc=declan.doherty@intel.com \ --cc=dev@dpdk.org \ /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
DPDK patches and discussions This inbox may be cloned and mirrored by anyone: git clone --mirror https://inbox.dpdk.org/dev/0 dev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 dev dev/ https://inbox.dpdk.org/dev \ dev@dpdk.org public-inbox-index dev Example config snippet for mirrors. Newsgroup available over NNTP: nntp://inbox.dpdk.org/inbox.dpdk.dev AGPL code for this site: git clone https://public-inbox.org/public-inbox.git