Re: [Lwip] draft-gomez-lwig-tcp-constrained-node-networks-03

Hannes Tschofenig <hannes.tschofenig@gmx.net> Sun, 01 October 2017 09:18 UTC

Return-Path: <hannes.tschofenig@gmx.net>
X-Original-To: lwip@ietfa.amsl.com
Delivered-To: lwip@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id D0CD1134698 for <lwip@ietfa.amsl.com>; Sun, 1 Oct 2017 02:18:26 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.4
X-Spam-Level:
X-Spam-Status: No, score=-5.4 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-2.8, SPF_PASS=-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 oNfJCPLbZvMs for <lwip@ietfa.amsl.com>; Sun, 1 Oct 2017 02:18:24 -0700 (PDT)
Received: from mout.gmx.net (mout.gmx.net [212.227.15.15]) (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 DC8F0134694 for <lwip@ietf.org>; Sun, 1 Oct 2017 02:18:23 -0700 (PDT)
Received: from [192.168.91.203] ([80.92.122.248]) by mail.gmx.com (mrgmx002 [212.227.17.190]) with ESMTPSA (Nemesis) id 0Lm3H7-1dPWgd28lF-00ZhNn; Sun, 01 Oct 2017 11:18:18 +0200
To: "Scharf, Michael (Nokia - DE/Stuttgart)" <michael.scharf@nokia.com>, "jon.crowcroft@cl.cam.ac.uk" <jon.crowcroft@cl.cam.ac.uk>, Carles Gomez Montenegro <carlesgo@entel.upc.edu>, "lwip@ietf.org" <lwip@ietf.org>
References: <ad1ebfaf-03b4-9b3c-4a2d-da3eda7c4648@gmx.net> <AM5PR0701MB2547A9404D9176B827ABECCC93890@AM5PR0701MB2547.eurprd07.prod.outlook.com>
From: Hannes Tschofenig <hannes.tschofenig@gmx.net>
Openpgp: id=071A97A9ECBADCA8E31E678554D9CEEF4D776BC9
Message-ID: <5122d2b8-2155-734f-f880-9001beeae5b8@gmx.net>
Date: Sun, 01 Oct 2017 11:18:17 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0
MIME-Version: 1.0
In-Reply-To: <AM5PR0701MB2547A9404D9176B827ABECCC93890@AM5PR0701MB2547.eurprd07.prod.outlook.com>
Content-Type: text/plain; charset="utf-8"
Content-Language: en-US
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K0:TkfN9luBy1pfT6MikAbueMsvsCWb95CWvktV//XlQ73bsg9/gtG alm4nGnPFCFBSgj92wRiFrknrBgxIyWYmTrwlFV0B2Q5WohQ82cpKql6HnihqvWJcnbH+86 tUSNMKQG+obiY28Oneuxv+goSZOaitrmVwalG+atnV6QMp1UOSgpIs8xkoXKwupy94pG7jg coALg1EhGax/5sK8c/Vzw==
X-UI-Out-Filterresults: notjunk:1;V01:K0:Ln3ZGD5MiG0=:OzbmGnh1fHapaAVJMLUlT+ yIL47kEUYrohjGm1MDMCHqc6aioI+Bu5XGRiB9zg/7nGOgwxBrQTw0gdbYsSJRyIPQ6d07n21 HgX6SbyUyIWH+FAB5v1GQZVN4qE9QSNVnzi/Mbwg2GD7WMAG0oqYF/KxhlgtOhdzv4AaYDGMf BEGDdbKwukCMe7VxrXcsrPJnedzLVluOM49ayvE39efXfWPp+hpsDzxNX2lVjGUBlsUdWiNrj nvbydRmTEJJZcNLw+NNHH047+shxoKq+iVslCZiMA07RZtDdM7G8AF4qsGW52fp13ozUDhNRT DOJ9XW5z3xSZUKEUPLchXNbUdVAREUKRwg8BnvWBBZmek/x1loLLQGGMrX/448Qiv8TdT4TM8 9cOI2UO3MZ+hCGaNhO1Ol6H53ESjMdzD85BU0sNLu6jbr3NGv/rQDhO8NpYL/kLqrUB2DLnzr WbQqgcyTH4SWcKqg5nGKWNGF8aKSrc5M6SeZvfVilpidARljXCaAa8JG3ysVbFCMM6shEj4yJ 4ueC4P+ToiYtViVCSf+zkyXJFCYpX+rvFQNX8w+SORloKfa5KDBk0BJuRRh+4HFLuTO3k5CiC uYXd/v6oSrF+hLmTr8UP25GWeNmq1lU2zfPjsDm2K16dNu9TMQ3X1km8CO3BzOhghpx+VzLWV rJy1wfh15tyLdNJR2WpGlqMx+6LERAbmAe2LFuUoTs9o6glI39Z5tAnoj0KTGcqF9iwJx0bn3 G7J8zXVAdsriJgBb8RZ93HKWZE/7hfX0qEW29vKndBIzR+UYxWR0PhahtvAaDJMh3sE8aArFR B1bejMPivGauoA6PZJ4jxAEwcylw93mPqxTX7BmRNsCUuseUAE=
Archived-At: <https://mailarchive.ietf.org/arch/msg/lwip/qPu-roLnEsrzk4dODAT6FmWtYxc>
Subject: Re: [Lwip] draft-gomez-lwig-tcp-constrained-node-networks-03
X-BeenThere: lwip@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: Lightweight IP stack <lwip.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/lwip>, <mailto:lwip-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/lwip/>
List-Post: <mailto:lwip@ietf.org>
List-Help: <mailto:lwip-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/lwip>, <mailto:lwip-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 01 Oct 2017 09:18:27 -0000

Hi Michael,

the document has in the meanwhile become a working group item and I was
wondering whether you and your co-authors have had a chance to look at
the comments in the meanwhile.

Ciao
Hannes

On 08/11/2017 10:37 AM, Scharf, Michael (Nokia - DE/Stuttgart) wrote:
> Hi Hannes,
> 
> Thanks a lot for this very valuable review, which will be addressed. Please give us some time to come back with actual wording proposals.
> 
> Thanks
> 
> Michael
> 
> 
>> -----Original Message-----
>> From: Hannes Tschofenig [mailto:hannes.tschofenig@gmx.net]
>> Sent: Thursday, August 10, 2017 1:40 PM
>> To: jon.crowcroft@cl.cam.ac.uk; Scharf, Michael (Nokia - DE/Stuttgart)
>> <michael.scharf@nokia.com>; Carles Gomez Montenegro
>> <carlesgo@entel.upc.edu>; lwip@ietf.org
>> Subject: draft-gomez-lwig-tcp-constrained-node-networks-03
>>
>> Hi Michael, Jon, Carles
>>
>> it is great that you have worked on this topic and, as stated during the Prague
>> IETF meeting, I believe this document should become a WG item of the LWIG
>> working group.
>>
>> I nevertheless have a couple of comments & questions.
>>
>> - Who do you think is the main audience for this draft? Is it primarily written
>> for implementers of embedded TCP stacks or is it rather written for
>> embedded developers who have to decide what stack and what features of
>> TCP to use?
>>
>> If you ask me, I prefer it to be the latter. The reason is that there are very
>> few implementers who write their own embedded TCP stack. There is,
>> however, also an implication if you are aiming for the latter group, namely
>> you cannot expect them to know all the details of TCP well. So, you need to
>> present them with enough background so that they can make informed
>> trade-off decisions.
>>
>> - The title of the document was probably the reason why I only noticed it
>> recently. For some reason the term "Constrained Node Networks" does not
>> stick well with me. I would have expect to see something like "Guidance for
>> TCP Usage for Internet of Things". I am also uncertain why you claim that the
>> document defines a profile. It does not really define any profiles as far as I
>> can tell.
>>
>> - I would like to see some discussion about the communication patterns.
>> For example, in the draft you talk about transactions (and I assume you mean
>> request/response interactions). Are you focusing on those only or do you
>> also consider cases of firmware updates into account? (In Section
>> 4.8 you briefly mention firmware updates.) Have you looked at traffic
>> patterns of some IoT applications?
>>
>> - Section 7 with the information about the protocol stacks is great. I hope you
>> will complete the table some time in the near future and provide additional
>> information about RAM requirements as well (in addition to the codesize).
>>
>> More detailed comments:
>>
>> You write:
>>    "In order to meet the requirements that
>>    stem from CNNs, the IETF has produced a suite of protocols
>>    specifically designed for such environments
>>    [I-D.ietf-lwig-energy-efficient]."
>>
>> The IETF approach on IoT in general has been to re-use as much as possible
>> rather than to develop a whole new universe just for IoT. There are,
>> however, a few new protocol developments but those are not really
>> described well in [I-D.ietf-lwig-energy-efficient] since [I-D.ietf-lwig-energy-
>> efficient] talks specifically about energy efficiency.
>>
>> [I-D.tschofenig-core-coap-tcp-tls] has been replaced by [I-D.ietf-core-coap-
>> tcp-tls].
>>
>> You write:
>>
>>    "On the other hand, other application layer protocols not specifically
>>    designed for CNNs are also being considered for the IoT space.  Some
>>    examples include HTTP/2 and even HTTP/1.1, both of which run over TCP
>>    by default [RFC7540][RFC2616], and the Extensible Messaging and
>>    Presence Protocol (XMPP) [RFC 6120].  TCP is also used by non-IETF
>>    application-layer protocols in the IoT space such as MQTT and its
>>    lightweight variants [MQTTS]."
>>
>> I don't think the reference to [MQTTS] is appropriate. The other variant of
>> MQTT, which exists as a standardized protocol is MQTT-SN and it uses UDP (if
>> I recall correctly). As such, it does not fit into the argument you are making
>> about TCP usage.
>>
>> XMPP is also not a good example since it is mostly used on gateways rather
>> than low end IoT devices. It is just a very verbose protocol.
>>
>> Section 2 about "Characteristics of CNNs relevant for TCP" somehow feels a
>> bit misplaced. I am wondering whether there is any loss in value of the
>> document if you delete this entire section. RFC 7228, which you reference
>> already in the abstract, talks about the constraints of IoT devices and there is
>> probably no need to repeat them again (and if you think so then maybe it fits
>> better into the introduction).
>>
>> Section 3 talks about the scenario and speaks about a model where
>> constrained devices connect to unconstrained servers (cloud). What about
>> cases where the TCP server itself is running on an IoT device? It appears that
>> you consider such a scenario out of scope. Also the text in Section 4.1 gives
>> me that impression.
>>
>> Section 4 is where the meat of the document is. I personally would have
>> structured the document a bit differently. It seems to me that there is the
>> impression in the engineering community that a TCP stack is complex (and
>> therefore codesize-wise large) and requires a lot of RAM. I would have
>> probably started by informing the reader of where the complexity comes
>> from and what "tuning" can be done to make it more lightweight.
>>
>> 4.2. Maximum Segment Size (MSS)
>>
>> Am I reading the recommendations correctly? You have three cases: If the
>> underlying layer supports a frame size of ...
>>
>>  1) < 1280 bytes THEN use an adaptation layer (like 6lowpan to make it look
>> like case #2)
>>  2) 1280 bytes THEN you are OK.
>>  3) > 1280 bytes THEN limit the MTU to 1280 bytes and you SHOULD use the
>> Path MTU mechanism.
>>
>> 4.3 Window Size
>>
>> You write:
>> "
>>    A TCP stack can reduce the implementation complexity by advertising a
>>    TCP window size of one MSS, and also transmit at most one MSS of
>>    unacknowledged data, at the cost of decreased performance.  This size
>>    for receive and send window is appropriate for simple message
>>    exchanges in the CNN space, reduces implementation complexity and
>>    memory requirements, and reduces overhead (see section 4.7).
>> "
>>
>> I don't think it is a matter of implementation complexity on how large the
>> window size should be but rather a question of how much RAM you have. I
>> think that this section could better describe the performance tradeoffs.
>>
>> You write:
>> "
>>    A TCP window size of one MSS follows the same rationale as the
>>    default setting for NSTART in [RFC7252], leading to equivalent
>>    operation when CoAP is used over TCP.
>> "
>>
>> Could you explain the relationship between MSS and the NSTART concept in
>> CoAP in more details? I only see an indirect relationship (via the congestion
>> control mechanism) but not a direct one. I am also uncertain what you mean
>> by the reference to CoAP over TCP.
>>
>> Expand and ideally explain all abbreviations, such as RTO
>>
>> You write:
>>
>> "  For devices that can afford greater TCP window size, it may be useful
>>    to allow window sizes of at least five MSSs, in order to allow Fast
>>    Retransmit and Fast Recovery [RFC5681].
>> "
>>
>> Could you expand a bit on what you mean by "can afford"? If you have x
>> amount of additional KB RAM then ....
>>
>>
>> 4.4 RTO estimation
>>
>> You write:
>>
>> "
>>    A fundamental
>>    trade-off exists between responsiveness and correctness of RTOs
>>    [I-D.ietf-tcpm-rto-consider].
>> "
>>
>> Maybe you can explain the reader what the tradeoff is rather than just
>> pointing to the document. You make an attempt in the text following the
>> statement but it is incomplete (at least according to my reading of the tcp-
>> rto-consider document.) At least I would have expected that you provide the
>> recommendation from [I-D.ietf-tcpm-rto-consider] regarding the RTO setting
>> or mention the timer setting in the DTLS/TLS profiles for IoT.
>>
>> I also believe that the paragraph about the work on congestion control for
>> CoAP isn't really appropriate in this document. I would delete it.
>> I understand why Carles wants to have it in there though ;-)
>>
>> 4. TCP connection lifetime
>>
>> In the discussions regarding using TCP keep-alive messages for CoAP over
>> TCP we essentially got no response:
>> https://www.ietf.org/mail-archive/web/maprg/current/msg00016.html
>>
>> I would expect a recommendation whether TCP keep-alives should or should
>> not be used. With CoAP over TCP we have also defined a separate ping/pong
>> mechanism.
>>
>> 4.7.  TCP options
>>
>> You write:
>>
>> "
>>    TCP implementation for a constrained device that uses a single-MSS
>>    TCP receive or transmit window size may not benefit from supporting
>>    the following TCP options: Window scale [RFC1323], TCP Timestamps
>>    [RFC1323], Selective Acknowledgements (SACK) and SACK-Permitted
>>    [RFC2018].  Other TCP options should not be used, in keeping with the
>>    principle of lightweight operation.
>>
>>    Other TCP options should not be supported by a constrained device, in
>>    keeping with the principle of lightweight implementation and
>>    operation.
>>    "
>>
>> The last sentence starting with "Other TCP options ..." appears twice.
>>
>> I am not sure I understand the recommendation: Are you saying that "TCP
>> implementation for a constrained device that uses a single-MSS TCP receive
>> or transmit window size should not implement any TCP options?"
>>
>> Then, for all other devices should they implement SACK and TFO?
>>
>> Maybe you want to explain your rational a bit more, particularly under why
>> you do not consider certain TCP options useful in an IoT environment.
>>
>> 4.8.  Delayed Acknowledgments
>>
>> The recommendation is not clear to me. It sounds like you are suggesting to
>> almost dynamically adjust the ACKs based on the type of traffic being sent.
>>
>> 5. Security Considerations
>>
>> I don't think that the The TCP Authentication Option is a useful option for IoT
>> deployments. At least I haven't even heard anyone suggesting it to be used
>> so far. Most standards (even outside the IETF) recommend the use of TLS.
>>
>> 8. References
>>
>> IMHO there are too many references in the normative reference section. I
>> would put the background reading into the informative section.
>>
>> Ciao
>> Hannes