From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp.tuxdriver.com (charlotte.tuxdriver.com [70.61.120.58]) by dpdk.org (Postfix) with ESMTP id 3D2227EBF for ; Thu, 9 Oct 2014 19:48:34 +0200 (CEST) Received: from cpe-098-026-066-094.nc.res.rr.com ([98.26.66.94] helo=localhost) by smtp.tuxdriver.com with esmtpsa (TLSv1:AES128-SHA:128) (Exim 4.63) (envelope-from ) id 1XcHwI-00085e-7q; Thu, 09 Oct 2014 13:55:48 -0400 Date: Thu, 9 Oct 2014 13:55:45 -0400 From: Neil Horman To: Matthew Hall Message-ID: <20141009175545.GG20940@hmsreliant.think-freely.org> References: <3AEA2BF9852C6F48A459DA490692831FE21954@IRSMSX109.ger.corp.intel.com> <20141007112155.GA27719@hmsreliant.think-freely.org> <3AEA2BF9852C6F48A459DA490692831FE2226C@IRSMSX109.ger.corp.intel.com> <20141008191546.GC13306@hmsreliant.think-freely.org> <3AEA2BF9852C6F48A459DA490692831FE22552@IRSMSX109.ger.corp.intel.com> <20141009113650.GB20940@hmsreliant.think-freely.org> <3AEA2BF9852C6F48A459DA490692831FE22808@IRSMSX109.ger.corp.intel.com> <20141009160942.GE20940@hmsreliant.think-freely.org> <20141009172134.GB8620@mhcomputing.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20141009172134.GB8620@mhcomputing.net> User-Agent: Mutt/1.5.23 (2014-03-12) X-Spam-Score: -2.9 (--) X-Spam-Status: No Cc: "dev@dpdk.org" Subject: Re: [dpdk-dev] [PATCH RFC] librte_reorder: new reorder library X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Oct 2014 17:48:34 -0000 On Thu, Oct 09, 2014 at 10:21:35AM -0700, Matthew Hall wrote: > On Thu, Oct 09, 2014 at 12:09:42PM -0400, Neil Horman wrote: > > From what you've said above, sequence assignment needs to occur prior to any > > order breaking event. That means you either need to do it in individual PMD's > > on RX, or in the rte_eth library if you want to make it common. On the TX side > > you need to ensure that the application applies sequence numbers uniquely and in > > a predictable fashion in order for the library to work. that seems like a large > > external requirement for this functionality to work, and I was wondering how you > > were going to address that. > > To me it seems like the actualy mechanism of applying the sequence number to > the packet belongs in librte_reorder or librte_mbuf. > Perhaps, but this is why I was asking about wanting to merge this functionality into another library, because segmentation and reordering isn't really an isolated function, its an operation that needs hooks in a multiple points in the stack, and as such may be better suited to integration into another library (distributor as I mentioned before, or mbuf as you note here). Otherwise you're left with a library that works only if some external mechanism is implemented properly for each pmd/application that wants to support it. > Then, a config define or runtime setting should be used to determine if the > operation actually does something or becomes a no-op. Likely a define is > needed so the compiler can optimize the code out when it's not used, like for > RSS-based cases like mine. > I'm sure that would be the case. Thats not the hard part though. The hard part is figuring out the right policy and way to assign sequence numbers when their used, in such a way that minimal external code change is needed to support it, and in such a way that it "always works" > If the type of sequencing needed could be applied during allocation from the > pool, that would be nice because it would be transparent, as long as the PMD's > retrieved their new mbuf's the right way. > Sure, that would be a fine way to do it, but the mbuf pool currently I don't think differentiates between flows, does it? And as such we either have to: a) teach it about flows and let PMD's specify a flow from which to draw a sequence number b) Allow all nics to share a sequence pool (i.e. serialize sequence number access and take the performance hit). c) Segment the sequence name space in such a way that each rx/tx queue can distribute sequence numbers independently Not saying any of this is bad, just a question I'm curious as to the answer to. > If the sequencing to be applied based on properties from L4-L7, then it seems > like the distributor would have to be sure to do call the right functions > itself, as would other customers, because there'd be no way to magically get > them right before you've looked at L4-L7 data first. > True, though from a tx standpoint the order the data is marshalled gives you the opportunity to sequence the data without explicit L4-L7 knoweldge Neil