[tcpm] way forward (was Re: ECN++: Whether to allow ECT/CE marking of pure ACKs and what response to recommend to feedback reporting that a pure ACK was CE marked.

marcelo bagnulo braun <marcelo@it.uc3m.es> Fri, 13 October 2017 11:42 UTC

Return-Path: <marcelo@it.uc3m.es>
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 A65B61326FE for <tcpm@ietfa.amsl.com>; Fri, 13 Oct 2017 04:42:21 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.601
X-Spam-Level:
X-Spam-Status: No, score=-2.601 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=it-uc3m-es.20150623.gappssmtp.com
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 VYtx0YuyeB4N for <tcpm@ietfa.amsl.com>; Fri, 13 Oct 2017 04:42:18 -0700 (PDT)
Received: from mail-wm0-x230.google.com (mail-wm0-x230.google.com [IPv6:2a00:1450:400c:c09::230]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 38CC412EC30 for <tcpm@ietf.org>; Fri, 13 Oct 2017 04:42:18 -0700 (PDT)
Received: by mail-wm0-x230.google.com with SMTP id l68so21015392wmd.5 for <tcpm@ietf.org>; Fri, 13 Oct 2017 04:42:18 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=it-uc3m-es.20150623.gappssmtp.com; s=20150623; h=subject:to:references:cc:from:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding; bh=dAi1xAiFDNb3/sY8Ruj/ybRK9Ny63WqnHwoWRCFaA30=; b=uSog+sFFCSdLbXMedZSQOqJXVFKbijSjZL+eyUxXKSdcLjotq4c8ADvxRJhrzkAPG9 yhg7j0QFH4SAdgzD38ZU6NrvcZI1Y8duvf/+Y7otzMoFW023w90/QxescTJyv6thIJgD nu+xc6PNEPXl3m3/OUVHWvqKppqN6lC/uP/L0wTQd3iGd3RFQI6tkp8ISSYGBSMdp7ZD X3xOJmXb08kVgtjDBMbCzqFPp5WKwPi2cgdbnHd1UPSCtLg1qZkQkTDxu2Fm+/3Ruq5l 8I3M7eGNptRgCMtjOhi7+ACiJKqBOa+r/rzhFIzQgCCRhJyHwR3tGeRr6CiV7Obyo2Cx GBWQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:cc:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=dAi1xAiFDNb3/sY8Ruj/ybRK9Ny63WqnHwoWRCFaA30=; b=Jzk+NbhWwwUc6Q44GOIeaBMZQpmjixoCp/6+KcPpeyCVpiBI0++rIR/Kg+7p5tJDyr DO2lHocfwILv6+7/gTj5fN6GqZou1jMTtPOjbILvwPJqARgN76OjzcPpajfeup14F/x/ 1Jap3X4jsZMWr+xOWzzzNXVIEZ8IzX+t5bokbCI84B+tQM5YFL2einxY1kgf+wTt4Uhn JEbRJQ3/ih2cxNutvkTudv1tbTHtleQVc41XTt+biFqALU11EmSQVpGMC2d4oGVHHzuj sOMVLwlwakSttJiP/hLKzWWxa9boZesVSi1/Dli8SComk0g4RSyGiNeY+ieQQD7mSwob zTZg==
X-Gm-Message-State: AMCzsaUcxmk7HCAyok8rHedb2nsIh4iCtV344AdeIveBEfDGy+KyjvTK Gy3MwfHmDKkiI98JEGTbVC1CRA==
X-Google-Smtp-Source: ABhQp+Qkgh3RlAHdz1Mp9HQAFuTDwi/SEnS3qWR+Zjdf/Zsa3mzNpwNY3jLH08kDrsiBF1zlAz8lJw==
X-Received: by 10.28.45.5 with SMTP id t5mr1179350wmt.108.1507894936464; Fri, 13 Oct 2017 04:42:16 -0700 (PDT)
Received: from Macintosh-6.local ([2001:720:410:1010:1472:3c39:d26b:5130]) by smtp.gmail.com with ESMTPSA id l73sm1055298wmd.47.2017.10.13.04.42.15 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 13 Oct 2017 04:42:15 -0700 (PDT)
To: Mirja Kühlewind <mirja.kuehlewind@tik.ee.ethz.ch>
References: <839cc83c-f060-f812-c8e7-a2530798d6ee@it.uc3m.es> <22CB67D2-B6BE-4AF2-8FBD-68C9F3F91F11@tik.ee.ethz.ch> <76f10b55-0538-0832-3b58-5226ee39959e@it.uc3m.es> <62e06c68-3b97-ce39-558f-20189775b00c@tik.ee.ethz.ch>
Cc: tcpm IETF list <tcpm@ietf.org>, Jana Iyengar <jri@google.com>, Anna Brunstrom <anna.brunstrom@kau.se>
From: marcelo bagnulo braun <marcelo@it.uc3m.es>
Message-ID: <f3419c07-4f0b-c50a-3b2b-8efe4c601c74@it.uc3m.es>
Date: Fri, 13 Oct 2017 13:42:14 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:45.0) Gecko/20100101 Thunderbird/45.8.0
MIME-Version: 1.0
In-Reply-To: <62e06c68-3b97-ce39-558f-20189775b00c@tik.ee.ethz.ch>
Content-Type: text/plain; charset="utf-8"; format="flowed"
Content-Transfer-Encoding: 8bit
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/4OUKmhCKNyzSDEUOPsTMcSkz_ro>
Subject: [tcpm] way forward (was Re: ECN++: Whether to allow ECT/CE marking of pure ACKs and what response to recommend to feedback reporting that a pure ACK was CE marked.
X-BeenThere: tcpm@ietf.org
X-Mailman-Version: 2.1.22
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: Fri, 13 Oct 2017 11:42:22 -0000

El 13/10/17 a las 12:44, Mirja Kühlewind escribió:
>
>
> Anyway we seem to agree below on using ECN for pure ACKs only with 
> AccECN, right?
>

I am ok with that, other peopel feel this is a good way forward?

Regards, marcelo


> Mirja
>
>
>> In AccECN, the bias can be less, i think, because since the pure ACK has
>> not data, the amount of bits that experienced congestion is small, so
>> the bias is small. This is the reason why i think it is more acceptable
>> to have this behaviour with AccECN than with no AccECN.
>>
>> So, my understanding is that the options are
>> - not ECN marking of pure ACKs, which results in higher loss probability
>> - marking pure ACKs but not responding to congestion, bad precedent
>> - marking pure ACKs and responding to congestion, bias towards
>> decreasing the CWND
>> - marking pure ACKs, responding to congestion and adding some way to
>> increase the CWND, complicated and inaccurate.
>>
>> So, from my side, I think your proposal of only supporting ECN marking
>> of pure ACK when AccECN is supported seems a good trade-off, while not
>> perfect, may be a good way forward
>>
>>> If there is a congestion marking that means the link is congested 
>>> and you should react to it. Now the question is what’s the right 
>>> reaction, and there multiple cases here:
>>>
>>> 1) You send pure ACKs interleaved with data packets that means your 
>>> congestion window might be large and any indicate of congestion 
>>> should trigger a congestion control reaction accordingly.
>>>
>>> 2) You only send pure ACKs; in this case your congestion window 
>>> should reduce to min_win sooner or later anyway; if there is 
>>> congestion this might happen a bit quicker but if there is 
>>> congestion and you already know about this, you should also not just 
>>> resume sending with your previous rate. Then if you are at min_cwnd 
>>> you cannot reduce it any further, therefore you MAY consider using 
>>> AckCC in this case, or more generally speaking apply some algorithm 
>>> increase your delayed ack factor.
>>
>> See above, the concern here is the biased introduced towards reducing
>> the CWND.
>>
>>> I really don’t think that increasing the congestion window based on 
>>> ACK is even a possible option. You don’t get ACKs for ACKs so you 
>>> never know if an ACK was successfully received. That means you don’t 
>>> even have any information that would allow you to react on.
>>
>> You do get some idea of what ACKs got through, but i agree that given
>> the cumulative nature of ACKs, some acks can get lost undetected.
>> I agree this is not perfect, but not of the options are.
>> That being said, I also think that this option introduces complexity
>> with little benefit, so if all solutions are imperfect, we should at
>> least choose one that is at least simple.
>>
>> Regards, marcelo
>>
>>> Mirja
>>>
>>>> Am 09.10.2017 um 12:34 schrieb marcelo bagnulo braun 
>>>> <marcelo@it.uc3m.es>:
>>>>
>>>> Hi,
>>>>
>>>> Regarding, draft-ietf-tcpm-generalized-ecn, we still have the open 
>>>> issue regarding whether to allow ECT/CE marking in pure acks and 
>>>> what response to reccomend if a pure ack encountered congestion.
>>>>
>>>> After considering the discussion in the last meeting and in the ml, 
>>>> we propose the following text in the draft:
>>>>
>>>> ---------------------
>>>>
>>>> For the experiments proposed here, the TCP implementation will set
>>>> ECT on pure ACKs.  It can ignore the requirement in section 6.1.4 of
>>>> RFC 3168 to set not-ECT on a pure ACK.
>>>>
>>>> A host that sets ECT on pure ACKs SHOULD respond to the congestion 
>>>> signal resulting from pure ACKs being marked with the CE codepoint. 
>>>> The specific response will need to be defined as an update to each 
>>>> congestion control specification. Possible responses to congestion 
>>>> feedback include regulating the pure ACK rate (see AckCC [RFC5690]) 
>>>> or reducing the congestion window (CWND).
>>>>
>>>> However, if the congestion response implemented reduces the CWND 
>>>> upon the report of CE marking of Pure ACKs, then the congestion 
>>>> control algorithm must also increase the CWND upon delivery of pure 
>>>> ACKs without a CE mark, to avoid a bias in the congestion control 
>>>> algorithm.
>>>>
>>>> (We can also include some of the description of how to do this 
>>>> based on the text below for RFC3168 and AccECN in an appendix.)
>>>>
>>>> ---------------------
>>>>
>>>> Some background about this proposal:
>>>>
>>>> First of all, it's worth reminding that without ECN++, TCP 
>>>> currently is not required to detect loss of pure ACKs and is not 
>>>> required to react to them.
>>>> The current draft states that it is allowed to ECT/CE mark the pure 
>>>> ACKs and that:
>>>> "   A host that sets ECT on pure ACKs MUST reduce its congestion 
>>>> window
>>>>     in response to any congestion feedback, in order to regulate 
>>>> any data
>>>>     segments it might be sending amongst the pure ACKs.  It MAY also
>>>>     implement AckCC [RFC5690] to regulate the pure ACK rate, but 
>>>> this is
>>>>     not required. "
>>>>
>>>> The feedback we received in the Prague meeting was:
>>>>
>>>> - It is valuable to allow ECT/CE marking of pure ACK to avoid high 
>>>> drop rate when there is congestion. There is a strong case for 
>>>> ECN-capable pure ACKs as they are critical for connection performance.
>>>>
>>>> - The sender of the pure acks must respond (somehow) to the 
>>>> congestion signal resulting from getting CE marks in pure ACKs. 
>>>> Recommending not to respond to a received congestion signal seem 
>>>> like a bad recommendation to make in general and setting a bad 
>>>> precedent.
>>>>
>>>> There are two possible responses: reduce CWND (somehow) and/or ACK 
>>>> congestion control (ACK CC) (as defined in RFC5690).
>>>>
>>>> - The feedback regarding ACK CC is that it is too complex and with 
>>>> too many corner cases to mandate its implementation, so we should 
>>>> not mandate it.
>>>>
>>>> - Regarding reducing the CWND, there were several arguments against 
>>>> doing this. A very compelling argument is that since we do not 
>>>> increase the CWND when pure ACKs are successfully delivered, if we 
>>>> reduce the CWND when they are CE marked, then we have a strong bias 
>>>> towards reducing the CWND. In particular, in the case the one 
>>>> endpoint is only sending pure ACKs, the likely result is that the 
>>>> CWND will be 1 after a while.
>>>>
>>>> It is possible to address this issue by allowing the increase of 
>>>> CWND in case there are no CE marks in the pure ACKs.
>>>>
>>>> A possible approach for this would be the following:
>>>>
>>>> - if ECN++ is being used with RFC3168 ECN, then we simply do what 
>>>> is done with data packets, i.e. if during a RTT no ECE is received, 
>>>> the sender increases its CWND and if the sender receives one or 
>>>> more ECE marks, then it reduces its CWND. The only difference is 
>>>> that we include pure ACKs as well.
>>>>
>>>> - if ECN++ is used with AccECN, the situation is slightly more 
>>>> complex because the sender of the pure ACKs needs to keep track of 
>>>> the pure ACKs that got CE marked and those that didnt. But the 
>>>> sender of the pure ACKs knows how many pure ACKs it has sent. The 
>>>> other endpoint includes pure ACKs in the packet count of CE marked 
>>>> packets that is reported using AccECN, then the sender of the pure 
>>>> ACKs can figure out how many pure ACKs have been CE marked and how 
>>>> many were not. It then can feed this information to the congestion 
>>>> control algorithm.
>>>>
>>>> (The limitation of this approach is that lost pure ACKs are 
>>>> accounted as delivered pure ACKs without any CE marks, meaning that 
>>>> in the case of severe congestion, when pure ACKs are being dropped, 
>>>> the congestion control algorithm will include those lost pure ACK 
>>>> packets as delivered and increase the CWND the corresponding share. 
>>>> Since pure ACKs are small packets, it is not clear how much of a 
>>>> problem is this. Similarly (but worse), with 3168 feedback, even if 
>>>> detecting CE on pure ACKs, if pure ACKs are lost and there's no CE 
>>>> on a pure ACK within an RTT, cwnd will continue to increase. 
>>>> However, in both cases, it is still better with ECN++, because 
>>>> without ECN++ there was no response to either dropped or CE-marked 
>>>> pure ACKs.)
>>>>
>>>> It might be useful for the congestion response to be proportionate 
>>>> to an estimate of the bytes marked rather than packets marked, by 
>>>> adding an assumed header size on the wire to the size of every 
>>>> segment (otherwise pure ACKs would have zero size and not require 
>>>> any response). This would be up to the implementation.
>>>>
>>>>
>>>> Note that the response to the congestion signal is outside the 
>>>> scope of draft-ietf-generalized-ecn, because it depends on the 
>>>> specific CC, e.g. Reno, Cubic, Compound, etc)
>>>>
>>>> That being said, we should include some guidance of what type of 
>>>> response is sensible, particularly for the standards track CC 
>>>> [RFC5681].
>>>>
>>>> thoughts?
>>>>
>>>> Bob & Marcelo
>>>>
>>>
>>
>