Re: [Tsvwg] SCTP: Data chunk in flight when a_rwnd = 0

"Brian F. G. Bidulock" <bidulock@openss7.org> Tue, 06 November 2001 00:28 UTC

Received: from optimus.ietf.org (ietf.org [132.151.1.19] (may be forged)) by ietf.org (8.9.1a/8.9.1a) with ESMTP id TAA11358 for <tsvwg-archive@odin.ietf.org>; Mon, 5 Nov 2001 19:28:18 -0500 (EST)
Received: (from daemon@localhost) by optimus.ietf.org (8.9.1a/8.9.1) id TAA29790 for tsvwg-archive@odin.ietf.org; Mon, 5 Nov 2001 19:28:19 -0500 (EST)
Received: from optimus.ietf.org (localhost [127.0.0.1]) by optimus.ietf.org (8.9.1a/8.9.1) with ESMTP id TAA29436; Mon, 5 Nov 2001 19:06:42 -0500 (EST)
Received: from ietf.org (odin [132.151.1.176]) by optimus.ietf.org (8.9.1a/8.9.1) with ESMTP id TAA29358 for <tsvwg@optimus.ietf.org>; Mon, 5 Nov 2001 19:06:38 -0500 (EST)
Received: from bfgbhome.inetint.com (IDENT:root@tnt-dal-42-209.dallas.net [209.44.42.209]) by ietf.org (8.9.1a/8.9.1a) with ESMTP id TAA11005 for <tsvwg@ietf.org>; Mon, 5 Nov 2001 19:06:28 -0500 (EST)
Received: (from brian@localhost) by bfgbhome.inetint.com (8.9.3/8.9.3) id SAA24356; Mon, 5 Nov 2001 18:05:11 -0600
Date: Mon, 05 Nov 2001 18:05:11 -0600
From: "Brian F. G. Bidulock" <bidulock@openss7.org>
To: Randall Stewart <randall@stewart.chicago.il.us>
Cc: Chip Sharp <chsharp@cisco.com>, tsvwg@ietf.org
Subject: Re: [Tsvwg] SCTP: Data chunk in flight when a_rwnd = 0
Message-ID: <20011105180511.A21966@openss7.org>
Reply-To: bidulock@openss7.org
References: <200111040742.fA47gmH49360@yak.aciri.org> <200111040742.fA47gmH49360@yak.aciri.org> <20011104021346.T3223@openss7.org> <4.3.2.7.2.20011105112009.056f7ff8@dogwood.cisco.com> <20011105150700.T3223@openss7.org> <3BE71FF5.823EA554@stewart.chicago.il.us>
Mime-Version: 1.0
Content-Type: text/plain; charset="iso-8859-1"
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
User-Agent: Mutt/1.2i
In-Reply-To: <3BE71FF5.823EA554@stewart.chicago.il.us>; from randall@stewart.chicago.il.us on Mon, Nov 05, 2001 at 05:25:42PM -0600
Organization: http://www.openss7.org/
Dsn-Notification-To: <bidulock@openss7.org>
Content-Transfer-Encoding: 8bit
Sender: tsvwg-admin@ietf.org
Errors-To: tsvwg-admin@ietf.org
X-Mailman-Version: 1.0
Precedence: bulk
List-Id: Transport Area Working Group <tsvwg.ietf.org>
X-BeenThere: tsvwg@ietf.org
Content-Transfer-Encoding: 8bit

Randall,

On Mon, 05 Nov 2001, Randall Stewart wrote:

> "Brian F. G. Bidulock" wrote:
> > 
> > Chip,
> > 
> > On Mon, 05 Nov 2001, Chip Sharp wrote:
> > 
> > > A few thoughts:
> > >
> > > The spec says the sender can have *one* DATA chunk in flight, regardless of
> > > rwnd.
> > >
> > > If the sender reaches the point that rwnd=0 due to outstanding DATA chunks
> > > that have not been SACKED, then it will stop transmitting since DATA chunks
> > > are already in flight.  If the sender receives a SACK with a_rwnd=0 and the
> > > SACK does not acknowledge all DATA chunks in flight, then the sender can't
> > > send any more DATA chunks based on the above rule.
> > 
> > But the receiver is not allowed to not acknowledge DATA chunks...
> > 
> 
> I fail to understand why you continue to beat a dead horse? I have
> said that the next implementors guide.. which IS a supplement to
> the RFC and the MUST's etc in this WILL apply just as forcefully
> as RFC2960 (when we are done with it) .. will have the wording
> to allow the receiver to drop the chunk.. 

There is a difference between "allow" and "require".  Allow may
fix SCTP's glaring problem.  It would take Require to meet M2PA's
needs.

> 
> Continuing to rant about something that is going to be fixed
> and will be available in the implementors guide draft is
> non-productive and a waste of everyones cycles..
> 
> 
> > > Thus, the only thing the sender has control over is whether or not it can
> > > send 1 DATA chunk when rwnd=0 and there are no outstanding DATA chunks. If
> > > the sender doesn't probe for a change in rwnd, it will never be able to
> > > transmit new data (deadlock).
> > 
> > It can send new data when the receive opens up a_rwnd.  There is only a
> > deadlock situation if a SACK is lost (the one that opened up a_rwnd).
> > Thus the need to force a SACK or two out of the receiver ever so often.
> > DUP segments in TCP do this just fine.  DUP TSNs in SCTP would work as
> > well (they force an immediate SACK which either contains a_rwnd = 0 or
> > some other value).
> > 
> And allowing a receiver to DROP a segment due to lack of
> buffer space and SACK with no update does the same thing. This
> is similar to what TCP does. Yes some implementations do send
> dup data.. others do not... the spec will be made similar..
> 
> 
> > > If the receiver does not acknowledge this DATA chunk, the sender cannot
> > > transmit any more DATA chunks since the DATA chunk is "in flight" until
> > > acked.
> > 
> > But if the receiver is required (or permitted) to ack the DATA chunk,
> > DATA will flow.
> > 
> 
> see above..
> 
> > > If the receiver does transmit a SACK with a_rwnd=0, the receiver will still
> > > receive new DATA chunks that were in flight prior to the sender receiving
> > > the SACK.  Thus, the receiver must be able to deal with the situation in
> > > which it receives new DATA chunks after sending a_rwnd=0 regardless of the
> > > operation of the sender.
> > 
> > This is not the required behavior.  It is required that acks of data in
> > flight also be withheld once a_rwnd has been advertized zero.  Otherwise
> > each of these DATA chunks will be lost to the network with no copy in
> > the sender's retransmission buffer for retrieval and retransmission on an
> > alternate association.
> 
> 
> You make no sense above. If data is dropped (due to lack of buffer
> space) and SACK are sent duplicating, if you will, the last SACK
> sent aka same cum-ack, a-rwnd-0 + whatever gap-ack blocks still
> present... It will keep the sender happy... all is well AND
> it will let the receiver clear its buffer problem.

Again it is the difference between "allow" and "require".

If we can say that SCTP will not support application-level flow
controls and that the ULP needs to institute their own, I would
be happy to drop the matter and leave it at "allow".

> 
> > 
> > >
> > > The only problem seems to be whether or not the receiver acknowledges DATA
> > > chunks received after it sends out a_rwnd=0.
> > 
> > No data chunks can be acknowledged after it asserts a_rwnd = 0, it doesn't
> > matter when it hits the line or gets to the other side.
> > 
> > >       * No:  The receiver will receive a periodic retransmission of one of
> > > the missing DATA chunks on timeout.
> > >       * Yes: The receiver will receive a new DATA chunk per round-trip time
> > > as each single new DATA chunk is acked.
> > 
> > Plus the data chunks in flight which are not to be acked.  Each of these
> > messages is a message lost to SS7 with M2PA.  MTP3 conformace requires that
> > no messages (0, zero, nicht, nil) messages be lost in these changeover
> > scenarios.  One message gone astrasy and MTP3 cannot conform over M2PA.
> > 
> > If SCTP stops cum acking on a_rwnd = 0 assertion all is well.  A MAY does
> > not do M2PA any good here...
> 
> Either a implementation will STOP accepting new data and cum-ack
> the way things were when rwnd=0 occured, and thus NO DATA is
> lost... OR the implementation will pull the DATA in and SACK it..

In which case the data is lost to MTP3 resulting in conformance
failure.  If TSV will say "don't use SCTP this way" then we can
procedure to institute M2PA sequence numbers, acks and retransmission.

> 
> In either case NO data is lost... 0, zero , nicht, nil...

You are not looking at redundancy across associations from the
ULP perpsective.  The data is lost to the system because it is
on the wrong side of the association.

--brian


> 
> R
> 
> > 
> > --brian
> > 
> > >
> > >
> > > Chip
> > >
> > > At 03:13 AM 11/4/2001, Brian F. G. Bidulock wrote:
> > > >Vern,
> > > >
> > > >On Sat, 03 Nov 2001, Vern Paxson wrote:
> > > >
> > > > > > Have I missed somewhere in the RFC where it mentions that
> > > > > > the receiver can refuse to acknowledge received DATA chunks
> > > > > > containing new data when it is advertising a receive window
> > > > > > of 0?
> > > > > >
> > > > > > Or was it the intention of SCTP that it not permit a
> > > > > > receiver to stop traffic by setting a_rwnd = 0?
> > > > >
> > > > > The intention was that the sender is always allowed to *try* sending a
> > > > > bit of data beyond the window to serve as a probe to see if the window
> > > > > has in fact opened up, but that also the receiver can indeed stop traffic
> > > > > by setting the advertised window to 0.
> > > > >
> > > > > The sender might not have previously-transmitted data lying around with
> > > > > which to make its attempt, so it's allowed to do it with new data.
> > > >
> > > >Actually, one doesn't need new or old data, just an already
> > > >acked TSN.  A duplicate TSN will have the effect you are
> > > >looking for without needing the old data (whatever data is
> > > >included must be discarded).
> > > >
> > > > > The
> > > > > receiver does not have to accept this data; if it doesn't, it should send
> > > > > a SACK describing what data it has received & accepted, along with a window
> > > > > advertisement.
> > > >
> > > >Although this makes, sense, the RFC does not permit the receiver
> > > >to refuse acknowledgement of new DATA whether a_rwnd = 0 or not
> > > >(Section 6.2).  Nor is it described anywhere that the sender of
> > > >these probing packets is permitted to stop pegging association
> > > >and path retransmit counters, even if the other side does withhold
> > > >acknolwedgements.
> > > >
> > > > >
> > > > > That said, the above is my recollection of the intent when we added the
> > > > > rule in question - I haven't looked through the RFC to see how it has been
> > > > > written up.
> > > >
> > > >Take a look.  I don't think that the current text in the RFC
> > > >achieves this intent in several respects:
> > > >
> > > >     1.) It does not permit the endpoint to withhold acks of
> > > >         new data when a_rwnd = 0 as you describe.  (Section 6.2
> > > >         says that every new DATA chunk must be acknolwedged and
> > > >         sets upper bounds on the time limit for acknowledgement.)
> > > >
> > > >     2.) It does not permit the endpoint to send SACK immediately
> > > >         when receiving new data while a_rwnd = 0 as you describe.
> > > >         (Section 6.2 says that the enpoint should only SACK
> > > >         immediately on duplicates, gaps, or to update a_rwnd, and
> > > >         should ack every second DATA chunk otherwise.)
> > > >
> > > >     3.) When "probing" in this fashion, the transmitter is still
> > > >         required to run RTO and perform cwnd calculations also
> > > >         to peg association and path retransmits.  This could lead
> > > >         to failure of the association (depending on heartbeat
> > > >         intervals) if the receiver is withholding acks in the
> > > >         fashion that your describe.
> > > >
> > > >Although I agree that it should be the intention, the current
> > > >text in the RFC certainly does not have the effect of stopping
> > > >traffic flow.  The above three things need to be corrected first:
> > > >the receiver advertising a_rwnd = 0 must be permitted to withhold
> > > >acknolwedgements, required to SACK immediately, and the transmitter
> > > >probing a peer adversiting a_rwnd = 0 should not perform congestion
> > > >or retransmission calcaltations on the "probes".
> > > >
> > > >Rather than changing all those things in the RFC, it would probably
> > > >be better to take the opposite interpretation and say that the
> > > >transmittter MUST NOT send new data (as the text says now).  And
> > > >that any probe chunk must be with an already acknowledged TSN.
> > > >This will have the effect that any data along with the TSN will be
> > > >discarded (and could be bogus), the receiver will be forced to
> > > >SACK the duplicate TSN immediately, and new data will not flow.
> > > >
> > > >Comments?
> > > ...snip...
> > >
> > >
> > > _______________________________________________
> > > tsvwg mailing list
> > > tsvwg@ietf.org
> > > http://www1.ietf.org/mailman/listinfo/tsvwg
> > 
> > --
> > Brian F. G. Bidulock    ¦ The reasonable man adapts himself to the ¦
> > bidulock@openss7.org    ¦ world; the unreasonable one persists in  ¦
> > http://www.openss7.org/ ¦ trying  to adapt the  world  to himself. ¦
> >                         ¦ Therefore  all  progress  depends on the ¦
> >                         ¦ unreasonable man. -- George Bernard Shaw ¦
> > 
> > _______________________________________________
> > tsvwg mailing list
> > tsvwg@ietf.org
> > http://www1.ietf.org/mailman/listinfo/tsvwg
> 
> -- 
> Randall R. Stewart
> randall@stewart.chicago.il.us 815-342-5222 (cell phone)

-- 
Brian F. G. Bidulock    ¦ The reasonable man adapts himself to the ¦
bidulock@openss7.org    ¦ world; the unreasonable one persists in  ¦
http://www.openss7.org/ ¦ trying  to adapt the  world  to himself. ¦
                        ¦ Therefore  all  progress  depends on the ¦
                        ¦ unreasonable man. -- George Bernard Shaw ¦

_______________________________________________
tsvwg mailing list
tsvwg@ietf.org
http://www1.ietf.org/mailman/listinfo/tsvwg