From owner-freebsd-net@FreeBSD.ORG Tue Sep 23 03:56:29 2014 Return-Path: Delivered-To: net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 1EA8E95; Tue, 23 Sep 2014 03:56:29 +0000 (UTC) Received: from mail.sfc.wide.ad.jp (shonan.sfc.wide.ad.jp [IPv6:2001:200:0:8803::53]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id D073237D; Tue, 23 Sep 2014 03:56:28 +0000 (UTC) Received: from Midoris-MacBook-Air.local (p3b93eea5.tokynt01.ap.so-net.ne.jp [59.147.238.165]) by mail.sfc.wide.ad.jp (Postfix) with ESMTPSA id 3513F2780BB; Tue, 23 Sep 2014 12:56:17 +0900 (JST) Message-ID: <5420EF61.5040509@sfc.wide.ad.jp> Date: Tue, 23 Sep 2014 12:56:17 +0900 From: Midori Kato User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0 MIME-Version: 1.0 To: Lawrence Stewart Subject: Re: DCTCP implementation References: <5338FF05.1020302@sfc.wide.ad.jp> <540509C1.6090006@freebsd.org> In-Reply-To: <540509C1.6090006@freebsd.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: "Eggert, Lars" , hiren panchasara , "freebsd-net@freebsd.org" X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 23 Sep 2014 03:56:29 -0000 Hi Lawrence, Thank you so much for your response. I discuss KPI changes with Hiren over a month and understood your idea. The main point in your discussion thread was the KPI changes in cc_module. So, I describe about it as follows. As you mention, the changes in my implemtation is DCTCP specific ones. It makes sense not to add these two functions (ect_handler and ecnpkt_handler) into the main stream. At the same time, without these functions, it means that we cannot use DCTCP in FreeBSD. We have to find alternative ways to be putting into them. I think the compatibility with RFC3168 is the thing we should consider. The current KPI has not thought about it. There are two idea to achieve this: - append parameters to handle ECN in struct cc_var - change APIs to process ECN The former idea is easy and elegant. Which idea do you like when we implement DCTCP? And let me know if you have more better idea. I love to work on this to complete the DCTCP implementation. Hiren, if I miss something about our discussion, please provide additional explanation. Many thanks, -- Midori (9/2/14, 9:05 AM), Lawrence Stewart wrote: > Hi Midori (& Lars), > > On 03/31/14 16:37, Midori Kato wrote: >> Hi FreeBSD developpers, >> >> I'm Midori Kato. I'm working on the DCTCP implementation in the FreeBSD >> with Lars Eggert. I mail you because I would like to ask you a code >> review and testing. The attached patch is not good enough to test our >> code. Please give me your message. I will send an ECN marking >> implmenetation in dummynet and test scripts personally to you. > [snip] > > Firstly, please let me apologise for not providing follow up feedback > and review after our initial discussion of your work last year. It was > always my intention to come back to this but life has been particularly > crazy the past 12 months and I have been unsuccessful in my attempts to > keep a number of balls in the air. > > Hiren has been diligently working on shepherding your code into the > FreeBSD source tree and has been prodding me for a review which I > finally got around to yesterday. Unfortunately, my understanding is that > non developers are unable to interact with the code review system being > used, so we're moving the discussion back to the mailing list so that > you and others can participate. You can read the review discussion > history to date at [1]. > > Leaving editorial work on the documentation aside for the time being, > I'd like to discuss the KPI changes and stack integration aspects of the > patch to start with. Specifically: > > - The ect_handler KPI addition seems redundant to me and I believe the > patch can be simplified by removing it entirely. > > - The ecnpkt_handler KPI addition takes arguments which are too specific > to DCTCP, and is too indiscriminate in what it matches i.e. all packets > for ECN enabled connections. I would argue we either add a fully > generalist hook which would catch all packets of an ESTABLISHED > connection, and have the dctcp module check if ECN is enabled or not > before continuing processing (not my preferred option), or we extract > the essence of what dctcp_ecnpkt_handler() needs to do into a less > generic hook or bit of meta data passed in to an existing hook via > struct cc_var (I need to study the code a bit more, but will likely > strongly push for this option). > > - I don't believe the code correctly handles the case of dctcp being > used on connections which did not successfully negotiate ECN. > > There is more to discuss but I think getting these high level technical > things resolved first will help guide the remainder of the review > discussion. > > Cheers, > Lawrence > > [1] https://reviews.freebsd.org/D604