Re: [MMUSIC] draft-ejzak-mmusic-msrp-usage-data-channel

Paul Kyzivat <pkyzivat@alum.mit.edu> Fri, 24 October 2014 19:12 UTC

Return-Path: <pkyzivat@alum.mit.edu>
X-Original-To: mmusic@ietfa.amsl.com
Delivered-To: mmusic@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 6E5571A8AD3 for <mmusic@ietfa.amsl.com>; Fri, 24 Oct 2014 12:12:04 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.035
X-Spam-Level:
X-Spam-Status: No, score=-0.035 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, J_CHICKENPOX_14=0.6, J_CHICKENPOX_15=0.6, SPF_SOFTFAIL=0.665] 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 5_dGzeb4nTqQ for <mmusic@ietfa.amsl.com>; Fri, 24 Oct 2014 12:11:57 -0700 (PDT)
Received: from resqmta-po-12v.sys.comcast.net (resqmta-po-12v.sys.comcast.net [IPv6:2001:558:fe16:19:96:114:154:171]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id A7EBC1A8A6D for <mmusic@ietf.org>; Fri, 24 Oct 2014 12:11:55 -0700 (PDT)
Received: from resomta-po-10v.sys.comcast.net ([96.114.154.234]) by resqmta-po-12v.sys.comcast.net with comcast id 77BN1p00353iAfU017Bud7; Fri, 24 Oct 2014 19:11:55 +0000
Received: from Paul-Kyzivats-MacBook-Pro.local ([50.138.229.151]) by resomta-po-10v.sys.comcast.net with comcast id 77Bu1p0093Ge9ey017BuDt; Fri, 24 Oct 2014 19:11:54 +0000
Message-ID: <544AA47A.9090303@alum.mit.edu>
Date: Fri, 24 Oct 2014 15:11:54 -0400
From: Paul Kyzivat <pkyzivat@alum.mit.edu>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: "Makaraju, Maridi Raju (Raju)" <Raju.Makaraju@alcatel-lucent.com>, "mmusic@ietf.org" <mmusic@ietf.org>
References: <949EF20990823C4C85C18D59AA11AD8B266CF1@FR712WXCHMBA11.zeu.alcatel-lucent.com> <54492D34.5030705@alum.mit.edu> <E1FE4C082A89A246A11D7F32A95A17828E5EE3CF@US70UWXCHMBA02.zam.alcatel-lucent.com> <544966CE.2080709@alum.mit.edu> <E1FE4C082A89A246A11D7F32A95A17828E5EF911@US70UWXCHMBA02.zam.alcatel-lucent.com> <544A7FAE.1070206@alum.mit.edu> <E1FE4C082A89A246A11D7F32A95A17828E5EFCA8@US70UWXCHMBA02.zam.alcatel-lucent.com>
In-Reply-To: <E1FE4C082A89A246A11D7F32A95A17828E5EFCA8@US70UWXCHMBA02.zam.alcatel-lucent.com>
Content-Type: text/plain; charset="ISO-8859-1"; format="flowed"
Content-Transfer-Encoding: 7bit
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=comcast.net; s=q20140121; t=1414177915; bh=UjSz7zM10rR8htLLJOjue9rqbKUMlCJYsPOcsAZi1Uo=; h=Received:Received:Message-ID:Date:From:MIME-Version:To:Subject: Content-Type; b=vUu5X98m+NTkT6rCQMt6EPLEsK3P/RFNArCUWMYzhbaTWq7u2uKKhE5XvL6cYKafM OhefWzmkpsawGm7bdf7rr9W1NXNTiMSYnOHihTxkI/NzvPeWNOEPvM5DxkO5LZ0YwQ CYLKsRLnszUSpkYXI+V9FcCFMNTGo6bGhjvtDv6BHnAmqIJvrSzj1Hm5dvGnSzN/V+ pswNOpK6uHNdJGw/Hzj0JLthtufVcBMqkKyTdiygss7YGn0alZUvKosnJbECizZglc ne9+CjlO5V9u1n4DnbZeOOgA/tc+Kj4cRahfW7fpw7rkXdCd2Dg2Ig6/94SAXhaPD4 MMHpwFXYEy7IQ==
Archived-At: http://mailarchive.ietf.org/arch/msg/mmusic/Sufpw_4E1HbpXta3AXKPz8G-fVc
Subject: Re: [MMUSIC] draft-ejzak-mmusic-msrp-usage-data-channel
X-BeenThere: mmusic@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Multiparty Multimedia Session Control Working Group <mmusic.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/mmusic>, <mailto:mmusic-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/mmusic/>
List-Post: <mailto:mmusic@ietf.org>
List-Help: <mailto:mmusic-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/mmusic>, <mailto:mmusic-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 24 Oct 2014 19:12:04 -0000

On 10/24/14 1:43 PM, Makaraju, Maridi Raju (Raju) wrote:
>
>> On 10/24/14 11:26 AM, Makaraju, Maridi Raju (Raju) wrote:
>>>>> Suppose the intent is to close one MSRP session and immediately open a
>>>>>> new one. Is it permissible to simply update the SDP to describe the new
>>>>>> MSRP session, reusing the channel number, without first doing an O/A to
>>>>>> confirm the closure of the old one?
>>>>> <Raju>
>>>>> The intent is not to reuse a datachannel (same or a different
>> subprotocol)
>>>>> before close. We will clarify that such a reuse is not supported.
>>>>> The problem with such reuse is, previous datachannel MUST be reset
>> before
>>>>> it is used for new subprotocol, else the data from previous data channel
>>>> use
>>>>> will interfere with the new data channel use.
>>>>
>>>> My question is: Can I just close it in-band (with a reset) and then send
>>>> an offer for the new usage of the channel?
>>>
>>> <Raju>
>>> No. To reuse a closed data channel, a new SDP offer/answer, to convey the
>>> data channel closure (which excludes the corresponding a=dcmap and may
>> include
>>> other new data channels via new a=dcmaps), must be done. This can be done
>> either
>>> in a new offer initiated from this end or in an SDP answer this end
>> generates.
>>> The reason for this is to avoid various race conditions between SDP
>> offer/answer
>>> and SCTP reset arrival times.
>>> Also, this is not a limiting thing as a new data channel can easily be
>> created
>>> using a new stream id, range is for which is large, without restarting
>> underlying
>>> SCTP/DTLS association.
>>
>> ISTM there is a useful analogy here to reusing m-lines.
>> It once was thought that if you had been using an m-line for one thing
>> (say an audio session), and then you wanted to stop that and start using
>> that m-line for something else (say T38), you first had to send an offer
>> setting the port to zero on the audio line, and then in a later offer
>> you could then reuse that rejected m-line for T38.
>>
>> Eventually it was clarified that this was silly and unnecessary - that
>> you could simply send a new offer replacing the audio m-line with a T38
>> m-line.
>
> <Raju2>
> The above scenario is very well valid as there is no inband "SCTP Reset" equivalent
> procedure exists for RTP/UDP based media. Please see my further explanation below; the
> SCTP reset makes such a reuse problematic.

I'll comment there. I don't think so.

> Also, I think the new offer many times uses
> a new transport address (at least the port), which makes such a reuse easy.

It might, or not.

> </Raju2>
>
>>
>> So ISTM that here the following ought to be valid:
>>
>> 1) offer with dcmap for channel C, subprotocol C1, label C1
>> 2) use channel C, subprotocol C1
>> 3) send reset on channel C
>> 4) offer with dcmap for channel C, subprotocol C2, label C2
>> 5) use channel C, subprotocol C2
>
> <Raju2>
> What if the "SCTP reset" from step3 above arrives at the peer after step4 SDP offer?
> If DP arrives first then the data channel will later be closed when SCTP reset arrives,
> which is not expected behavior.
> There is no guarantee that reset arrives first. This is unless the local client waits for
> data channel close indication (SCTP reset ack) from data channel stack and sends new SDP offer.

The offerer won't send data based on the new offer until it has sent the 
reset, so there will be no ambiguity regarding data sent by the offerer. 
If the answerer wants to send data based on the new offer before it has 
received a reset, it can send a reset.

Also, I'm a little fuzzy on how the SCTP reset works with channels. Is 
it necessary for each end to send a reset? If so, that makes it simpler.

> The problem with depending on such "close indication" is:
> - PeerConnection draft does not clearly say if and when it invokes onclose() callback on the
>    side which invokes close().
>    Not sure if onclose() is called after SCTP reset is acknowledged or before?!

Then they should fix it.

> - Not sure if non-browser clients will have a way (API) to know when
>    SCTP reset is acknowledged. This depends on data channel stack implementation.

Again, this may depend on whether reset must be sent independently in 
each direction. I suspect it must, since reset is an SCTP function and 
SCTP doesn't associate pairs of streams.

	Thanks,
	Paul

> </Raju2>
>
>>
>> The following also ought to be valid:
>>
>> 1) offer with dcmap for channel C, subprotocol C1, label C1
>> 2) use channel C, subprotocol C1
>> 3a) offer lacking channel C
>> 3b) send reset on channel C
>> 4) offer with dcmap for channel C, subprotocol C2, label C2
>> 5) use channel C, subprotocol C2
>>
>> (I think the above is what you are advocating.)
>
> <Raju2>
> Correct. It is valid, allowed and is what we are advocating.
> </Raju2>
>
>>
>> The following should *not* be valid:
>>
>> 1) offer with dcmap for channel C, subprotocol C1, label C1
>> 2) use channel C, subprotocol C1
>> 4) offer with different dcmap for channel C, subprotocol C2, label C2
>> 5) use channel C, subprotocol C2
>
> <Raju2>
> Correct. It is not valid.
> In the first scenario above, this is how it looks like to the peer
> if SCTP reset is not yet received at the time of this offer arrives.
>
> We planned on updating the draft-ejzak-mmusic-data-channel-sdpneg with the following:
> 1. In a new SDP offer, if a=dcmap specifies same subprotocol and label as previous one
>     then the updated subprotocol attributes (in a=dcsa lines) are handled per the
>     subprotocol semantics.
>
> 2. In a new SDP offer, if a=dcmap specifies a different subprotocol and/or label than
>     the previous offer then the offer must be rejected entirely so that previous
>     SDP offer/answer is still valid.
>
> Appreciate your comments on this as well.
> </Raju2>
>
> Thanks
> Raju
>