[tcpm] last_max in CUBIC

Nicolas Kuhn <nicolas.kuhn@telecom-bretagne.eu> Thu, 23 April 2015 16:22 UTC

Return-Path: <nicolas.kuhn@telecom-bretagne.eu>
X-Original-To: tcpm@ietfa.amsl.com
Delivered-To: tcpm@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 0B6561A3BA3 for <tcpm@ietfa.amsl.com>; Thu, 23 Apr 2015 09:22:52 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.349
X-Spam-Level:
X-Spam-Status: No, score=0.349 tagged_above=-999 required=5 tests=[BAYES_40=-0.001, HELO_EQ_FR=0.35, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001] autolearn=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 FTKkLqzASh4a for <tcpm@ietfa.amsl.com>; Thu, 23 Apr 2015 09:22:49 -0700 (PDT)
Received: from zproxy220.enst-bretagne.fr (zproxy220.enst-bretagne.fr [192.108.117.9]) by ietfa.amsl.com (Postfix) with ESMTP id 97F831A6EF0 for <tcpm@ietf.org>; Thu, 23 Apr 2015 09:22:42 -0700 (PDT)
Received: from localhost (localhost [127.0.0.1]) by zproxy220.enst-bretagne.fr (Postfix) with ESMTP id 2A341301FB for <tcpm@ietf.org>; Thu, 23 Apr 2015 18:22:41 +0200 (CEST)
Received: from zproxy220.enst-bretagne.fr ([127.0.0.1]) by localhost (zproxy220.enst-bretagne.fr [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id GoYI8PCvxTJb for <tcpm@ietf.org>; Thu, 23 Apr 2015 18:22:40 +0200 (CEST)
Received: from localhost (localhost [127.0.0.1]) by zproxy220.enst-bretagne.fr (Postfix) with ESMTP id 4E4BA301FD for <tcpm@ietf.org>; Thu, 23 Apr 2015 18:22:40 +0200 (CEST)
X-Virus-Scanned: amavisd-new at zproxy220.enst-bretagne.fr
Received: from zproxy220.enst-bretagne.fr ([127.0.0.1]) by localhost (zproxy220.enst-bretagne.fr [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id 9vad-ftdgbwE for <tcpm@ietf.org>; Thu, 23 Apr 2015 18:22:40 +0200 (CEST)
Received: from [172.24.36.178] (c-89-160-21-91.cust.bredband2.com [89.160.21.91]) by zproxy220.enst-bretagne.fr (Postfix) with ESMTPSA id 95327301FB for <tcpm@ietf.org>; Thu, 23 Apr 2015 18:22:34 +0200 (CEST)
From: Nicolas Kuhn <nicolas.kuhn@telecom-bretagne.eu>
Content-Type: multipart/alternative; boundary="Apple-Mail=_E234CAB6-EBD5-4349-892B-2C69F250A2DC"
Message-Id: <EA2D4071-0A9F-4951-B38B-D8FE23B6A86F@telecom-bretagne.eu>
Date: Thu, 23 Apr 2015 18:22:23 +0200
To: tcpm@ietf.org
Mime-Version: 1.0 (Mac OS X Mail 8.0 \(1990.1\))
X-Mailer: Apple Mail (2.1990.1)
Archived-At: <http://mailarchive.ietf.org/arch/msg/tcpm/i8BunwamptHSgkjZqyxbVDzsFn4>
Subject: [tcpm] last_max in CUBIC
X-BeenThere: tcpm@ietf.org
X-Mailman-Version: 2.1.15
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: <http://www.ietf.org/mail-archive/web/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: Thu, 23 Apr 2015 16:22:52 -0000

Hi all, 

We were currently working on CUBIC and LEDBAT in NS-2, using Michael Welzl’s updated TCP Linux for NS-2 
[http://www.ietf.org/mail-archive/web/iccrg/current/msg01160.html]. 
We see some strange behaviour in CUBIC’s window reduction, which we wanted to share with you here.

— Topology — 

The topology is a simple dumbbell topology with a bottleneck of 10Mbps and an RTT of 100ms. The queue size of the router is set 
to 42 packets (with DropTail). There are two non-application limited bulk flows that randomly start within the first second of the simulation. 
Flow#1 is CUBIC (using ns-2.35/tcp/src/tcp_cubic.c version);
Flow#2 is LEDBAT with a target delay of 5 ms or 25ms.

— Problem illustration — 

In cwnd_case_1_default.pdf and cwnd_case_2_default.pdf, we plot the congestion window evaluation and the 
“new last_max_cwnd”, that is the W_last_max in the CUBIC draft [https://datatracker.ietf.org/doc/draft-zimmermann-tcpm-cubic].



We recall here how CUBIC deals with fast convergence: 

      if (W_max < W_last_max){     
          W_last_max = W_max;        
          W_max = W_max*(2-beta)/2;   
      } else {   
          W_last_max = W_max  
      }

In the case with LEDBAT25, at 15s, W_last_max “should” have been reduced, but we have  W_max == W_last_max,
which makes that CUBIC does not reduce W_last_max and “loops”, would not have its expected behaviour.  

— Problem resolution — 

Based on that observation, we have changed the following CUBIC code as follows:
 
      if (W_max < W_last_max){     
-> 
      if (W_max <= W_last_max){    

We plot the updated performance in cwnd_case_1_NK.pdf and cwnd_case_2_NK.pdf.

 


— Discussion — 

We acknowledge that this effect may not occur often in real life and might be a simulation
artefact. However, we have been looking around and are wondering the rationale of having

      if (W_max < W_last_max){   

instead of 

      if (W_max <= W_last_max){   

What do you think about it ?
Why would not we change the ‘<‘ for a ‘<=‘ ?

Kind regards,  

Nicolas KUHN
Emmanuel LOCHIN
Si Quoc Viet TRANG