Re: [tsvwg] Eric Rescorla's No Objection on draft-ietf-tsvwg-sctp-ndata-12: (with COMMENT)

Michael Tuexen <tuexen@fh-muenster.de> Wed, 30 August 2017 13:11 UTC

Return-Path: <tuexen@fh-muenster.de>
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 430C0133225; Wed, 30 Aug 2017 06:11:49 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.6
X-Spam-Level:
X-Spam-Status: No, score=-2.6 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_LOW=-0.7] 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 IcZINVD0x-ZZ; Wed, 30 Aug 2017 06:11:46 -0700 (PDT)
Received: from drew.franken.de (mail-n.franken.de [193.175.24.27]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 707B2133222; Wed, 30 Aug 2017 06:11:46 -0700 (PDT)
Received: from [IPv6:2003:cd:6bcc:5600:855c:fc83:a144:ed84] (p200300CD6BCC5600855CFC83A144ED84.dip0.t-ipconnect.de [IPv6:2003:cd:6bcc:5600:855c:fc83:a144:ed84]) (Authenticated sender: macmic) by mail-n.franken.de (Postfix) with ESMTPSA id C282C721E280C; Wed, 30 Aug 2017 15:11:43 +0200 (CEST)
From: Michael Tuexen <tuexen@fh-muenster.de>
Message-Id: <EDCC4403-52B3-47AE-A97D-1A1090F52E1A@fh-muenster.de>
Content-Type: multipart/signed; boundary="Apple-Mail=_A63B9402-5180-4FDC-BECB-386074004776"; protocol="application/pkcs7-signature"; micalg="sha1"
Mime-Version: 1.0 (Mac OS X Mail 10.3 \(3273\))
Date: Wed, 30 Aug 2017 15:11:42 +0200
In-Reply-To: <CABcZeBMVFLQpzLO0=Og-OumtWfgzKQY4s3jjEj96VyTPjAzZCQ@mail.gmail.com>
Cc: The IESG <iesg@ietf.org>, draft-ietf-tsvwg-sctp-ndata@ietf.org, Gorry Fairhurst <gorry@erg.abdn.ac.uk>, tsvwg-chairs@ietf.org, "tsvwg@ietf.org" <tsvwg@ietf.org>
To: Eric Rescorla <ekr@rtfm.com>
References: <150377526319.25828.13085691478621902018.idtracker@ietfa.amsl.com> <6B8221AA-0A42-4409-BDA9-63215B0789F2@fh-muenster.de> <CABcZeBM+-vkO_-Q4NZp7g8tKG6SfS4KLqaf2SHWmLxkDHYcTOg@mail.gmail.com> <7C366691-31F9-44B3-AF7A-F877B13EF27A@fh-muenster.de> <CABcZeBP9MxSWxkva1J=KTeH+vJKBxEv4+GxqfWKpKJ3dj+Rprw@mail.gmail.com> <68C4E71D-B044-4DC3-B570-97C0AD0578F6@fh-muenster.de> <CABcZeBMVFLQpzLO0=Og-OumtWfgzKQY4s3jjEj96VyTPjAzZCQ@mail.gmail.com>
X-Mailer: Apple Mail (2.3273)
Archived-At: <https://mailarchive.ietf.org/arch/msg/tsvwg/Q-gMrcoqZUziy7JQ__i8QhoW1jE>
Subject: Re: [tsvwg] Eric Rescorla's No Objection on draft-ietf-tsvwg-sctp-ndata-12: (with COMMENT)
X-BeenThere: tsvwg@ietf.org
X-Mailman-Version: 2.1.22
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: Wed, 30 Aug 2017 13:11:49 -0000

> On 29. Aug 2017, at 15:09, Eric Rescorla <ekr@rtfm.com> wrote:
> 
> 
> 
> On Tue, Aug 29, 2017 at 12:24 AM, Michael Tuexen <tuexen@fh-muenster.de> wrote:
> > On 29. Aug 2017, at 01:04, Eric Rescorla <ekr@rtfm.com> wrote:
> >
> >
> >
> > On Mon, Aug 28, 2017 at 3:39 PM, Michael Tuexen <tuexen@fh-muenster.de> wrote:
> > > On 28. Aug 2017, at 22:56, Eric Rescorla <ekr@rtfm.com> wrote:
> > >
> > >
> > >
> > > On Mon, Aug 28, 2017 at 1:42 PM, Michael Tuexen <tuexen@fh-muenster.de> wrote:
> > > > On 26. Aug 2017, at 21:21, Eric Rescorla <ekr@rtfm.com> wrote:
> > > >
> > > > Eric Rescorla has entered the following ballot position for
> > > > draft-ietf-tsvwg-sctp-ndata-12: No Objection
> > > >
> > > > When responding, please keep the subject line intact and reply to all
> > > > email addresses included in the To and CC lines. (Feel free to cut this
> > > > introductory paragraph, however.)
> > > >
> > > >
> > > > Please refer to https://www.ietf.org/iesg/statement/discuss-criteria.html
> > > > for more information about IESG DISCUSS and COMMENT positions.
> > > >
> > > >
> > > > The document, along with other ballot positions, can be found here:
> > > > https://datatracker.ietf.org/doc/draft-ietf-tsvwg-sctp-ndata/
> > > >
> > > >
> > > >
> > > > ----------------------------------------------------------------------
> > > > COMMENT:
> > > > ----------------------------------------------------------------------
> > > >
> > > Hi Eric,
> > >
> > > thanks for the review. See my responses in-line.
> > >
> > > Best regards
> > > Michael
> > > > TECHNICAL
> > > > I'm not sure I am following the rules about interleaving multiple
> > > > messages in the same flight.
> > > >
> > > >   The sender MUST NOT fragment 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.
> > > >
> > > > So, say I have one stream and the application sends M1 and M2 and both
> > > > need to be fragmented, so I have M1a, M1b and M2a and M2b. Does this
> > > > mean that I can't send M2a until M1{a,b} has been acknowledged?
> > > No, that is not what is meant.
> > >
> > > Assume M1 is sent before M2 and you end up in M1a (first fragment),
> > > M1b (second fragment), M2a (first fragment) and M2b (second fragment).
> > > You would assign the TSNs in a way that they are increasing for
> > > M1a, M1b, M2a, and M2b. So you are not interleaving messages on
> > > the same stream. That is the point. So you would not send them as
> > > M1a, M2a, M2b, M1b. You should also not send M1a, M2, M1b (assuming
> > > that M2 doesn't need to be fragmented).
> > >
> > > I agree, the above text is not as clear as possible. So what about stating
> > > it as:
> > >
> > >   The sender MUST NOT assign TSNs to more than one user message in any given
> > >   stream at any time.  At any time, a sender MAY assign TSNs to multiple user
> > >   messages, each of them on different streams.
> > >
> > > Perhaps you might instead say:
> > >
> > > The user messages within a given stream must have strictly increasing TSNs
> > Not sure what you are suggesting, since TSN are assigned to chunks, not
> > user messages.
> >
> > The problem here is that  your text focuses on TSN *assignment* which is not
> > really the relevant property (it's an implementation artifact) rather what appears
> > on the wire is. So, the requirement here seems to be that you allocate TSNs
> > to fragments of user messages in order.
> The next sentence in the document states:
> 
> The sender MUST assign TSNs in a way that the receiver can make progress.
> One way to achieve this is to assign a higher TSN to the later fragments of
> a user message and send out the TSNs in sequence.
> 
> The reason not to mandate this is that you might you more complex schemes
> in case of load-sharing between multiple paths.
> 
> That's fine, but I don't find the current text clear and this doesn't help. Why don't
> you try listing the requirements on what appears on the wire from the receiver's
> perspective in response to this message, and then we can discuss how to
> write it in the doc.
Let me make another suggestion:

OLD TEXT:

   The sender MUST NOT fragment 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.

   The sender MUST assign TSNs in a way that the receiver can make
   progress.  One way to achieve this is to assign a higher TSN to the
   later fragments of a user message and send out the TSNs in sequence.


NEW TEXT:

   The sender MUST NOT process (move user data into I-DATA chunks and assign
   a TSN to it) for more than one user message in any given stream at any time.
   At any time, a sender MAY process multiple user messages, each of them on
   different streams.

   The sender MUST assign TSNs to I-DATA chunks in a way that the receiver
   can make progress.  One way to achieve this is to assign a higher TSN to the
   later fragments of a user message and send out the I-DATA chunks such that
   the TSNs are in sequence.

Does that address your issue?

Best regards
Michael
> 
> -Ekr
> 
> >
> >
> > Just considering the simple case of non-fragmented user
> > messages, you can't guarantee that user messages of a particular stream
> > have increasing TSNs, since there can be wrap arounds due to chunks
> > belonging to other streams. The TSN are 32-bit numbers with serial arithmetic...
> >
> > Hmm... You don't think of these as being infinite precision but taken mod 2^32?
> In most cases, yes. But I need to take into account that the numbers can wrap
> and how this is handled by receivers. That is why the document states some
> limitations you the number of outstanding MIDs and FSNs.
> 
> Best regards
> Michael
> >
> > -Ekr
> >
> >
> >
> >
> > Best regards
> > Michael
> > >
> > >
> > >
> > > > use MID to reassemble correctly. And given this requirement, why do
> > > > you need MID?
> > > You need some id to know which fragments belong to the same
> > > user message. You can't derive that from the TSN.
> > >
> > > Yeah, I thought you could but after some thought I see you cannot.
> > >
> > >
> > > -Ekr
> > >
> > > > Because fragementation is indicated by index, not range,
> > > > what happens if you have to reduce MTU? So, say I have a message of
> > > > size 2K which I fragment into 1K/1K and then I have to decrease
> > > > my MTU to 512 bytes?
> > > SCTP can't adopt, so IP fragmentation will be used.
> > >
> > > The reason is that once you sent a DATA chunk or an I-DATA chunk
> > > you assigned a TSN will is used for reliable transfer. So you
> > > have to retransmit it and you can't change the user data contained
> > > in it. This has not changed from the base spec.
> > >
> > > Changing the information from index to range for handling reassembly
> > > would not really help, since you still do reliable transfer by using the
> > > TSN assigned to the DATA or I-DATA chunk and you need to retransmit it.
> > > >
> > > >
> > > > EDITORIAL
> > > > I think it would be helpful to indicate that B has to be
> > > > set for the first chunk in S 2.1. Or perhaps move the overview of
> > > > how the sender behaves in S 2.2.2 up in the document?
> > > Considering this comment and the ones I got from other people
> > > it seems like referring to RFC 4960 and RFC 7053 for the fields
> > > which haven't changed and only describing the new fields doesn't
> > > seem to work well.
> > >
> > > I'll add text describing the "old fields".
> > > >
> > > >
> > >
> > >
> >
> >
> 
>