Re: [core] draft-ietf-core-coap-06 Congestion Control

Carsten Bormann <cabo@tzi.org> Thu, 05 May 2011 19:38 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 55292E0993 for <core@ietfa.amsl.com>; Thu, 5 May 2011 12:38:17 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -106.217
X-Spam-Level:
X-Spam-Status: No, score=-106.217 tagged_above=-999 required=5 tests=[AWL=0.032, BAYES_00=-2.599, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-4, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id cH+lAvwWevq4 for <core@ietfa.amsl.com>; Thu, 5 May 2011 12:38:16 -0700 (PDT)
Received: from informatik.uni-bremen.de (mailhost.informatik.uni-bremen.de [IPv6:2001:638:708:30c9::12]) by ietfa.amsl.com (Postfix) with ESMTP id D56D4E0961 for <core@ietf.org>; Thu, 5 May 2011 12:38:15 -0700 (PDT)
X-Virus-Scanned: amavisd-new at informatik.uni-bremen.de
Received: from smtp-fb3.informatik.uni-bremen.de (smtp-fb3.informatik.uni-bremen.de [134.102.224.120]) by informatik.uni-bremen.de (8.14.3/8.14.3) with ESMTP id p45Jc4YN017459; Thu, 5 May 2011 21:38:04 +0200 (CEST)
Received: from [192.168.217.112] (p5B3E63AF.dip.t-dialin.net [91.62.99.175]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by smtp-fb3.informatik.uni-bremen.de (Postfix) with ESMTPSA id E1AC156B; Thu, 5 May 2011 21:38:03 +0200 (CEST)
Mime-Version: 1.0 (Apple Message framework v1084)
Content-Type: text/plain; charset="us-ascii"
From: Carsten Bormann <cabo@tzi.org>
In-Reply-To: <F5CFF5DB-54B8-40CD-8897-7186C7605AE4@cisco.com>
Date: Thu, 05 May 2011 21:38:02 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <5756DA0A-5F11-4E70-BD8A-C521495E9665@tzi.org>
References: <F5CFF5DB-54B8-40CD-8897-7186C7605AE4@cisco.com>
To: Cullen Jennings <fluffy@cisco.com>
X-Mailer: Apple Mail (2.1084)
Cc: core WG <core@ietf.org>
Subject: Re: [core] draft-ietf-core-coap-06 Congestion Control
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.12
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: <http://www.ietf.org/mail-archive/web/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: Thu, 05 May 2011 19:38:17 -0000

> It's not clear to me that the drafts is a stop and wait congestion control. I can't see what stops parallel transaction to the same destination. Related to this, when doing non confirmable transaction, it does not seem clear how the congestion control works. Given the schema is stop and wait, I expect that this means one a request has been sent, a parallel request can not be initiated until a responses is received but I don't see text to that effect. 

I think this is related to being able to open multiple TCP connections at the same time.

RFC2616 had a "SHOULD" limit of up to two simultaneous TCP connections to the same server from one client.  This has become unpopular.

draft-ietf-httpbis-p1-messaging-14.txt says this (and has been saying it for a while):

   Clients (including proxies) SHOULD limit the number of simultaneous
   connections that they maintain to a given server (including proxies).

   Previous revisions of HTTP gave a specific number of connections as a
   ceiling, but this was found to be impractical for many applications.
   As a result, this specification does not mandate a particular maximum
   number of connections, but instead encourages clients to be
   conservative when opening multiple connections.

I would expect us to come up with similar text, but not limiting connections, but simultaneously outstanding interactions, where these are either CON/ACK interactions (message layer) or NON-based request/response interactions.
Section 3.2 of draft-eggert-core-congestion-control-01.txt suggests a possible direction for developing an algorithm that might be used, but as with TCP, I'd rather keep the algorithm separate from the protocol.

The remaining issue is how to congestion-control responses that are not 1:1 with requests, e.g. NON responses with mechanisms such as observe and responses to multicast requests.

> The draft also needs some sort of request timeout definition. Should address things like if A has an outstanding request to B, and A receives separate request from B, what happens. We don't want any glare problems.

I'm not sure I understand that part.  Yes, the cc state for NON-based request/response interactions has to time out (the one for CON/ACK does so automatically), say, at 4*MSL.  And, yes, if I send 20 NON requests, one each hour, the server might send all 20 responses at midnight at once.  This temporal decoupling is a variation of the non-1:1 aspect above and could be solved the same way.

Gruesse, Carsten