Re: [tsvwg] WGLC for draft-ietf-tsvwg-sctp-ndata as PS, closes 22 Dec 2016

Magnus Westerlund <magnus.westerlund@ericsson.com> Tue, 20 December 2016 15:05 UTC

Return-Path: <magnus.westerlund@ericsson.com>
X-Original-To: tsvwg@ietfa.amsl.com
Delivered-To: tsvwg@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 9E86B1299F0; Tue, 20 Dec 2016 07:05:53 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.221
X-Spam-Level:
X-Spam-Status: No, score=-4.221 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, 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 BglsZg_p6H6v; Tue, 20 Dec 2016 07:05:52 -0800 (PST)
Received: from sessmg22.ericsson.net (sessmg22.ericsson.net [193.180.251.58]) (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 E76B71299F2; Tue, 20 Dec 2016 07:05:46 -0800 (PST)
X-AuditID: c1b4fb3a-854f998000005d1c-d5-585948c946c5
Received: from ESESSHC007.ericsson.se (Unknown_Domain [153.88.183.39]) by (Symantec Mail Security) with SMTP id 25.53.23836.9C849585; Tue, 20 Dec 2016 16:05:45 +0100 (CET)
Received: from [127.0.0.1] (153.88.183.153) by smtp.internal.ericsson.com (153.88.183.41) with Microsoft SMTP Server id 14.3.319.2; Tue, 20 Dec 2016 16:05:44 +0100
To: gorry@erg.abdn.ac.uk, tsvwg@ietf.org
References: <d3df7f73c4d9b0de740d978a185487f2.squirrel@erg.abdn.ac.uk>
From: Magnus Westerlund <magnus.westerlund@ericsson.com>
Message-ID: <d1d634f5-a2a9-4f2e-e95b-7d996996c3a5@ericsson.com>
Date: Tue, 20 Dec 2016 16:05:44 +0100
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1
MIME-Version: 1.0
In-Reply-To: <d3df7f73c4d9b0de740d978a185487f2.squirrel@erg.abdn.ac.uk>
Content-Type: text/plain; charset="windows-1252"; format="flowed"
Content-Transfer-Encoding: 8bit
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrKLMWRmVeSWpSXmKPExsUyM2K7uu5Jj8gIg10TRC1et81mtGjou8tq cezNXTYHZo+ezy+YPJYs+ckUwBTFZZOSmpNZllqkb5fAlbFrwzyWggP6FZ8f/GBsYJyp2sXI ySEhYCLR2veXuYuRi0NIYB2jRNe+c+wgCSGB5YwS+2/qgNjCAqESnXcPM4LYIgI6Ep1bvzFB 1LhJfFvxH6iZg4NZQFriZLsiSJhNwELi5o9GNhCbV8Be4uDTj4wgJSwCqhIXt9qBhEUFYiSW HJ/HAlEiKHFy5hMwm1PAXWL2681MEBPtJR5sLQMJMwvISzRvnc0MsVRboqGpg3UCo8AsJN2z EDpmIelYwMi8ilG0OLW4ODfdyEgvtSgzubg4P08vL7VkEyMwMA9u+W21g/Hgc8dDjAIcjEo8 vAXukRFCrIllxZW5hxglOJiVRHi/2wOFeFMSK6tSi/Lji0pzUosPMUpzsCiJ85qtvB8uJJCe WJKanZpakFoEk2Xi4JRqYCwuWLpb8Mci2a5z85r/LjrbsTsmkPuusPyUgnMyJz+uWSV6s9XR Nt+KO9YiRlTO8YAGW6VBdIbKjV1MJY67rk09yLSC97Xmxt9tptJNyzKMJ36UTrab8l0vbd3N +5qOrYez63az9cwxeHT5lc3qkFgVuY+GYgvPqbUtmDV7UmzO/GsJjCK2bUosxRmJhlrMRcWJ AH9knSBIAgAA
Archived-At: <https://mailarchive.ietf.org/arch/msg/tsvwg/sisOaU2N718XX5zaqDErRnv0qL4>
Cc: tsvwg-chairs@ietf.org
Subject: Re: [tsvwg] WGLC for draft-ietf-tsvwg-sctp-ndata as PS, closes 22 Dec 2016
X-BeenThere: tsvwg@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: Transport Area Working Group <tsvwg.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/tsvwg>, <mailto:tsvwg-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/tsvwg/>
List-Post: <mailto:tsvwg@ietf.org>
List-Help: <mailto:tsvwg-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tsvwg>, <mailto:tsvwg-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 20 Dec 2016 15:05:53 -0000

Hi,

I have reviewed -08 in this WG last call and have the following comments.

1. Section 2.1: "Therefore a sender MUST NOT have more than
       2**31 - 1 fragments of a single user message in flight."

This document uses in "in flight" at three places. I fail to find a 
definition of this in this document nor in RFC 4960, that also use it in 
a couple of places. I think the right way forward here is probably to 
include this issue as one that should be clear in the updated version of 
RFC 4960. I do consider this a clarity issue if not addressed. Even if I 
wonder if it is at all possible to violate it, as the TSN is not larger 
field than the FSN.

2. Section 2.2.2:

    The sender MUST NOT be fragmenting more than one user message in any
    given stream at any time.  At any time, a sender MAY fragment
    multiple user messages, each of them on different streams.

If I have read this document correctly, the above implies something that 
maybe should be made more clear. If one has unordered messages, one 
could in fact have a transmission schedule for a single stream that 
looks like this (MID/FSN):

0/0
1/0
0/1
2/0
0/3

In other words on the same stream have one large fragmented messages, 
and multiple non-fragemented messessages overtaking the large fragmented 
one?

I wonder if this should be clarified as being allowed.

3. Section 2.2.3:

    Upon reception of an SCTP packet containing an I-DATA chunk if the
    message needs to be reassembled, then the receiver MUST use the FSN
    for reassembly of the message and not the TSN.

This above assumes that one has identified first the stream based on 
SID, and then using the MID of the I-DATA to determine the message the 
chunk actually contains. It might be a point to clarify these 
assumptions going into the above sentence.

4. Section 3:

There appear to be an assumption here that isn't made clear. Namely that 
the sender side implementation and the application using the SCTP 
implementation instance is the one that selects which stream scheduler 
to use. There is no negotiation, not even protocol level indication to 
the receiver for what is being used. That means that for applications 
that has dependency on what stream scheduling behaviors the far sender 
has, needs to communicate that out-of-band or on top of the established 
association between the instances.

To be clear I don't have a pressing case where this would be a problem, 
but I think it should be made explicit these assumptions.

5. Section 3.2:

    When not using user message interleaving, this scheduler provides a
    fair scheduling based on the number of user messages by cycling
    around non-empty stream queues.  When using user message
    interleaving, this scheduler provides a fair scheduling based on the
    number of I-DATA chunks by cycling around non-empty stream queues.

I think this description is insufficient to produce a behaviour that is 
consistent between implementors. I find it lacking in explanation on a 
couple of different aspects.

A. Ordering of the stream specific queues. When a message is added to a 
stream that had nothing queued, is that stream handled in stream ID 
order, or is the stream added as the last in the list/ cyclic queue of 
the current streams having data to send?

B. The behaviour when adding chunks to a packet. For non interleaved, I 
assume this one will add a DATA chunk from the next stream, assuming it 
will fit within in MTU boundaries, else send. For I-DATA should one fill 
up the packet to the MTU boundary and then send the packet, 
independently how many bytes of message data that fits?


6. Section 3.3:

    This is a round-robin scheduler but bundles only DATA or I-DATA
    chunks referring to the same stream in a packet.  This minimizes
    head-of-line blocking when a packet is lost because only a single
    stream is affected.

In this case, for non-interleaved, am I allowed to fit the next message 
into the SCTP packet, if it can fit in the remaining size before MTU, or 
does this scheduler result in under utilized packets?

For fragmented, I will assume that I am allowed to fill one packet worth 
of chunks from this stream, independent of how many messages that implies?

7. Section 3.5:

    This
    scheduler considers the lengths of the messages of each stream and
    schedules them in a certain way to maintain an equal bandwidth for
    all streams.

Is the above taking only the scheduled for transmission into account, or 
is also past transmissions relevant in the scheduling decision between 
streams?

8. Section 4.3.1:

Some implementations might
    therefore put some restrictions on setting combinations of these
    values.

This doesn't appear to be sound API definitions. Wouldn't it be clearer 
to actually either require to option to be set prior, or alternatively, 
setting this, causing the other to also be set to avoid issues?

9. Section 6:

    This document does not add any additional security considerations in
    addition to the ones given in [RFC4960] and [RFC6458].

    It should be noted that the application has to consent that it is
    willing to do the more complex reassembly support required for user
    message interleaving.

I think this is an insufficient security consideration section. It hints 
at a receiver resource exhaustion attack. I think that should be made 
clear what this attacks entail, and what mitigations that can be 
considered.

Cheers

Magnus Westerlund

----------------------------------------------------------------------
Services, Media and Network features, Ericsson Research EAB/TXM
----------------------------------------------------------------------
Ericsson AB                 | Phone  +46 10 7148287
Färögatan 6                 | Mobile +46 73 0949079
SE-164 80 Stockholm, Sweden | mailto: magnus.westerlund@ericsson.com
----------------------------------------------------------------------