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

"Makaraju, Maridi Raju (Raju)" <Raju.Makaraju@alcatel-lucent.com> Fri, 24 October 2014 17:43 UTC

Return-Path: <Raju.Makaraju@alcatel-lucent.com>
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 A6CA11A899D for <mmusic@ietfa.amsl.com>; Fri, 24 Oct 2014 10:43:34 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.71
X-Spam-Level:
X-Spam-Status: No, score=-0.71 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, J_CHICKENPOX_14=0.6, J_CHICKENPOX_15=0.6, T_RP_MATCHES_RCVD=-0.01] 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 kAB6y95z0nrM for <mmusic@ietfa.amsl.com>; Fri, 24 Oct 2014 10:43:33 -0700 (PDT)
Received: from smtp-us.alcatel-lucent.com (us-hpatc-esg-02.alcatel-lucent.com [135.245.18.28]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 03EA11A8998 for <mmusic@ietf.org>; Fri, 24 Oct 2014 10:43:32 -0700 (PDT)
Received: from us70uusmtp4.zam.alcatel-lucent.com (unknown [135.5.2.66]) by Websense Email Security Gateway with ESMTPS id A5050F07061DE; Fri, 24 Oct 2014 17:43:29 +0000 (GMT)
Received: from US70TWXCHHUB03.zam.alcatel-lucent.com (us70twxchhub03.zam.alcatel-lucent.com [135.5.2.35]) by us70uusmtp4.zam.alcatel-lucent.com (GMO) with ESMTP id s9OHhUYb020360 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=FAIL); Fri, 24 Oct 2014 13:43:31 -0400
Received: from US70UWXCHMBA02.zam.alcatel-lucent.com ([169.254.8.56]) by US70TWXCHHUB03.zam.alcatel-lucent.com ([135.5.2.35]) with mapi id 14.03.0195.001; Fri, 24 Oct 2014 13:43:30 -0400
From: "Makaraju, Maridi Raju (Raju)" <Raju.Makaraju@alcatel-lucent.com>
To: Paul Kyzivat <pkyzivat@alum.mit.edu>, "mmusic@ietf.org" <mmusic@ietf.org>
Thread-Topic: [MMUSIC] draft-ejzak-mmusic-msrp-usage-data-channel
Thread-Index: AQHP7t66dy5ZGL+nPEG/1c9gL4hdCZw+EJjQgABWxQCAAPUTgIAAWcEA//+91kA=
Date: Fri, 24 Oct 2014 17:43:30 +0000
Message-ID: <E1FE4C082A89A246A11D7F32A95A17828E5EFCA8@US70UWXCHMBA02.zam.alcatel-lucent.com>
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>
In-Reply-To: <544A7FAE.1070206@alum.mit.edu>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [135.5.27.16]
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
Archived-At: http://mailarchive.ietf.org/arch/msg/mmusic/8tQnd1FeGtYickVOVo_n40tCjYo
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 17:43:34 -0000

> 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. Also, I think the new offer many times uses
a new transport address (at least the port), which makes such a reuse easy.
</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 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?!
- 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.
</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