Re: [core] draft-ietf-core-cocoa-01

Carsten Bormann <cabo@tzi.org> Sat, 02 September 2017 19:11 UTC

Return-Path: <cabo@tzi.org>
X-Original-To: core@ietfa.amsl.com
Delivered-To: core@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id C0BEB133072 for <core@ietfa.amsl.com>; Sat, 2 Sep 2017 12:11:32 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.2
X-Spam-Level:
X-Spam-Status: No, score=-4.2 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3] 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 lIzwPoZA3rNj for <core@ietfa.amsl.com>; Sat, 2 Sep 2017 12:11:30 -0700 (PDT)
Received: from mailhost.informatik.uni-bremen.de (mailhost.informatik.uni-bremen.de [IPv6:2001:638:708:30c9::12]) (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 16DA7132D92 for <core@ietf.org>; Sat, 2 Sep 2017 12:11:29 -0700 (PDT)
X-Virus-Scanned: amavisd-new at informatik.uni-bremen.de
Received: from submithost.informatik.uni-bremen.de (submithost.informatik.uni-bremen.de [134.102.201.11]) by mailhost.informatik.uni-bremen.de (8.14.5/8.14.5) with ESMTP id v82JBQ4W022502; Sat, 2 Sep 2017 21:11:26 +0200 (CEST)
Received: from [192.168.217.119] (p5DC7FC78.dip0.t-ipconnect.de [93.199.252.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by submithost.informatik.uni-bremen.de (Postfix) with ESMTPSA id 3xl5Lk10K9zDLTc; Sat, 2 Sep 2017 21:11:26 +0200 (CEST)
Content-Type: text/plain; charset="utf-8"
Mime-Version: 1.0 (Mac OS X Mail 10.3 \(3273\))
From: Carsten Bormann <cabo@tzi.org>
In-Reply-To: <b20bb46a-26a6-9c43-e13f-d970c3095015@gmx.net>
Date: Sat, 02 Sep 2017 21:11:25 +0200
Cc: "core@ietf.org WG" <core@ietf.org>
X-Mao-Original-Outgoing-Id: 526072285.238587-fadc723dec638cae39e96297ca831219
Content-Transfer-Encoding: quoted-printable
Message-Id: <0B85FE69-4036-4FDF-BDB4-37E208440E53@tzi.org>
References: <b20bb46a-26a6-9c43-e13f-d970c3095015@gmx.net>
To: Hannes Tschofenig <hannes.tschofenig@gmx.net>
X-Mailer: Apple Mail (2.3273)
Archived-At: <https://mailarchive.ietf.org/arch/msg/core/hn2i6ctFVTq933PDtS8n9sUT_o0>
Subject: Re: [core] draft-ietf-core-cocoa-01
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/core/>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 02 Sep 2017 19:11:33 -0000

Hi Hannes,

> On Sep 2, 2017, at 20:22, Hannes Tschofenig <hannes.tschofenig@gmx.net> wrote:
> 
> Hi draft-ietf-core-cocoa-01-authors, Hi all,
> 
> I have started to read the CoAP congestion control document and I have a
> few comments.

Thank you; this is very useful input.

> One of the most important sections of a document, the introduction
> section, is empty.

Indeed, that is one editorial item that we need to do: extract material from the two referenced I-Ds and putting it here.  But let me try to provide concise answers to your questions here as well; we can work this into an introduction later.

> As a reader I would find it useful
> * to learn what the perceived problem is, and

The problem is that the basic congestion control (CC) provided by RFC 7252 is adaptive only in a very crude way (counting the number of retransmissions of a single message, starting fresh for every new message).  It therefore also has to be very conservative, with a basic time constant of 2 to 3 seconds (dithered).

CoCoA provides a more advanced CC, keeping some state at a message initiator about the path to the peer.  It is still very conservative, but can be less so if the path is consistently good.

What you get is a faster reaction to packet losses in cases where the actual round trip time is lower than the basic CC’s time constant.  You also get somewhat more (!) conservative behavior in a truly deteriorated situation.

> * to have enough information to decide whether I want to implement this
> specification.

If you have the memory at the message initiator (per peer storage, about 4 bytes needed per peer plus the space needed to identify that peer) and the space for a few additional lines of code, you want to implement this specification.
(Note that you always can fall back to basic CC if the per-peer storage space runs out.)

> Are there answers to these questions?

There are, but we haven’t spent time on creating WG consensus about these answers.

> I know that there are these other referenced documents that **may**
> contain some of that necessary content but do you expect the reader to
> read them to understand this document? I think this document has to be
> self-contained.

I agree that we shouldn’t be relying on expired I-Ds.

> I also believe that many readers are worried that the enhancements to
> CoAP over UDP quickly turn into CoAP over TCP.

Moving to TCP is a completely different class of complexity (several orders of magnitude more than just adding CoCoA).

> Are there suggestions on
> when a deployment should switch to CoAP over TCP rather than using CoAP
> over UDP with this advanced congestion control algorithm?

The intro to CoAP over TCP gives some reasons for switching to CoAP over TCP that are unrelated to CC; these are the actual motivations that led to developing the spec.  But indeed, switching to a much more powerful transport protocol also has side benefits.

The CC benefits of CoAP over TCP as compared to CoAP over UDP are that TCP CC is much more aggressive.
(This can be a bug as well as a feature!)
If your application is an elephant and not an ant — it relies on filling up the bitrate of a path, or on getting a fair share of the total bitrate when competing with aggressive TCP flows on a congested path — you probably need TCP.  If your application needs somewhat consistent behavior in the presence of significant packet losses, then TCP doesn’t help at all (or you need a TCP implementation that is specifically tweaked beyond the standard algorithms in order to deal with this situation).

I hope this quick reaction helps you in getting your questions answered; now let’s put that information into the document as well.

Grüße, Carsten