Re: [tcpm] draft-ietf-tcpm-rack-05 review

Emmanuel Lochin <emmanuel.lochin@isae-supaero.fr> Sat, 07 September 2019 11:03 UTC

Return-Path: <Emmanuel.LOCHIN@isae-supaero.fr>
X-Original-To: tcpm@ietfa.amsl.com
Delivered-To: tcpm@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 0D2F412008F for <tcpm@ietfa.amsl.com>; Sat, 7 Sep 2019 04:03:39 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.897
X-Spam-Level:
X-Spam-Status: No, score=-1.897 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_IMAGE_RATIO_04=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id gX7HT5vJ2rDQ for <tcpm@ietfa.amsl.com>; Sat, 7 Sep 2019 04:03:35 -0700 (PDT)
Received: from smtpextng.isae.fr (smtpextng.isae.fr [192.93.254.80]) by ietfa.amsl.com (Postfix) with ESMTP id 5DCD012006D for <tcpm@ietf.org>; Sat, 7 Sep 2019 04:03:34 -0700 (PDT)
Received: from smtp-int-tech (smtp-int-tech.isae.fr [10.132.1.56]) by smtpextng.isae.fr (Postfix) with ESMTP id E23BF71263; Sat, 7 Sep 2019 13:03:32 +0200 (CEST)
Received: from smtp-secung (smtp-secung.isae.fr [192.93.254.79]) by smtp-int-tech (Postfix) with ESMTP id B53544925AE; Sat, 7 Sep 2019 13:03:32 +0200 (CEST)
Received: from [192.168.1.58] (c2s31-2-83-152-88-205.fbx.proxad.net [83.152.88.205]) by smtp-secung (Postfix) with ESMTPSA id 758A770CBA; Sat, 7 Sep 2019 13:03:27 +0200 (CEST)
To: Yuchung Cheng <ycheng@google.com>
Cc: "tcpm@ietf.org Extensions" <tcpm@ietf.org>, Kuhn Nicolas <Nicolas.Kuhn@cnes.fr>
References: <CAM4esxQR5zeHC0g0MmCG3iF2js_2BU6+tdwCKi4ZiGFYMr5MRg@mail.gmail.com> <CAK6E8=f2fhOk_-_zq=cj+Bh13kGdVUsZNi+FvYcjtnbJdLDXbg@mail.gmail.com> <CAM4esxTj1A226PP1wNcdxwb_aXQemp-qX_7CpKYcjs5qyJH+Qg@mail.gmail.com> <84fac75f-07ea-e3a1-b9cd-33ffc8a6d454@isae-supaero.fr> <CAK6E8=dDJOhsdYqhdhnKmKktgygCn9+LLhA79=XO9W9+WK121g@mail.gmail.com>
From: Emmanuel Lochin <emmanuel.lochin@isae-supaero.fr>
Message-ID: <67a9baf6-76bc-29ef-0523-4571ae62c236@isae-supaero.fr>
Date: Sat, 07 Sep 2019 13:03:26 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0
MIME-Version: 1.0
In-Reply-To: <CAK6E8=dDJOhsdYqhdhnKmKktgygCn9+LLhA79=XO9W9+WK121g@mail.gmail.com>
Content-Type: multipart/alternative; boundary="------------1F686C920AB9D380141308F8"
Content-Language: en-US
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/VlB-ejQ4MxV64FQ_n_ZFVJiQXAY>
X-Mailman-Approved-At: Sat, 07 Sep 2019 11:12:02 -0700
Subject: Re: [tcpm] draft-ietf-tcpm-rack-05 review
X-BeenThere: tcpm@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: TCP Maintenance and Minor Extensions Working Group <tcpm.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/tcpm>, <mailto:tcpm-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/tcpm/>
List-Post: <mailto:tcpm@ietf.org>
List-Help: <mailto:tcpm-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tcpm>, <mailto:tcpm-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 07 Sep 2019 11:03:39 -0000

Hi Yuchung,

Thanks for your answer, I've asked this question as we observed a 
decrease of the performance of TCP transfer in some reordering scenario 
when RACK is enabled. In brief, the problem has been solved by disabling 
RACK.
I am involved in a CNES project (French space agency) where SATCOM 
systems are used (GEO or LEO) and in particular I work with Nicolas Kuhn 
from CNES (in copy of this email) .

To assess whether or not the problem effectively came from RACK, we have 
started a bunch of experiments using Mininet or simply using the 
loopback interface. The results presented below are done with Mininet 
except the last one done in localhost

The x-axis reports the size of the flows, basically we send 5 TCP flows 
in the same time of a given size and we repeat the experiments hundred 
of times over a Netem queue. We then compute the following statistics 
over these 500 flows for each flow length.

There is no artificial losses introduced with Netem, we only use it only 
to reorder packets. The nominal RTT is 500ms (equiv. to a GEO system) 
where some packets are reordered every 5, 10, 15 or 20 packets sent. 
These reordered packets have then an RTT=250ms. As you can see, in all 
cases when RACK is enabled, the completion time (time difference between 
the first packet received at destination and the last one) is always 
worse with RACK. The kernel is 4.15.0-60-generic.



We thought, may be, it was due to the reordering pattern which is too 
deterministic. We thus applied several other random patterns.
Below we present the Netem config documented in the TC manpage for 
simplicity (i.e. reorder 25% 50% gap 5 and 10)


But results obtained where the same.

In all these previous experiments the reorder delay is 50% of the RTT, 
and indeed, the RTT is important.
If we decrease it to 100ms, when the reorder delay corresponds to 90% of 
the RTT (meaning that RTT=100ms and reordered packets get 90ms), in that 
case, RACK performs much more better as shown below.




Using the loopback interface, even with low RTT (i.e. 100ms), and when 
the reordering delay is half the RTT (50ms), RACK still does not perform 
always better than 3DUPACK.


We really believe that RACK is a good idea, but it seems that the kernel 
implementation does not lead to what we expected. Do you have 
experienced such behavior or do you have measurements that thwart mine ?

Thanks

Emmanuel



Le 07/09/2019 à 00:32, Yuchung Cheng a écrit :
> Hi Emmanuel,
>
> Yes setting the sysctl to 0 will completely disable RACK. Although by 
> default it supports DUPTHRESH-based detection (as a simple extension) 
> beside time-based detection. You can disable that extension w/ 0x4. 
> But if you want absolutely old-style pure DUPTHRESH-based then you can 
> set that to 0.
>
>
> On Fri, Sep 6, 2019 at 3:24 AM Emmanuel Lochin 
> <emmanuel.lochin@isae-supaero.fr 
> <mailto:emmanuel.lochin@isae-supaero.fr>> wrote:
>
>     Hi Yuchung, all,
>
>     I have a question concerning the GNU/Linux kernel implementation
>     of RACK.
>     There are 3 sysctl options to enable RACK (0x1 0x2 and 0x4) but
>     none to disable it (or may be 0x0 is not documented). As
>     tcp_input.c implements this boolean function:
>
>     static bool tcp_is_rack(const struct sock *sk)
>     {
>             return sock_net(sk)->ipv4.sysctl_tcp_recovery &
>     TCP_RACK_LOSS_DETECTION;
>     }
>
>     can I consider that I can disable RACK by typing sysctl -w
>     net.ipv4.tcp_recovery=0 ?
>     I ask this question because I've seen several update done inside
>     the kernel to implement it and I want to be sure that I can really
>     go back to 3DUPACK scheme this way.
>
>     Cheers,
>
>     Emmanuel
>
>     Le 05/09/2019 à 04:44, Martin Duke a écrit :
>>     I think the proposed text is fine.
>>
>>     On Wed, Sep 4, 2019 at 5:55 PM Yuchung Cheng <ycheng@google.com
>>     <mailto:ycheng@google.com>> wrote:
>>
>>         On Tue, Sep 3, 2019 at 3:31 PM Martin Duke
>>         <martin.h.duke@gmail.com <mailto:martin.h.duke@gmail.com>> wrote:
>>
>>     <snip>
>>
>>         > (3) sec 7.3
>>         >
>>         > We have evaluated using the smoothed RTT (SRTT from
>>         >    [RFC6298] RTT estimation) or the most recently measured RTT
>>         >    (RACK.rtt) using an experiment similar to that in the
>>         Performance
>>         >    Evaluation section.  They do not make any significant
>>         difference in
>>         >    terms of total recovery latency.
>>         >
>>         > If there is truly no difference, then why not use SRTT as
>>         the standard?
>>         > Every TCP implementation has to store this, while min_rtt
>>         is unneeded for many (most?) congestion controls.
>>         >
>>         > Alternatively, you could strengthen this paragraph to not
>>         sound like it makes no difference..
>>         That's a good point -- our experiment at Google servers
>>         indeed didn't
>>         show much difference. But I think it's still better to use
>>         min_RTT
>>         than SRTT. On buffer-bloat friendly C.C. the SRTT could be
>>         orders of
>>         magnitude longer than the actual paths' RTT -- in my opinion
>>         factoring
>>         this network queuing delay in reordering window is not a good
>>         idea. So
>>         how about adding
>>
>>         'While the experiment does not show a difference between min
>>         RTT and
>>         SRTT, SRTT is less desirable to size the reordering window as it
>>         includes network congestion or delayed ACKs effects."
>>
>>
>>
>>     _______________________________________________
>>     tcpm mailing list
>>     tcpm@ietf.org  <mailto:tcpm@ietf.org>
>>     https://www.ietf.org/mailman/listinfo/tcpm
>
>     -- 
>     Emmanuel LOCHIN
>     Professeur ISAE
>     ISAE SUPAERO - Institut Supérieur de l'Aéronautique et de l'Espace
>     10 avenue Edouard Belin - BP 54032 - 31055 TOULOUSE CEDEX 4 FRANCE -
>     http://www.isae-supaero.fr
>     Tel +33 5 61 33 84 85 - Fax (+33) 5 61 33 83 45
>     Web :http://personnel.isae.fr/emmanuel-lochin/
>

-- 
Emmanuel LOCHIN
Professeur ISAE
ISAE SUPAERO - Institut Supérieur de l'Aéronautique et de l'Espace
10 avenue Edouard Belin - BP 54032 - 31055 TOULOUSE CEDEX 4 FRANCE -
http://www.isae-supaero.fr
Tel +33 5 61 33 84 85 - Fax (+33) 5 61 33 83 45
Web : http://personnel.isae.fr/emmanuel-lochin/