Re: [rtcweb] Review of draft-ietf-rtcweb-jsep-07

Paul Kyzivat <pkyzivat@alum.mit.edu> Sat, 19 July 2014 13:35 UTC

Return-Path: <pkyzivat@alum.mit.edu>
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 43D3E1B280E for <rtcweb@ietfa.amsl.com>; Sat, 19 Jul 2014 06:35:37 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.235
X-Spam-Level:
X-Spam-Status: No, score=-1.235 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, 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 CysFZ-mQi-Ud for <rtcweb@ietfa.amsl.com>; Sat, 19 Jul 2014 06:35:35 -0700 (PDT)
Received: from qmta10.westchester.pa.mail.comcast.net (qmta10.westchester.pa.mail.comcast.net [IPv6:2001:558:fe14:43:76:96:62:17]) by ietfa.amsl.com (Postfix) with ESMTP id 39E9D1B2812 for <rtcweb@ietf.org>; Sat, 19 Jul 2014 06:35:35 -0700 (PDT)
Received: from omta19.westchester.pa.mail.comcast.net ([76.96.62.98]) by qmta10.westchester.pa.mail.comcast.net with comcast id UCkC1o00427AodY5ADbark; Sat, 19 Jul 2014 13:35:34 +0000
Received: from Paul-Kyzivats-MacBook-Pro.local ([50.138.229.164]) by omta19.westchester.pa.mail.comcast.net with comcast id UDba1o00H3ZTu2S3fDbaXr; Sat, 19 Jul 2014 13:35:34 +0000
Message-ID: <53CA7426.6030602@alum.mit.edu>
Date: Sat, 19 Jul 2014 09:35:34 -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: kiran.guduru@samsung.com, "rtcweb-request@ietf.org" <rtcweb-request@ietf.org>, "rtcweb@ietf.org" <rtcweb@ietf.org>
References: <58.C9.03708.ACAD9C35@epcpsbgx1.samsung.com>
In-Reply-To: <58.C9.03708.ACAD9C35@epcpsbgx1.samsung.com>
Content-Type: text/plain; charset="windows-1252"; format="flowed"
Content-Transfer-Encoding: 7bit
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=comcast.net; s=q20140121; t=1405776934; bh=N9AKKgbqjExBxxXQv6BkscFdUlN9JvTwPRQctguryiQ=; h=Received:Received:Message-ID:Date:From:MIME-Version:To:Subject: Content-Type; b=VGPNEbV+fV74IdFGBmrAyzlU/7/pq6Z7drkWO+q51eGDcY8RN9dLTqCj6Q+XOPpis c9jTqzWJpVbrcIGgEeSb7qrEs5AieC8GkbmrZY+nrkEaTWkmBdLG2gLnX7wy8V6pvJ FdpRoZ9jmrhGT+rSW1oVdRWmNy6sIIGmzu2p4Odv/+AjwPstMYnpvocOYlTKXQyGDI w16uBquN5K6qNIJVTUNweE/02R+78bIBK15O9m62Ga3oD9c/z/HYSZR+ACOOhJpD+s EmjYBprSCWjGKROcmrbSBYyllDTKTQgRyOTvUD6SAAzPInNg4W66jg6827vO/UeG/g KtWAi75jiCCLg==
Archived-At: http://mailarchive.ietf.org/arch/msg/rtcweb/MgWn05y53VTIZmP8juGrs5PtH2o
Subject: Re: [rtcweb] Review of draft-ietf-rtcweb-jsep-07
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, 19 Jul 2014 13:35:37 -0000

Kiran,

My need won't be satisfied by plausible constraints.
For instance, to interwork with CLUE it will be necessary to add an 
"a=group:clue" and include in it those m-lines that are to be "clue 
controlled". And that is needed in both offer and answer processing.

	Thanks,
	Paul

On 7/18/14 10:41 PM, Kiran Kumar Guduru wrote:
> Dear Paul,
>
> My comment is only regarding the comments on section 6 of the JSEP draft.
>
> The sdp mangling described in section 6 may result in various error
> scenarios.
>
> In that section, it is described like most of the parameters can be
> modified thorugh constraints.
>
> The required modification, I found, which cannot not be done by the
> constraints is "Remove or reorder of codecs (m=)"
>
> In order to avoid the SDP mangling at Java Script application level, I
> submitted a draft for changing the codec preferences
> http://tools.ietf.org/html/draft-guduru-rtcweb-codec-preferences-01.
> (Please review it).
>
> If this proposal is acceptable to the group, I hope we can remove
> section 6 from JSEP draft.
>
> (Expecting that we can find alternatives for adding extra attributes
> like CLUE as identified by you, for example by extending the
> proposed RTCRTPSender/Receiver by adding a generic setSdPAttribute (key,
> value) method).
>
> Thanks,
>
> Kiran.
>
>
>
> -------Original Message--------
> Sent: Paul Kyzivat
> Date: Fri, 18 Jul 2014 14:32:24 -0400
> Subject: [rtcweb] Review of draft-ietf-rtcweb-jsep-07
>
> I just did my first thorough read-through of JSEP in quite some time. I
> came away with a number of concerns:
>
> Section 1.1:
>
> When describing offers, modification by the application is mentioned:
>
>      JSEP's handling of session descriptions is simple and
>      straightforward.  Whenever an offer/answer exchange is needed, the
>      initiating side creates an offer by calling a createOffer() API.  The
>      application *optionally modifies that offer*, and then uses it to set
>      up its local config via the setLocalDescription() API.
>
> but when describing answers it is not:
>
>      When the call is accepted, the callee uses the createAnswer() API to
>      generate an appropriate answer, applies it using
>      setLocalDescription(), and sends the answer back to the initiator
>      over the signaling channel.  When the offerer gets that answer, it
>      installs it using setRemoteDescription(), and initial setup is
>      complete.
>
> And Section 6 only talks about changing offers, not answers. It is
> equally important to be able to modify answers. (More on this in later
> comment on section 6.)
>
> Section 4.1.4:
>
>      The only difference between a provisional and final answer is that
>      the final answer results in the freeing of any unused resources that
>      were allocated as a result of the offer.  As such, the application
>      can use some discretion on whether an answer should be applied as
>      provisional or final, and can change the type of the session
>      description as needed.  For example, in a serial forking scenario, an
>      application may receive multiple "final" answers, one from each
>      remote endpoint.  The application could choose to accept the initial
>      answers as provisional answers, and only apply an answer as final
>      when it receives one that meets its criteria (e.g. a live user
>      instead of voicemail).
>
> Issue: in this forking case, until the final selection is made it is
> unclear which one will need ICE completed. Only when a setlocal is done
> on one of the answers will ICE begin to be performed. Then, if another
> answer is provisionally set, won't that stop ICE for the prior one? And
> won't it require new candidates? What if one of the earlier ones is
> eventually chosen as final?
>
> And what if ICE completes for one of the candidates? Can't media start
> to flow? Then what if a different candidate is set as the final answer?
>
> Section 4.1.4.1:
>
> I question the following:
>
>      ...  While it is good practice to send an immediate
>      response to an "offer", in order to warm up the session transport and
>      prevent media clipping, the preferred handling for a web application
>      would be to create and send an "inactive" final answer immediately
>      after receiving the offer.  Later, when the called user actually
>      accepts the call, the application can create a new "sendrecv" offer
>      to update the previous offer/answer pair and start the media flow.
>
> This is very unfriendly when receiving calls that might be forked. By
> immediately "answering" a call before knowing if the user will accept
> it, you preempt the possibility that it will be answered on some other fork.
>
> For instance, if a call could come to your browser, or be sent to an
> answering service, and your broswer is on but you aren't present to
> accept the call, then the call will be accepted and then dropped rather
> than sent to the answering machine.
>
> So this technique should not be used if there is any possibility that
> the request could be coming from a source that might try other
> possibilities.
>
> Section 5.2.1:
>
>      When createOffer is called for the first time, the result is known as
>      the initial offer.
>
> By this definition, if a peer connection initially *received* an offer
> and sent an answer, and then it later sends an offer then that offer
> would be considered an initial offer.
>
> I think perhaps what is intended is:
>
>      When createOffer is called before setLocal has been called with
>      an offer,  the result is known as the initial offer.
>
> The following doesn't support the "balanced" BUNDLE policy:
>
>      Once all m= sections have been generated, a session-level "a=group"
>      attribute MUST be added as specified in [RFC5888].  This attribute
>      MUST have semantics "BUNDLE", and MUST include the mid identifiers of
>      each m= section.  The effect of this is that the browser offers all
>      m= sections as one BUNDLE group.  However, whether the m= sections
>      are bundle-only or not depends on the BUNDLE policy.
>
> Section 5.2.2 says:
>
>      o  If any MediaStreamTracks have been added, and there exist recvonly
>         m= sections of the appropriate media type with no associated
>         MediaStreamTracks, or rejected m= sections of any media type,
>         those m= sections MUST be recycled, and a local MediaStreamTrack
>         associated with these recycled m= sections until all such existing
>         m= sections have been used.  This includes any recvonly or
>         rejected m= sections created by the preceding paragraph.
>
> This fails to say anything about codec compatibility. SDP O/A requires
> the answer to be a subset of the offer in terms of PT/codec
> configuration. You should not use the same m-line unless there is a
> desire to use the same settings for the new track as are currently in
> use in the other direction.
>
> Section 5.3.1:
>
>      When createAnswer is called for the first time after a remote
>      description has been provided, the result is known as the initial
>      answer.
>
> By this definition, if a peer connection initially sent an offer and
> received an answer, and then it later receives an offer then the answer
> to that first *received* offer would be considered an Initial Answer.
>
> I think perhaps what is intended is:
>
>      When createAnswer is called before setLocal has been called with
>      an offer,  the result is known as the initial answer.
>
> When specifying the mapping of local tracks to m-lines in a received
> offer, there is again no discussion of codec compatibility. It is quite
> possible that the m-line chosen by the algorithm in this section won't
> have compatible codec attributes, but some other m-line will.
>
> Sections 5.3.2, 5.3.3, and 5.4-5.7:
>
> Are these empty because the content is yet to be written?
>
> Section 6:
>
> Other likely changes are addition of extra attributes and maybe other
> parameters. For instance, CLUE will want to add another grouping construct.
>
> Thanks,
> Paul
>
>