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

Justin Uberti <juberti@google.com> Wed, 23 July 2014 03:18 UTC

Return-Path: <juberti@google.com>
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 F00C91A0304 for <rtcweb@ietfa.amsl.com>; Tue, 22 Jul 2014 20:18:39 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.378
X-Spam-Level:
X-Spam-Status: No, score=-1.378 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, NORMAL_HTTP_TO_IP=0.001, RP_MATCHES_RCVD=-0.001, SPF_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 QoHTpJss9LiR for <rtcweb@ietfa.amsl.com>; Tue, 22 Jul 2014 20:18:37 -0700 (PDT)
Received: from mail-vc0-x229.google.com (mail-vc0-x229.google.com [IPv6:2607:f8b0:400c:c03::229]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id C7A9D1A02FF for <rtcweb@ietf.org>; Tue, 22 Jul 2014 20:18:36 -0700 (PDT)
Received: by mail-vc0-f169.google.com with SMTP id hu12so1073876vcb.14 for <rtcweb@ietf.org>; Tue, 22 Jul 2014 20:18:36 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type; bh=8VIiHODRAP0ESOMQT8l1p6/CyTDk4VLurAxpIzuSEbw=; b=KN8i1UUKzYfU/kJzBEKMv4o8vuN/ic9lb7o1dcsORT7A15RDVoVkMLCVC5RyZYAtyt 0hEJDkXFW+Amx/O9KvH5TECfJ4VUB+EVpiuyU2TS4fCJXO/G4UgXGEEh2NmNPAGwAJOo DoD1sINs85vZbW4JTuFgZ0bRxPmIMG0bChW+jG04Y+L6PyRHU0GNoo2KO5/jwsNC1SwU 0L5aNQBE0RYD+6p7xj9PFDlOxzuGsprxV7wRcT9Mf7vU61oiK2XKS+kK7zIV/eL1YraU kIuJt4nGV1hJ7a5bKZ3CRcwD0qkFvP3x+zgSI4gklQKxXk6HZotLQVvPvIcCu9jWlouS Pxkg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-type; bh=8VIiHODRAP0ESOMQT8l1p6/CyTDk4VLurAxpIzuSEbw=; b=QzzPq8D1KXxqrf6W+3yCZChSTDj8O+nte5xcWXLqqQa26EUVZL84X3hul7gnXMd8V8 WpnjtxVPH6wla/gZeTpj7rTEb2vXfncmvIhZVhGx/gnmPwC7Rn5haBiPaN9lsjTFqTmv ox8lzmq4NQIUjuAyAZjUgVPiPxY+9yddUpY1QtOMsZY4oTpmQgWHX236nhppjKODvf0K 6YSOgMJuEDJz5hIkDu+RcIPqOasdZWMRjVnhhUP4+/LIe+hQO691Df4tbH7Fdw2MAwg7 6Xr1FhwBAq3RobIh53rfYNLbT6MP44kF3Aa/hob0JGOBgddPl2enfYMmboerEPce8TNk hYuw==
X-Gm-Message-State: ALoCoQmUYJFiIi8FkOlkKYPSCV29WTqstwH99NXLcywX5g5ahXyFDxhMA9F7PK435nFX3Zf3f3K4
X-Received: by 10.52.228.40 with SMTP id sf8mr17660690vdc.78.1406085515846; Tue, 22 Jul 2014 20:18:35 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.52.66.242 with HTTP; Tue, 22 Jul 2014 20:18:15 -0700 (PDT)
In-Reply-To: <53CEFA2C.8040407@nteczone.com>
References: <BA.FF.03708.B6C7CC35@epcpsbgx1.samsung.com> <CAMvTgceedwBHW-x+vYArPfh4eW3mx-2_6tMkhkjbFST9zO4KCw@mail.gmail.com> <53CEFA2C.8040407@nteczone.com>
From: Justin Uberti <juberti@google.com>
Date: Tue, 22 Jul 2014 23:18:15 -0400
Message-ID: <CAOJ7v-0nX51pgUC+h1kpr6VAnLBejoF0-DogQ=meNEHbGXKhZA@mail.gmail.com>
To: Christian Groves <Christian.Groves@nteczone.com>
Content-Type: multipart/alternative; boundary="089e011602ceb2445e04fed3cb10"
Archived-At: http://mailarchive.ietf.org/arch/msg/rtcweb/fqSPmGpU8RcQsmVAiSCDkmIP9PI
Cc: "rtcweb@ietf.org" <rtcweb@ietf.org>
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: Wed, 23 Jul 2014 03:18:40 -0000

On Tue, Jul 22, 2014 at 7:56 PM, Christian Groves <
Christian.Groves@nteczone.com> wrote:

> The browser would delay the establishment of media that are part of the
> "a=group:clue" group until a CLUE exchange has taken place and those media
> have been selected via a CLUE configure message. I'm not sure if that fits
> your criteria for acting differently?
>
> The browser doesn't understand a=group:clue. How could it know that it
needs to wait for CLUE messaging to complete?



> On 21/07/2014 6:34 PM, Kevin Dempsey wrote:
>
>> Would the browser be expected to act differently with "a=group:clue"? If
>> not, then that is really part of the signalling and not part of the
>> createXxx/setXxxDescription interface.
>>
>> The SDP passed to setXxxDescription and the SDP sent as part of the
>> signalling (if SDP is used) do not need to be identical.
>>
>>
>> On 21 July 2014 03:35, Kiran Kumar Guduru <kiran.guduru@samsung.com
>> <mailto:kiran.guduru@samsung.com>> wrote:
>>
>>     It seems there is a small mis-understanding here. I agree there is
>>     a need for parsing and editing SDP by JS application for now.
>>
>>     I am not saying that constraints will do everything.
>>
>>     My intention is, to find the possibilities to extend the API of
>>     existing RTCPeerConnection and proposed RTCRTPSender/Receiver to
>>     add the attributes required by JS application.
>>
>>     For now, I proposed solution for one such kind of problem, i.e.,
>>     prioritizing codecs.
>>
>>     setSdPAttribute (key, value) is just an example on top of my head,
>>     which might solve this. But we can really figure out this after
>>     getting the proposed API (RTCRTPSender/Receiver ) in draft.
>>
>>     Regards,
>>
>>     Kiran
>>
>>     ------- *Original Message* -------
>>
>>     *Sender* : Paul Kyzivat<pkyzivat@alum.mit.edu
>>     <mailto:pkyzivat@alum.mit.edu>>
>>
>>     *Date* : Jul 19, 2014 22:35 (GMT+09:00)
>>
>>     *Title* : Re: [rtcweb] Review of draft-ietf-rtcweb-jsep-07
>>
>>
>>     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 <http://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
>>     >
>>     >
>>
>>
>>     _______________________________________________
>>     rtcweb mailing list
>>     rtcweb@ietf.org <mailto:rtcweb@ietf.org>
>>     https://www.ietf.org/mailman/listinfo/rtcweb
>>
>>
>>
>>
>>
>> _______________________________________________
>> 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
>