[tcpm] 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> Mon, 09 October 2017 10:34 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 0F1531344B6 for <tcpm@ietfa.amsl.com>; Mon, 9 Oct 2017 03:34:08 -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 lnY0ElD2S9D3 for <tcpm@ietfa.amsl.com>; Mon, 9 Oct 2017 03:34:05 -0700 (PDT)
Received: from mail-wm0-x22d.google.com (mail-wm0-x22d.google.com [IPv6:2a00:1450:400c:c09::22d]) (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 3208D1344AA for <tcpm@ietf.org>; Mon, 9 Oct 2017 03:34:05 -0700 (PDT)
Received: by mail-wm0-x22d.google.com with SMTP id t69so21159866wmt.2 for <tcpm@ietf.org>; Mon, 09 Oct 2017 03:34:05 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=it-uc3m-es.20150623.gappssmtp.com; s=20150623; h=to:from:subject:message-id:date:user-agent:mime-version :content-transfer-encoding; bh=msEOmGPaVlW1oKnlmLQxM5qk0u4d4MzGTFbSjelit38=; b=RgrcshsNpFJG2IbisK9zD8JVv2JfAvJfRXSqHKh3DWiyoEjeVNuda0/z+KbTAFpze7 rBr++dbu6Yf+7z2nWmAFAVbBZsb7DMqXzi58fSTbcf4Vb/wDUWs7DCN9t9Kf5z/DZmha 6fH5J8Md0gd0ZGkpUuU3YMJ0pRjKgLLoSu1QCEU49s1GX4qdlS8Ouo31li7uKUhMDLE+ tLXOG2+X5Q5g9abs8niugYOnpgSeMS4x7Xqg1uSVjoZy725UFVGjIy9uNwYxrSSls+Kb XiqhmUpDs9kkzdZl5vdARmumqjIQK/YI0BjG9xQu8qOQtpnKi/nPS9UhetxxTQLGfYVW SpKg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:to:from:subject:message-id:date:user-agent :mime-version:content-transfer-encoding; bh=msEOmGPaVlW1oKnlmLQxM5qk0u4d4MzGTFbSjelit38=; b=ah6O96jg7eIUrHRms0aGyJ08dVmEdZLB5AdhZaf5ha/011oNZB4/0NNgvTwCBqRMjh N6Q/1BrxjWaOizQtkIs9ePXgkpPL4D5ILNvxhCMsgH1AOuqnXqCaMlJyzmMwbW9XjmxW y/hFC7AsOZXzK9J5NXYJXr/V1iSnwtE5B/8zmjiFrUYCu+n5ZsLU12EQxbt/z6urrMqW ITvoY37QHwEdSkBHE7o7GpRzbjSuGxG72fgH5fkhM24RHbZxwROJMQ++Sl+0RZL4hF01 U9llPAp5mTMQ8hdcBzqP4/gqEamaVKonpSJiZb6xbMaGpcGPJ8nUYKPH2c4GdMJ5SjsT dKFQ==
X-Gm-Message-State: AMCzsaWt6hnVstk8wUvZuf0j0r75LWhdlWSQi4t3baFSytsuwuyRkaSU SwVl870f5azS7P/F71pkXa/IgA==
X-Google-Smtp-Source: AOwi7QAwEOeER2C1r/dRXASAbCOQw/M05PGD3i7mLX29f/UAhJbl/qItW3qcEXHSkrpw1DpFe0jT1g==
X-Received: by 10.28.56.198 with SMTP id f189mr8972017wma.16.1507545243591; Mon, 09 Oct 2017 03:34:03 -0700 (PDT)
Received: from Macintosh-6.local ([2001:720:410:1010:d4cb:b7e5:e1f6:10ce]) by smtp.gmail.com with ESMTPSA id t43sm16546479wrc.74.2017.10.09.03.34.02 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 09 Oct 2017 03:34:03 -0700 (PDT)
To: tcpm IETF list <tcpm@ietf.org>, Mirja Kühlewind <mirja.kuehlewind@tik.ee.ethz.ch>, Jana Iyengar <jri@google.com>, Anna Brunstrom <anna.brunstrom@kau.se>
From: marcelo bagnulo braun <marcelo@it.uc3m.es>
Message-ID: <839cc83c-f060-f812-c8e7-a2530798d6ee@it.uc3m.es>
Date: Mon, 09 Oct 2017 12:34:02 +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
Content-Type: text/plain; charset="utf-8"; format="flowed"
Content-Transfer-Encoding: 7bit
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/NGMDNpFFxd1aoujzMiC13xVF3N0>
Subject: [tcpm] 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: Mon, 09 Oct 2017 10:34:08 -0000

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