[core] CoAP over TCP

Carsten Bormann <cabo@tzi.org> Fri, 24 October 2014 16:11 UTC

Return-Path: <cabo@tzi.org>
X-Original-To: core@ietfa.amsl.com
Delivered-To: core@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 10FC01A1BC2 for <core@ietfa.amsl.com>; Fri, 24 Oct 2014 09:11:49 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.55
X-Spam-Level:
X-Spam-Status: No, score=-1.55 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_EQ_DE=0.35] autolearn=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 D_H14cDCJSGJ for <core@ietfa.amsl.com>; Fri, 24 Oct 2014 09:11:46 -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 9E5BB1A1BA0 for <core@ietf.org>; Fri, 24 Oct 2014 09:11:45 -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 mailhost.informatik.uni-bremen.de (8.14.5/8.14.5) with ESMTP id s9OGBgRW028151 for <core@ietf.org>; Fri, 24 Oct 2014 18:11:42 +0200 (CEST)
Received: from eduroam-pool7-0064.wlan.uni-bremen.de (eduroam-pool7-0064.wlan.uni-bremen.de [134.102.112.64]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp-fb3.informatik.uni-bremen.de (Postfix) with ESMTPSA id 576A293; Fri, 24 Oct 2014 18:11:42 +0200 (CEST)
Content-Type: text/plain; charset="utf-8"
Mime-Version: 1.0 (Mac OS X Mail 8.0 \(1990.1\))
From: Carsten Bormann <cabo@tzi.org>
Date: Fri, 24 Oct 2014 18:11:39 +0200
X-Mao-Original-Outgoing-Id: 435859899.341694-29f77cb47c52bbbe3fa9fbaeb0a64723
Content-Transfer-Encoding: quoted-printable
Message-Id: <EAEFE980-6DDA-4616-AEB0-AF1D23A6E552@tzi.org>
To: "core@ietf.org WG" <core@ietf.org>
X-Mailer: Apple Mail (2.1990.1)
Archived-At: http://mailarchive.ietf.org/arch/msg/core/_70csY4vfJaBiWickdw_4cEXPkw
Subject: [core] CoAP over TCP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.15
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: Fri, 24 Oct 2014 16:11:49 -0000

In alternative transports, I believe we have three hot topics:

1) General issues.  draft-silverajan-core-coap-alternative-transports is a good basis for this and we will do the call for adoption soon.

2) CoAP over SMS.  This is also related to the question of DTLS over SMS.  We have a good draft for the former, which is mostly waiting for (1).  draft-fossati-dtls-over-gsm-sms merits some discussion.

3) CoAP over TCP.  draft-bormann-core-coap-tcp-01 is a summary of the design choices. draft-tschofenig-core-coap-tcp-tls selects one option without explaining why.  draft-savolainen-core-coap-websockets (apart from being focused on web sockets, so it would need the addition of a length field) selects a different set of options, also not really explaining why.  This merits a discussion.

I believe we should have a quick round of discussion about (3).  CoAP over TCP is of strong interest to people building scalable cloud-side CoAP implementations.  CoAP over TCP also is a NAT traversal strategy (where the server builds the connection to a client in the cloud).  Finally, CoAP over TCP can be useful to combine the better congestion control of TCP with the economy of CoAP.  So there are enough reasons to get this going.

The main questions I see are:

a) what is the delimiting mechanism?
   — length field
     — fixed 4-byte, fixed 2-byte, variable?
   — MINION-style (delimiters)
   — extending the payload marker
b) what part of the CoAP header remains active over a reliable transport?  Can we lose
   — the message id,
   — the message type,
   — the version number?
c) any negotiation/version indication mechanisms?
   — starttls???
   — server/client prompts
   — ALPN
   — other payloads, e.g. stream errors?

Grüße, Carsten