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

Kiran Kumar Guduru <kiran.guduru@samsung.com> Sat, 19 July 2014 02:41 UTC

Return-Path: <kiran.guduru@samsung.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 3125D1A01F3 for <rtcweb@ietfa.amsl.com>; Fri, 18 Jul 2014 19:41:19 -0700 (PDT)
X-Quarantine-ID: <Lx2mceDDJReV>
X-Virus-Scanned: amavisd-new at amsl.com
X-Amavis-Alert: BAD HEADER SECTION, Duplicate header field: "MIME-Version"
X-Spam-Flag: NO
X-Spam-Score: -5.184
X-Spam-Level:
X-Spam-Status: No, score=-5.184 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, MIME_HTML_ONLY=0.723, RCVD_IN_DNSWL_HI=-5, RELAY_IS_203=0.994, RP_MATCHES_RCVD=-0.001, SPF_HELO_PASS=-0.001] autolearn=ham
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 Lx2mceDDJReV for <rtcweb@ietfa.amsl.com>; Fri, 18 Jul 2014 19:41:16 -0700 (PDT)
Received: from mailout2.samsung.com (mailout2.samsung.com [203.254.224.25]) (using TLSv1 with cipher RC4-MD5 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 752CC1A0172 for <rtcweb@ietf.org>; Fri, 18 Jul 2014 19:41:16 -0700 (PDT)
Received: from epcpsbgr2.samsung.com (u142.gpu120.samsung.co.kr [203.254.230.142]) by mailout2.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0N8X009WCU4PEO30@mailout2.samsung.com> for rtcweb@ietf.org; Sat, 19 Jul 2014 11:41:13 +0900 (KST)
Received: from epcpsbgx1.samsung.com ( [172.20.52.122]) by epcpsbgr2.samsung.com (EPCPMTA) with SMTP id 0C.8A.19452.9CAD9C35; Sat, 19 Jul 2014 11:41:13 +0900 (KST)
X-AuditID: cbfee68e-b7fb96d000004bfc-bf-53c9dac94847
Received: from epmailer02 ( [203.254.219.142]) by epcpsbgx1.samsung.com (EPCPMTA) with SMTP id F7.C9.03708.9CAD9C35; Sat, 19 Jul 2014 11:41:13 +0900 (KST)
Message-id: <08.C9.03708.9CAD9C35@epcpsbgx1.samsung.com>
Date: Sat, 19 Jul 2014 02:41:13 +0000
From: Kiran Kumar Guduru <kiran.guduru@samsung.com>
To: "rtcweb-request@ietf.org" <rtcweb-request@ietf.org>, "rtcweb@ietf.org" <rtcweb@ietf.org>, pkyzivat@alum.mit.edu
MIME-version: 1.0
X-MTR: 20140719022453642@kiran.guduru
Msgkey: 20140719022453642@kiran.guduru
X-EPLocale: en_US.windows-1252
X-Priority: 3
X-EPWebmail-Msg-Type: personal
X-EPWebmail-Reply-Demand: 0
X-EPApproval-Locale:
X-EPHeader: ML
X-EPTrCode:
X-EPTrName:
X-MLAttribute:
X-RootMTR: 20140719022453642@kiran.guduru
X-ParentMTR:
X-ArchiveUser:
X-CPGSPASS: N
MIME-version: 1.0
Content-type: multipart/related; boundary="=_NamoWEC-u3a74ohxi5"
X-Generator: Namo ActiveSquare 7 7.0.0.45
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrGKsWRmVeSWpSXmKPExsWyRsSkSvfkrZPBBh8nm1ms/dfO7sDosWTJ T6YAxigum5TUnMyy1CJ9uwSujP13djMVNPxnrPjTeYSpgXH6D8YuRk4OIQF1iQ2r77GB2BIC JhJnXu5ihbDFJC7cWw8U5wKqWcooMeP2akaYosYtFxkhEnMYJd4+2w+W4BWwkDh0eSKYzSKg KrH6SCvYVDaghl8n1gDFOTiEBSwlHhxMAgmLCNRI/D64kgniCCWJtVdvskKMEZQ4OfMJC8Qu VYnPaz5AxdUk1sy9AXWonMSSqZeZIGxeiRntT1lg4tO+rmGGsKUlzs/awAjzzOLvj6Hi/BLH bu9gAjkHpPfJ/WCYMbs3f4EaLyAx9cxBqFYtiYvL70DDhE9izcK3LDBjdp1azgzTe3/LXCZU 53NwMAs4SVw6lg5RoinxaFErCyjUJAQOcEisbN/HMoFRaRaSFlQ2XDtImFnAUOLLvMeMELai xJTuh+wQJXYS1z9kogqD2KoSV45cY17AyLGKUTS1ILmgOCm9yEivODG3uDQvXS85P3cTIzDx nP73rG8H480D1ocYq4BxNpFZSjQ5H5i48kriDY3NjCxMTUyNjcwtzagirCTOu+hhUpCQQHpi SWp2ampBalF8UWlOavEhRiYOTqkGxknlwa6vTu+wVit81rL9dEp70tV031lO8zxllymVd7xe WprxvJbR+qB5TNyDhRJuXGl6n6Oi/tRfuiR/iWMW4+I5WqsDLLhmpz+XXr4ozuTEP6sLuyrn LXezk7Levy1G7GXE9MeNQc8mb+XoUfosU1XkcGuSfUNs4rad2825ZvVcXrkz0K36vRJLcUai oRZzUXEiAE5DlBFpAwAA
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrEJsWRmVeSWpSXmKPExsVy+t/tPt2Tt04GG+w8oGWx9l87uwOjx5Il P5kCGKPSbDJSE1NSixRS85LzUzLz0m2VvIPjneNNzQwMdQ0tLcyVFPISc1NtlVx8AnTdMnOA pioplCXmlAKFAhKLi5X07WyK8ktLUhUy8otLbJWiDc2N9IwM9EyN9AxNY60MDQyMTIFqEtIy 9t/ZzVTQ8J+x4k/nEaYGxuk/GLsYOTmEBNQlNqy+xwZiSwiYSDRuucgIYYtJXLi3HijOBVQz h1Hi7bP9YAkWAVWJ1UdawRrYgBp+nVgDFOfgEBawlHhwMAkkLCJQI/H74EomiPlKEmuv3mQF sXkFBCVOznzCAjFfVeLzmg9QcTWJNXNvQN0gJ7Fk6mUmCJtXYkb7UxaY+LSva5ghbGmJ87M2 wN25+PtjqDi/xLHbO5hAzgHpfXI/GGbM7s1foMYLSEw9cxCqVUvi4vI7rBA2n8SahW9ZYMbs OrWcGab3/pa5TKjO5+BgFnCSuHQsHaJEU+LRolaWCYwys5BUobLhOkDCzAKGEl/mPWaEsBUl pnQ/ZIcosZO4/iETVRjEVpW4cuQa8wJGjlWMoqkFyQXFSekVhnrFibnFpXnpesn5uZsYwcns 2cIdjF/OWx9iFOBgVOLh3aF1MliINbGsuDL3EKMK0JxHG1ZfYJRiycvPS1US4XVZA5TmTUms rEotyo8vKs1JLT7EOJERGMMTmaVEk/OBKTivJN7Q2MTc1NjUwsDQ3NyMlsJK4rx3byYFCQmk J5akZqemFqQWwRzFxMEp1cA4LyJ+/8mKhP9b961V0XVUlTpia57JmKo96e5S+ds9PFNjGf++ iV+mfnWGTlvdpYueR58Y63q4Xt5itCL3xN3ChuQCEVPvmg/FjtKLq5+zJ51JYNPt3fMpSv1z yqwDZVYC/4ovmZ29U/hwqk2og/rNl4q31Vb2Om65oHPr7AHOw5pXhb5MPH9HiaU4I9FQi7mo OBEAgbCdfeUDAAA=
DLP-Filter: Pass
X-CFilter-Loop: Reflected
Archived-At: http://mailarchive.ietf.org/arch/msg/rtcweb/-ft7OObwCUFzns11qpXX7ewCLZA
Subject: Re: [rtcweb] Review of draft-ietf-rtcweb-jsep-07
X-BeenThere: rtcweb@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: kiran.guduru@samsung.com
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 02:41:19 -0000

Samsung Enterprise Portal mySingle

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" rel="nofollow">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