Re: [core] Mirja Kühlewind's Discuss on draft-ietf-core-coap-tcp-tls-08: (with DISCUSS)

Carsten Bormann <cabo@tzi.org> Wed, 10 May 2017 16: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 BE9C01242F5; Wed, 10 May 2017 09:38:26 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.199
X-Spam-Level:
X-Spam-Status: No, score=-4.199 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, URIBL_BLOCKED=0.001] 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 seZgWh5imJ8p; Wed, 10 May 2017 09:38:25 -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 0B7E312949B; Wed, 10 May 2017 09:38:24 -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 v4AGcLY2025838; Wed, 10 May 2017 18:38:21 +0200 (CEST)
Received: from client-0223.vpn.uni-bremen.de (client-0223.vpn.uni-bremen.de [134.102.107.223]) (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 3wNMP95JZGzDJGC; Wed, 10 May 2017 18:38:21 +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: <cc4e16ab-53ee-ffd1-a7b7-8779e609797d@nostrum.com>
Date: Wed, 10 May 2017 18:38:20 +0200
Cc: Mirja Kühlewind <ietf@kuehlewind.net>, core-chairs@ietf.org, The IESG <iesg@ietf.org>, core@ietf.org, draft-ietf-core-coap-tcp-tls@ietf.org
X-Mao-Original-Outgoing-Id: 516127100.157809-e5b23f81c66761fb4f3960f406dc54f3
Content-Transfer-Encoding: quoted-printable
Message-Id: <4DD370D3-62A2-460C-9D3F-0B96EA1A94F6@tzi.org>
References: <149442363148.22664.577627584227036852.idtracker@ietfa.amsl.com> <799244C3-CD27-4F46-B5E3-E24457BC7F4B@tzi.org> <cc4e16ab-53ee-ffd1-a7b7-8779e609797d@nostrum.com>
To: Adam Roach <adam@nostrum.com>
X-Mailer: Apple Mail (2.3273)
Archived-At: <https://mailarchive.ietf.org/arch/msg/core/IKBrANPRErH8-G_qtQPsXV2-LqU>
Subject: Re: [core] Mirja Kühlewind's Discuss on draft-ietf-core-coap-tcp-tls-08: (with DISCUSS)
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: Wed, 10 May 2017 16:38:27 -0000

On May 10, 2017, at 18:24, Adam Roach <adam@nostrum.com> wrote:
> 
> You state this like the complexity of adapting two different state machines to each other is unavoidably inherent to a proxy that performs these kinds of transport conversions; but it's not.
> 
> The only reason this complexity arises for CoAP is because the design in this document requires it. If you simply encapsulated UDP over TCP with simple framing, and left handing of reordering and deduplication identical to what currently exists for CoAP over UDP, then the proxy could shuttle messages from one side to the other, with the only needed state being that directly related to the TCP connection. (And if you left in the fields that you find unnecessary in TCP, it would be able to do it with far fewer memory copies, which would make for significantly better scalability; and, as a bonus, you wouldn't need multiple sets of parsing and marshalling code in endpoints that support both UDP and TCP).
> 
> Proxies between different transports don't *have* to be complicated.

There are indeed simple cases where UDP-to-UDP proxies can be implemented as UDP payload forwarders.
Unfortunately, things become a bit more complex as soon as the proxy has some fan-in (more than one client), or actually wants to provide some function such as caching.

For TCP, the WG decided we wanted to use TCP's reliability features instead of re-using our own on top of using TCP just as a datagram forwarding mechanism.  This favors the simplicity of an end-system over that of certain simple cases of a proxy.  (Which is in line with other design decisions we have made about allotting complexity to different places in the architecture.)

Grüße, Carsten