Re: [tsvwg] WGLC Announcement for draft-ietf-tsvwg-sctp-sack-immediately-02: 19th March 2013

Michael Tuexen <Michael.Tuexen@lurchi.franken.de> Fri, 05 April 2013 11:40 UTC

Return-Path: <Michael.Tuexen@lurchi.franken.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 A3C8F21F972E for <tsvwg@ietfa.amsl.com>; Fri, 5 Apr 2013 04:40:24 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.924
X-Spam-Level:
X-Spam-Status: No, score=-1.924 tagged_above=-999 required=5 tests=[AWL=0.075, BAYES_00=-2.599, J_CHICKENPOX_45=0.6]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ogWpTeg4YcYD for <tsvwg@ietfa.amsl.com>; Fri, 5 Apr 2013 04:40:23 -0700 (PDT)
Received: from mail-n.franken.de (drew.ipv6.franken.de [IPv6:2001:638:a02:a001:20e:cff:fe4a:feaa]) by ietfa.amsl.com (Postfix) with ESMTP id F0BDE21F96DC for <tsvwg@ietf.org>; Fri, 5 Apr 2013 04:40:22 -0700 (PDT)
Received: from [192.168.1.102] (p508FB3DA.dip.t-dialin.net [80.143.179.218]) (Authenticated sender: macmic) by mail-n.franken.de (Postfix) with ESMTP id BC3A51C0C0693; Fri, 5 Apr 2013 13:40:19 +0200 (CEST)
Mime-Version: 1.0 (Apple Message framework v1283)
Content-Type: text/plain; charset="iso-8859-1"
From: Michael Tuexen <Michael.Tuexen@lurchi.franken.de>
In-Reply-To: <515E0FED.1070701@kau.se>
Date: Fri, 05 Apr 2013 13:40:19 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <4D5E4983-3572-45FB-A247-22AFC1533AD2@lurchi.franken.de>
References: <4F605902.40009@erg.abdn.ac.uk> <5148B330.3000304@erg.abdn.ac.uk> <CAO249ycs-1at532RQWHzJVpH49p-PyXX4Sh=e=DGTs7WqMKOzQ@mail.gmail.com> <A7378318-1AA0-4B8C-B2A6-DF45B7F5A63B@lurchi.franken.de> <267C7CD9-6E64-4133-B4B5-029DE6EA8847@ifi.uio.no> <E527DD3C-F037-442A-98FF-9CE61758E669@lurchi.franken.de> <31D96103-8E36-44C4-A131-03C79385775C@ifi.uio.no> <6D9CC3C2-538A-4ACA-BF27-F1E5CC51B0FF@lurchi.franken.de> <C91AD42F-BAA2-4DAA-A21A-D097D4D9F5F6@ifi.uio.no> <21058D18-3A54-4474-ABA5-A9F5DCE10F9C@lurchi.franken.de> <515E0FED.1070701@kau.se>
To: Anna Brunstrom <anna.brunstrom@kau.se>
X-Mailer: Apple Mail (2.1283)
Cc: tsvwg@ietf.org
Subject: Re: [tsvwg] WGLC Announcement for draft-ietf-tsvwg-sctp-sack-immediately-02: 19th March 2013
X-BeenThere: tsvwg@ietf.org
X-Mailman-Version: 2.1.12
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: <http://www.ietf.org/mail-archive/web/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: Fri, 05 Apr 2013 11:40:24 -0000

On Apr 5, 2013, at 1:42 AM, Anna Brunstrom wrote:

> Hi Michael and all,
> 
> I have also read and support this draft.
> 
> In relation to the use case discussion I think that a potential use case, related to but not fully covered by RTO restart, is thin stream applications that send messages at a low rate (perhaps gaming control packets over a RTCWeb data channel or something similar). Here the I-bit could be useful to avoid delayed ACKs infalting the RTO and leading to reduced performance if a later message is lost.
Hi Anna,

just to make sure that I understand your suggestion. On a thin stream the SACKs come back
after RTT + SACK.delay and not RTT. Doesn't this mean that there is no effect if
RTO.Min > RTT + SACK.delay?

Having RTO.Min < RTT + SACK.delay is a consequence of configurations no being in tune.
I have seen this in deployments. The only thing the sender can do it to set the I-Bit
to avoid all messages being retransmitted. I (personally) think this is a useful scenario,
but based on WG feedback I took it out. The reason was that the configuration should be
fixed. See
http://tools.ietf.org/rfcdiff?url2=draft-tuexen-tsvwg-sctp-sack-immediately-07.txt

However, do you have another scenario in mind?
> 
> Perhaps adding such a use case under 4.1 could be good to show that there are more than one use case also at the application level? Section 4.1 almost gives the impression that the application use case for setting the I-bit is connected to the SCTP_SENDER_DRY_EVENT notification, which I guess is meant only as an example.
You are completely right. Section 4.1 and 4.2 gives just examples. So I added to Section 4 the following:

The following two subsections provide a non-exhaustive list of examples.

OK?
> 
> Another detail on 4.1. When from the perspective of the application, would it be better to say that the application sets the I-bit for a message (rather than the last DATA chunk of a message) as it is not really aware of the split into chunks?
That is absolutely correct. What about

To avoid an unnecessary delay while waiting for such an event, the application
can request the setting of the I-Bit when sending the last user message
before waiting for the event. This results in setting the I-bit of
the last DATA chunk corresponding to the user message and is possible
using the extension of the socket API described in <xref target='api'/>.

> 
> Nit. In section 7, I guess "the SCTP_SACK_IMMEDIATELY flags can be set in the sinfo_flags field" should be "the SCTP_SACK_IMMEDIATELY flag ...".
Good catch! Changed in the CVS version.

Thanks a lot for you comments!

Best regards
Michael
> 
> BR,
> Anna
> 
> On 2013-04-04 22:20, Michael Tuexen wrote:
>> On Apr 4, 2013, at 9:57 PM, Michael Welzl wrote:
>> 
>>> On Apr 4, 2013, at 9:34 PM, Michael Tuexen <Michael.Tuexen@lurchi.franken.de> wrote:
>>> 
>>>> On Apr 3, 2013, at 11:42 AM, Michael Welzl wrote:
>>>> 
>>>>> Hi,
>>>>> 
>>>>> 
>>>>> On 2. apr. 2013, at 10:58, Michael Tuexen wrote:
>>>>> 
>>>>>> On Apr 2, 2013, at 10:15 AM, Michael Welzl wrote:
>>>>>> 
>>>>>>> Hi,
>>>>>>> 
>>>>>>> I have read this draft and support it.
>>>>>>> 
>>>>>>> Regarding the issue below:
>>>>>>> 
>>>>>>> 
>>>>>>> On 2. apr. 2013, at 09:27, Michael Tuexen wrote:
>>>>>>> 
>>>>>>>> On Apr 2, 2013, at 8:29 AM, Yoshifumi Nishida wrote:
>>>>>>>> 
>>>>>>>>> Hi,
>>>>>>>>> 
>>>>>>>>> I support this draft.
>>>>>>>>> Some minor questions I have are related to the following rule in the draft.
>>>>>>>>> "the sending of a DATA chunk fills the congestion or receiver window."
>>>>>>>>> 
>>>>>>>>> 1: I am personally curious about how much benefit we can get by this.
>>>>>>>>> If there's an analysis on this, I will want to see it in the reference.
>>>>>>>> Hi Yoshifumi,
>>>>>>>> 
>>>>>>>> some simulation results are available at:
>>>>>>>> Improving the Acknowledgment Handling of SCTP
>>>>>>>> Rüngeler, I.; Tüxen, M.; Rathgeb, E. P.
>>>>>>>> Proceedings of the 4th International Conference on Digital Society (ICDS 2010), February 2010.
>>>>>>>>> 2: Because this rule will be checked on every packet transmission, I
>>>>>>>>> would like to know if the draft suggests to set I-bit everytime we
>>>>>>>>> have a chance or there might be a case where we shouldn't.
>>>>>>>> The sender could do it to switch off delayed SACK. However, this
>>>>>>>> might not be useful. Therefore, as stated, the sender should set it,
>>>>>>>> when he is waiting for an SACK.
>>>>>>> Could there be a way to phrase this in that style, to also make it more general than "a DATA chunk fills the congestion or receiver window" ?
>>>>>> Besides the very generic statement
>>>>>> (Whenever the sender of a DATA chunk can benefit from the
>>>>>> corresponding SACK chunk being sent back without delay...)
>>>>>> the ID lists some concrete situations (not a complete list).
>>>>>> I'm open to add another one, if you can provide some text...
>>>>> See below -
>>>>> 
>>>>> 
>>>>>>> I'm thinking about the case that draft-ietf-tcpm-rtorestart-00 addresses, of an application-limited sender that only has one SACK to expect and, in case it doesn't arrive, only a timeout to rely upon. Unless I'm missing some SCTP-specific detail here, it should also be beneficial to SACK early in this case (see fig. 1 in our draft).
>>>>>> I'm not sure how the I-bit helps. I think you are focussing on retransmissions in case of packet drops.
>>>>>> Assume that the RTO is larger than the RTT + SACK.delay (if not, it is a mis-configuation, in
>>>>>> which setting the I-bit allows the sender to work around the problem), then one of two things happen:
>>>>>> * the packet is dropped and there is no SACK acking it. The sender will retransmit after RTO.
>>>>>> * the packet arrives and the corresponding SACK will arrive after an RTT or RTT + SACK.delay.
>>>>>> In both cases, no retransmission will happen.
>>>>>> 
>>>>>> Am I missing something?
>>>>>>> This case would be covered by "when it is waiting for a SACK" but not by "fills the congestion or receiver window" (because both of these windows may be much larger than what the sender really transmits).
>>>>>> I'm open for adding another scenario, where it helps. However, I did not understand you case
>>>>>> above...
>>>>> My apologies, there are two issues with what I wrote:
>>>>> 1) writing about only one single packet was of course misleading - yes it is about this packet (the case where it's dropped), but it really has to do with the ACK of the preceding packet.
>>>>> 2) because of 1), in fact it was wrong to say that "this case would be covered by 'when it is waiting for a SACK' " because it's the preceding packet that would have to have the I-bit set. That makes it harder to come up with text, but I'll give it a try anyway. I suggest the following:
>>>>> 
>>>>> ***
>>>>> - leave the generic statement (Whenever the sender of a DATA chunk can benefit from the
>>>>> corresponding SACK chunk being sent back without delay...) as it is
>>>>> - in section 4.2, insert the following paragraph:
>>>>> 
>>>>> When a sender receives a SACK chunk, it re-arms the RTO timer, and the time at which this happens if affected by a delayed SACK chunk. If the last packet in a send window is lost, it will therefore be retransmitted later if the SACK chunk that was caused by the DATA chunk just before it is delayed. This can be avoided by setting the I-bit on the penultimate DATA chunk of the send window.
>>>>> 
>>>>> Item for section 5.1:
>>>>> - The DATA chunk is known to be the penultimate DATA chunk of the send window.
>>>>> ***
>>>>> 
>>>>> The tricky bit here is the application-limited case. In case of a greedy sender, the "penultimate DATA chunk of a send window" is the DATA chunk just before the one that fills the congestion or receiver window, or the last DATA chunk altogether before the association is shut down. But in the application-limited case, one can never be sure how long an application pause is going to last... in my text above, I decided to leave this open by just saying "of the send window". This is perhaps not good - if you can fix this great, if you'd rather not even bother, just leave it out and forget it, that's fine by me too  :-)   it was just a suggestion. Anyway it's covered by the nice CFP-style phrase in your text that says: "Reasons for setting the I-bit include, but are not limited to, the following"  :-)
>>>>> 
>>>>> I hope I have made myself clear enough. If not, please do take a quick look at fig. 1 of http://tools.ietf.org/html/draft-ietf-tcpm-rtorestart-00 which probably explains it better.
>>>> Hi Michael,
>>>> 
>>>> OK I understand the point. Just to double check: If draft-ietf-tcpm-rtorestart is used, the above is not necessary, right?
>>>> If that is right, wouldn't the right solution be to implement draft-ietf-tcpm-rtorestart-00? In both cases it would be
>>>> a sender side modification?
>>> Yes and yes   :-)
>> OK. Then I would prefer to leave it out of this document since it is neither the right solution
>> nor easy to implement (at least the application limited case).
>> 
>> Best regards
>> Michael
>>> Cheers,
>>> Michael
>>> 
>>> 
> 
> 
>