From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id 3CD917E7A for ; Wed, 8 Oct 2014 16:04:23 +0200 (CEST) Received: from azsmga001.ch.intel.com ([10.2.17.19]) by fmsmga102.fm.intel.com with ESMTP; 08 Oct 2014 07:11:38 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.04,677,1406617200"; d="scan'208";a="482803805" Received: from irsmsx102.ger.corp.intel.com ([163.33.3.155]) by azsmga001.ch.intel.com with ESMTP; 08 Oct 2014 07:11:37 -0700 Received: from irsmsx106.ger.corp.intel.com (163.33.3.31) by IRSMSX102.ger.corp.intel.com (163.33.3.155) with Microsoft SMTP Server (TLS) id 14.3.195.1; Wed, 8 Oct 2014 15:11:36 +0100 Received: from irsmsx109.ger.corp.intel.com ([169.254.13.253]) by IRSMSX106.ger.corp.intel.com ([169.254.8.193]) with mapi id 14.03.0195.001; Wed, 8 Oct 2014 15:11:35 +0100 From: "Pattan, Reshma" To: Neil Horman Thread-Topic: [dpdk-dev] [PATCH RFC] librte_reorder: new reorder library Thread-Index: AQHP4iD8VUSlKMAr1kW4CpbNHNbi0ZwmOSrg Date: Wed, 8 Oct 2014 14:11:34 +0000 Message-ID: <3AEA2BF9852C6F48A459DA490692831FE2226C@IRSMSX109.ger.corp.intel.com> References: <3AEA2BF9852C6F48A459DA490692831FE21954@IRSMSX109.ger.corp.intel.com> <20141007112155.GA27719@hmsreliant.think-freely.org> In-Reply-To: <20141007112155.GA27719@hmsreliant.think-freely.org> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [163.33.239.181] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 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: Wed, 08 Oct 2014 14:04:23 -0000 > -----Original Message----- > From: Neil Horman [mailto:nhorman@tuxdriver.com] > Sent: Tuesday, October 7, 2014 12:22 PM > To: Pattan, Reshma > Cc: dev@dpdk.org > Subject: Re: [dpdk-dev] [PATCH RFC] librte_reorder: new reorder library >=20 > On Tue, Oct 07, 2014 at 09:33:06AM +0000, Pattan, Reshma wrote: > > Hi All, > > > > I am planning to implement packet reorder library. Details are as belo= w, > please go through them and provide the comments. > > > > Requirement: > > To reorder out of ordered packets that are received from= different > cores. > > > > Usage: > > To be used along with distributor library. Next version of distributor = are > planned to distribute incoming packets to all worker cores irrespective o= f the > flow type. > > In this case to ensure in order delivery of the packets at output side = reorder > library will used by the tx end. > > > > Assumption: > > All input packets will be marked with sequence number in seqn field of = mbuf, > this will be the reference for reordering at the tx end. > > Sequence number will be of type uint32_t. New sequence number field seq= n > will be added to mbuf structure. > > > > Design: > > a)There will be reorder buffer(circular buffer) structure maintained in= reorder > library to store reordered packets and other details of buffer like head = to drain > the packet from, min sequence number and other details. > > b)Library will provide insert and drain functions to reo= rder and fetch > out the reordered packets respectively. > > c)Users of library should pass the packets to insert functions for reor= dering. > > > > Insertion logic: > > Sequence number of current packet will be used to calculate offset in r= eorder > buffer and write packet to the location in the reorder buffer correspond= ing to > offset. > > Offset is calculated as difference of curr= ent packet sequence > number and sequence number associated with reorder buffer. > > > > During sequence number wrapping or wrapping over of reorder buffer size= , > before inserting the new packet we should move offset number of packets t= o > other buffer called overflow buffer and advance the head of reorder buffe= r by > "offset-reorder buffer size" and insert the new packet. > > > > Insert function: > > int rte_reorder_insert(struct rte_reorder_buffer *buffer, struct > > rte_mbuf *mbuf); > > Note: Other insert function is also under plan to insert burst of packe= ts. > > > > Reorder buffer: > > struct rte_reorder_buffer { > > unsigned int size; /* The size (number of entries) of the = buffer. */ > > unsigned int mask; /* Mask (size - 1) of the buffer */ > > unsigned int head; /* Current head of buffer */ > > uint32_t min_seqn; /* latest sequence number associated wi= th buffer > */ > > struct rte_mbuf *entries[MAX_REORDER_BUFFER_SIZE]; /* buffer > > to hold reordered mbufs */ }; > > > > d)Users can fetch out the reordered packets by drain function provided = by > library. Users must pass the mbuf array , drain function should fill pas= sed mbuff > array with the reordered buffer packets. > > During drain operation, overflow buffer packets will be fetched out fi= rst and > then reorder buffer. > > > > Drain function: > > int rte_reorder_drain(struct rte_reorder_buffer > > *buffer, struct rte_mbuf **mbufs) > > > > Thanks, > > Reshma > > >=20 > This seems reasonable, but why not integrate it with the distributor libr= ary rather > than create a separate library for it? It seems as though the distributo= r library is > a pre-requisite for this libraries use anyway, as otherwise there will no= t be > anything to reorder Neil >=20 Hi Neil, Reorder library should be standalone , as there are many ways that can caus= e out of ordering of packets, I just mentioned future packet distributor en= hancements=20 as one of the example for out of ordering.=20 Other ways like, users can directly distribute the packets to different cor= es via rings and that causes packet out of ordering as well.=20 So, keeping reorder library standalone would be good to work with all packe= t distribution ways. Thanks, Reshma=20 > > -------------------------------------------------------------- > > Intel Shannon Limited > > Registered in Ireland > > Registered Office: Collinstown Industrial Park, Leixlip, County > > Kildare Registered Number: 308263 Business address: Dromore House, > > East Park, Shannon, Co. Clare > > > > This e-mail and any attachments may contain confidential material for t= he sole > use of the intended recipient(s). Any review or distribution by others is= strictly > prohibited. If you are not the intended recipient, please contact the sen= der and > delete all copies. > > > >