[tcpPrague] Is there another way to do this?
Bob Briscoe <research@bobbriscoe.net> Thu, 30 July 2015 11:53 UTC
Return-Path: <research@bobbriscoe.net>
X-Original-To: tcpprague@ietfa.amsl.com
Delivered-To: tcpprague@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 235A21A1AD9 for <tcpprague@ietfa.amsl.com>; Thu, 30 Jul 2015 04:53:03 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.1
X-Spam-Level:
X-Spam-Status: No, score=0.1 tagged_above=-999 required=5 tests=[BAYES_50=0.8, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=ham
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 EHZGjjojc_hN for <tcpprague@ietfa.amsl.com>; Thu, 30 Jul 2015 04:53:00 -0700 (PDT)
Received: from server.dnsblock1.com (server.dnsblock1.com [85.13.236.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id EDA891A1B3E for <tcpPrague@ietf.org>; Thu, 30 Jul 2015 04:52:59 -0700 (PDT)
Received: from [81.174.189.118] (port=39155 helo=[192.168.0.11]) by server.dnsblock1.com with esmtpsa (TLSv1.2:DHE-RSA-AES128-SHA:128) (Exim 4.85) (envelope-from <research@bobbriscoe.net>) id 1ZKmOQ-0006n3-AC; Thu, 30 Jul 2015 12:52:58 +0100
Message-ID: <55BA1019.7030600@bobbriscoe.net>
Date: Thu, 30 Jul 2015 12:52:57 +0100
From: Bob Briscoe <research@bobbriscoe.net>
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.8.0
MIME-Version: 1.0
To: Costin RAICIU <costin.raiciu@cs.pub.ro>, TCP Prague IETF List <tcpPrague@ietf.org>
Content-Type: multipart/alternative; boundary="------------080900060301060703060509"
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - server.dnsblock1.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - bobbriscoe.net
X-Get-Message-Sender-Via: server.dnsblock1.com: authenticated_id: in@bobbriscoe.net
Archived-At: <http://mailarchive.ietf.org/arch/msg/tcpprague/8SQYC3e-AUNQ8yuXYxHVvFnSSqk>
X-Mailman-Approved-At: Thu, 30 Jul 2015 05:22:27 -0700
Subject: [tcpPrague] Is there another way to do this?
X-BeenThere: tcpprague@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: "To coordinate implementation and standardisation of TCP Prague across platforms. TCP Prague will be an evolution of DCTCP designed to live alongside other TCP variants and derivatives." <tcpprague.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/tcpprague>, <mailto:tcpprague-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/tcpprague/>
List-Post: <mailto:tcpprague@ietf.org>
List-Help: <mailto:tcpprague-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tcpprague>, <mailto:tcpprague-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 30 Jul 2015 11:53:03 -0000
Costin & all on the tcpprague list, You asked "Is there another way to do this?" in the bar BoF in Prague. I am taking "this" to mean the features of the proposed new service (L4S),. Then the questions becomes, "Are all the elements needed at once?": * Low Loss, * Low Latency * Scalable throughput. [For those on the list who were not in Prague, a way to achieve L4S is described in this pre-print: "Data Centre to the Home <http://www.bobbriscoe.net/projects/latency/dctth_preprint.pdf>"] There are a number of elements to "this", so I'll take them in vaguely decreasing order of obviousness. Then everyone can identify any unnecessary assumptions. A. ECN-capable (sndr, rcvr, aqm)? B. Shift ECN smoothing from AQM to source (aqm, sndr)? C. Second queue (aqm)? D. Scalable congestion control (sndr)? E. Accurate ECN feedback (sndr, rcvr)? F. Finally, a more intangible question: significantly better service vs incrementally better? The further features we discussed in the Bar BoF are secondary to all these questions. Taking each in turn... *A. Is ECN essential? * (sndr, rcvr, aqm) I think we're all agreed that ECN is essential. Without ECN: #1. as load increases (i.e. as each TCP flow's rate has to decrease), an AQM has to introduce excessive drop to keep queuing delay low. (If you weren't in the AQM wg, see "questioning a fixed delay target <https://www.ietf.org/proceedings/93/slides/slides-93-aqm-4.pdf>" or the tech report <http://www.bobbriscoe.net/projects/latency/credi_tr.pdf> that backs it up). #2. Throughput scaling requires roughly 1 congestion signal per RTT at high flow rates, at least within an order of magnitude. As load increases, segments per RTT (the window) has to reduce, so the drop ratio has to increase. With low RTT (assuming we have achieved v low queuing delay) the window is also smaller. See also {Note 1} *B. Is shifting smoothing of ECN signals from the AQM to the source essential?* (aqm, sndr) There's no reason to smooth ECN in the AQM, and little harm from not smoothing it. A newly implemented source can smooth incoming ECN feedback itself. If a classic TCP-ECN source does not smooth ECN feedback, it's not a killer, because it will ignore >1 feedback per RTT anyway. If a source smooths ECN that has already been smoothed in the AQM, its response could be sluggish, but we can make this unlikely as follows: Smoothing (burst allowance) should be turned off by default for ECN in all AQMs (RED, PIE, CoDel, etc) now. *C. Is a second queue essential?* (aqm) With one queue, 'new' traffic shares the latency of the queue with 'classic' Internet traffic. So to achieve low latency with one queue, the AQM threshold for all traffic has to be shallow. To achieve really low latency, this means classic traffic would severely underutilise capacity. Colleagues in the RITE project tried shifting the AQM threshold down only if there was no ECN traffic, but they couldn't get it to work. Is full utilisation important? Well, probably not as important as it used to be. But network operators (ISPs or DC operators) are not going to deploy an AQM that prevents existing traffic using a large proportion of the link capacity. *D. **Is scalable **congestion control essential?** *(sndr) As under question A, throughput scaling requires roughly 1 congestion signal per RTT at high flow rates, at least within an order of magnitude. I.e. if the congestion control algo gives packet rate proportional to 1/p^b, where p is drop probability, then scalable means b=1 For now, we can probably make do with b<1 as long as b~=1, e.g. b=0.8 or something similar. However, we will need b=1 in the future. So it all depends whether we can map out a route to increase to b=1 later, bearing in mind this traffic will still have to co-exist with b=0.5 (Reno) as well as b=0.75 (Cubic). *E. Is Accurate ECN feedback essential?* (sndr, rcvr) Without AccECN, each downward rate response to one ECN feedback has to be greater, because it has to be enough for a whole round trip. This makes the sawteeth bigger, which creates the dilemma between higher delay and lower utilisation. This is primarily important when numerous flows are arriving and departing but the total number is not huge (i.e. typical conditions on an access link, or in a data centre). *F. Is sIgnificantly better service essential (vs incrementally better)?** *Altho this is the most controversial question, I think it is the most important: * Without the wow factor of the potential for new products and applications, deployment has to be pushed by a few individual visionary engineers, rather than pulled by product and marketing /teams/. * Starting with a new queue with near-zero queuing delay creates 'social pressure' to keep it that way (similar to the TCP friendliness meme). This may be sufficient to avoid the need for behaviour policing. Whereas, incrementally better delay gets polluted by incrementally worse behaviour, so it either never gets anywhere, or it requires complex behaviour policing. HTH Bob {Note 1} Both the dilemmas A#1 & A#2 are inherent to any congestion control of the form r = K/(R^c * p^b), where r : packet rate K: constant R: RTT p: drop probability c & b are constants of the congestion control algo. Even if c=0 (i.e. the congestion control is RTT-independent), dilemma #1 becomes the same as dilemma #2. -- ________________________________________________________________ Bob Briscoe http://bobbriscoe.net/
- [tcpPrague] Is there another way to do this? Bob Briscoe