Re: [rtcweb] Comments on draft-ietf-rtcweb-data-channel-06

Michael Tuexen <Michael.Tuexen@lurchi.franken.de> Sat, 28 December 2013 17:18 UTC

Return-Path: <Michael.Tuexen@lurchi.franken.de>
X-Original-To: rtcweb@ietfa.amsl.com
Delivered-To: rtcweb@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 9E5DB1AFDFF for <rtcweb@ietfa.amsl.com>; Sat, 28 Dec 2013 09:18:08 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 1.211
X-Spam-Level: *
X-Spam-Status: No, score=1.211 tagged_above=-999 required=5 tests=[BAYES_50=0.8, HELO_EQ_DE=0.35, J_CHICKENPOX_31=0.6, RP_MATCHES_RCVD=-0.538, SPF_HELO_PASS=-0.001] autolearn=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 JIRfV2zkG5o0 for <rtcweb@ietfa.amsl.com>; Sat, 28 Dec 2013 09:18:06 -0800 (PST)
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 780AC1AFDE9 for <rtcweb@ietf.org>; Sat, 28 Dec 2013 09:18:05 -0800 (PST)
Received: from [192.168.1.200] (p5481862D.dip0.t-ipconnect.de [84.129.134.45]) (Authenticated sender: macmic) by mail-n.franken.de (Postfix) with ESMTP id D0F911C0C0692; Sat, 28 Dec 2013 18:17:58 +0100 (CET)
Content-Type: text/plain; charset="iso-8859-1"
Mime-Version: 1.0 (Mac OS X Mail 6.6 \(1510\))
From: Michael Tuexen <Michael.Tuexen@lurchi.franken.de>
In-Reply-To: <52BEF74A.2070601@omnitor.se>
Date: Sat, 28 Dec 2013 18:17:58 +0100
Content-Transfer-Encoding: quoted-printable
Message-Id: <7E087676-1C91-47D3-82E8-08C034780AAF@lurchi.franken.de>
References: <5280E181.20104@ericsson.com> <52AE2C51.5000600@omnitor.se> <52AEC405.6070107@alvestrand.no> <52AF672B.2090100@omnitor.se> <E6CB9269-46BA-44E7-AA23-FF778AA9EBF1@lurchi.franken.de> <52BEF74A.2070601@omnitor.se>
To: Gunnar Hellstrom <gunnar.hellstrom@omnitor.se>
X-Mailer: Apple Mail (2.1510)
Cc: rtcweb@ietf.org
Subject: Re: [rtcweb] Comments on draft-ietf-rtcweb-data-channel-06
X-BeenThere: rtcweb@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Real-Time Communication in WEB-browsers working group list <rtcweb.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rtcweb>, <mailto:rtcweb-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/rtcweb/>
List-Post: <mailto:rtcweb@ietf.org>
List-Help: <mailto:rtcweb-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rtcweb>, <mailto:rtcweb-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 28 Dec 2013 17:18:08 -0000

On Dec 28, 2013, at 5:07 PM, Gunnar Hellstrom <gunnar.hellstrom@omnitor.se> wrote:

> Thanks Michael for good clarifications.
> 
> You are right that the part of the discussions about API-only considerations need to be taken in the webrtc list in W3C.
> But the data channel and the SCTP implementation and parameters need to be specified clearly enough for the API to be able to deliver its specified characteristics.
> 
> So, I hope that some of the details discussed here will show up as details in  draft-ietf-rtcweb-data-channel
I think it makes sense to cover the specifics of being single homed. I'll add text to avoid the dormant state.
> 
> E.g. a chapter on failure handling, for the three types of channels: Unreliable, partially-reliable and reliable, and what happens when they encounter transmission failures.
If the association fails, all data channels fail. It doesn't matter if they are ordered or not,
reliable or not. That is pretty simple. A data channel can't fail (except for a peer violating
the protocol) without all other data channels belonging to the same association also failing.
Do you think that this should me mentioned?

Best regards
Michael
> 
> /Gunnar
> On 2013-12-28 12:42, Michael Tuexen wrote:
>> On Dec 16, 2013, at 9:48 PM, Gunnar Hellstrom <gunnar.hellstrom@omnitor.se> wrote:
>> 
>>> On 2013-12-16 10:12, Harald Alvestrand wrote:
>>>> On 12/15/2013 11:25 PM, Gunnar Hellstrom wrote:
>>>>> I took a look at the data channel draft.
>>>>> 
>>>>> I am missing descriptions of the requirements of how transmission
>>>>> failures are to be handled.
>>>>> 
>>>>> I suggest that section   6.6 "Transferring User Data on a Channel" is
>>>>> extended with a description on what happens if the transmission fails.
>>>>> It is evident that there will be different actions for the different
>>>>> types of channels.
>>>>> 
>>>>> For unordered, unreliable channels, I assume that neither the
>>>>> transmitter nor the receiver will be notified of transmission failures.
>>>>> 
>>>>> For ordered, semi-reliable channels, I assume that the transmitter is
>>>>> notified about failure if the transmitting channel has no indication
>>>>> of successful transmission after the specified number of
>>>>> retransmissions or milliseconds.
>>>>> Same with the receiver, but the error notification may not appear
>>>>> until next transmission is received, so that the gap can be detected.
>>>>> 
>>>>> Also the so called ordered reliable channel may fail. It just has a
>>>>> higher number of retries over a longer time. So, same information
>>>>> should be provided for that type.
>>>> The traditional way of signalling the failiure of a reliable channel is
>>>> to indicate that the channel has failed.
>>> So, let us try to get proposed text in order for a suitable behavior for the data channel draft.
>>> 
>>> In the data channel draft, section 6.6, I suggest to add something like:
>>> --------------------------------------------------------------
>>> "In case of transmission problems, a reliable channel and a partially-reliable channel performs retries. The retries for a reliable channel are limited by SCTP parameters. The retries for a partially-reliable channel are limited by the parameter set by the application at channel creation time.
>>> 
>>> If transmission on a reliable channel is considered unsuccessful by the transport protocol, the channel is regarded to have failed. An error report is provided to the upper layer on the transmitter side. An error report is provided on the  receiver side if the receiver has any indication that a transmission was intended.
>> Please note that not only the channel fails, but all channels using the same SCTP association.
>> Since a peer connection currently uses a single SCTP association, this means all data channel
>> of that peer connection fail.
>>> If the channel is ordered, then no data from the lost transmission and onwards is lost.
>>> 
>>> If transmission on a partially-reliable channel is unsuccessful after the specified retry limit, the channel reports temporary failure to the transmitting application and accepts new send requests. If the channel is un-ordered, the receiving side will not notify the application about the loss.
>> I think you are discussion API issues here. I think they are not discussed within the IETF...
>> However, SCTP can provide on the sender side a notification that some use message has been
>> abandoned.
>>> If the channel is ordered, then the channel on the receive side provides a loss indication in place of the lost data.
>>> 
>>> If transmission on a nonreliable channel is unsuccessful, it is not reported as any failure."
>>> 
>>> -------------------------------------------------------------
>>> It could also be collected in a separate section "Data transmission failures" after section 6.6.
>>> 
>>> Further thoughts:
>>> 
>>> For an application designer, it is important to know for how long the channel will stall in case of transmission problems before it is regarded to have failed. I could not find information for the general case in SCTP.
>>> Can anyone guide on this: How long does SCTP try with a reliable transmission before it gives up?
>> It is the association maximum transmit counter. However, some implementation fail the association
>> if it goes into the dormant state, which means that all paths are inactive.
>>> Not until that is known, it can be judged if a reliable or partially-reliable channel is the right choice for the planned application.
>> Reliable means, that all channels are taken down if a message doesn't make it through.
>> Partial reliable means, that transmission of a message can fail, the association stays up.
>>> 
>>>>> And, is there just an error notification and then open for trying next
>>>>> transmission, or is the channel broken and needs to be opened again. I
>>>>> suggest that transmission can continue after the error notification.
>>>> This should expose the corresponding property of the SCTP protocol. I
>>>> expect SCTP experts will answer that.
>>> Yes, please. I did not find it in RFC 4960.
>>>>> Can duplications be guaranteed to be avoided in the ordered channel?
>>>> As far as I know, yes.
>>>> 
>>>>> Can there be cases when the transmitter gets a notification about
>>>>> failure, but the receiver has received the data successfully?
>>>> Yes. Avoiding such a situation is logically impossible; you'd get into
>>>> an infinite regression of ACKs otherwise.
>>>> 
>>>>> How is this reflected in WebRTC API:s?
>>>> The WebRTC API has no defined function for notification of
>>>> single-message transmission failure. So it reflects the assumption that
>>>> one either gets no indication at all (for unreliable and limited-retry)
>>>> or channel failure (for reliable).
>>> This sounds not logical for ordered partially-reliable channels.  I think a gap indication shall be provided through the API.
>>> I inserted that thought for the text proposal for draft-ietf-rtcweb-data-channel-06, and something similar is needed in the API as well.
>> I think the API should be discussed in the W3C...
>> 
>> Best regards
>> Michael
>>> 
>>> 
>>> /Gunnar
>>>> _______________________________________________
>>>> rtcweb mailing list
>>>> rtcweb@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/rtcweb
>>> _______________________________________________
>>> rtcweb mailing list
>>> rtcweb@ietf.org
>>> https://www.ietf.org/mailman/listinfo/rtcweb
>>> 
> 
>