[rtcweb] Comments on draft-ietf-rtcweb-jsep-06
Magnus Westerlund <magnus.westerlund@ericsson.com> Fri, 14 March 2014 13:05 UTC
Return-Path: <magnus.westerlund@ericsson.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 561FE1A014E for <rtcweb@ietfa.amsl.com>; Fri, 14 Mar 2014 06:05:15 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.851
X-Spam-Level:
X-Spam-Status: No, score=-3.851 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_EQ_SE=0.35, RCVD_IN_DNSWL_MED=-2.3, SPF_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 AdiF1mDsM6zK for <rtcweb@ietfa.amsl.com>; Fri, 14 Mar 2014 06:05:12 -0700 (PDT)
Received: from mailgw2.ericsson.se (mailgw2.ericsson.se [193.180.251.37]) by ietfa.amsl.com (Postfix) with ESMTP id 9F0E11A013B for <rtcweb@ietf.org>; Fri, 14 Mar 2014 06:05:11 -0700 (PDT)
X-AuditID: c1b4fb25-b7f038e000005d01-e5-5322fe7f690e
Received: from ESESSHC005.ericsson.se (Unknown_Domain [153.88.253.124]) by mailgw2.ericsson.se (Symantec Mail Security) with SMTP id A0.C6.23809.F7EF2235; Fri, 14 Mar 2014 14:05:04 +0100 (CET)
Received: from [127.0.0.1] (153.88.183.153) by smtp.internal.ericsson.com (153.88.183.35) with Microsoft SMTP Server id 14.2.347.0; Fri, 14 Mar 2014 14:05:03 +0100
Message-ID: <5322FE7F.9040007@ericsson.com>
Date: Fri, 14 Mar 2014 14:05:03 +0100
From: Magnus Westerlund <magnus.westerlund@ericsson.com>
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Thunderbird/24.3.0
MIME-Version: 1.0
To: "rtcweb@ietf.org" <rtcweb@ietf.org>, draft-ietf-rtcweb-jsep@tools.ietf.org
X-Enigmail-Version: 1.6
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 8bit
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrNJMWRmVeSWpSXmKPExsUyM+JvjW7DP6Vgg2d32Szmd6xjs1j7r53d gcljyZKfTB5fLn9mC2CK4rJJSc3JLEst0rdL4Mpo+bmPqeBrQsXXl/PZGhhfeHcxcnJICJhI bF42nR3CFpO4cG89WxcjF4eQwCFGiV8d71khnOWMEgc2nmTqYuTg4BXQlvj/Kg6kgUVAVWLO jE5WEJtNwELi5o9GNhBbVCBYYueB34wgNq+AoMTJmU9YQGwRgSCJdQu7mUBsYQE9iQ0bd7OA jJQQEJfoaQwCCTMDhadcbWGEsOUlmrfOZgaxhYC2NjR1sE5g5J+FZOosJC2zkLQsYGRexcie m5iZk15utIkRGGAHt/xW3cF455zIIUZpDhYlcd4Pb52DhATSE0tSs1NTC1KL4otKc1KLDzEy cXBKNTBWVJZtmrtVZ+aJB5tMrd3ela+fOz/P5uRrHsuytf5L72zXTlv2mvfq/6hbfMs0MrNt ahO1z9svknRUKDnML8sz61kyy/7ih0ems25vvdX45+Q2ifOr2zZsDzoipHIhyl1Qa+LVnc/7 /F8G6yRsDPnbxc224pLcAkvpp5tPFLZWsX5kVilbUeKixFKckWioxVxUnAgAm+Kqy/4BAAA=
Archived-At: http://mailarchive.ietf.org/arch/msg/rtcweb/2oz2yirHR7J83IWUtLQApP-I0vE
Subject: [rtcweb] Comments on draft-ietf-rtcweb-jsep-06
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: Fri, 14 Mar 2014 13:05:15 -0000
Hi,
I did review the JSEP -06 prior to the meeting. Now I have had time to
write-up my comments.
1) Section 1):
[W3C.WD-webrtc-20111027]
This is very old version of the API, please update to the currently
relevant version.
2) Section 3.4.1.1:
The m-line index is a zero-based index, referring to the Nth m-line in
the SDP.
a) I think the above is a bit confusing. As a zero-based index would
mean that the first m= section would have index 0. Thus, the referring
to the Nth m-line in the SDP is unclear. Is N, the provided index, in
which case it would be the N+1th m-line. Please rewrite.
b) I also wonder if one has to be clearer on what "the SDP" is. I assume
it is the one that has been generated by the agent, rather than the
latest sent or received?
3) Section 3.4.1.1:
"The MID uses the "media stream identification", as defined in
[RFC5888] , to identify the m-line."
a spurious space after ref.
4) JSEP applications typically inform the browser to begin ICE gathering
via the information supplied to setLocalDescription, as this is where
the app specifies the number of media streams to gather candidates
for.
I find the statement that ICE candidate gathering starts first with
setLocalDescription. Doesn't the created offer already contain local
candidates, thus one must have already gathered some candidates? To me
it appears reasonable to start gathering earlier, rather than later.
Thus, as soon as one create the PeerConnection object and have added any
MST to it or a data channel, one can start gathering.
5) Section 3.5.2:
In the parallel forking case where the Javascript application wishes
to simultaneously exchange media with multiple peers, the flow is
slightly more complex, but the Javascript application can follow the
strategy that [RFC3960] describes using UPDATE. (It is worth noting
that use cases where this is the desired behavior are very unusual.)
I mostly react to the last sentence within the paragraph. I think the
poster child for semi-parallel forking was the MMORG that like to
establish PCs with anyone that is coming close in the virtual world.
Thus either needs to have a number of PCs on standby or have just one,
but treat that as parallel forking. And if you like to discourage the
later, then I think you might need to at least inform about the
possibility to have stand-by PCs.
6. Section 3.6:
In the event that the local application state is reinitialized,
either due to a user reload of the page, or a decision within the
application to reload itself (perhaps to update to a new version), it
is possible to keep an existing session alive, via a process called
"rehydration". The explicit goal of rehydration is to carry out this
session resumption with no interaction with the remote side other
than normal call signaling messages.
I think this paragraph makes two erronous statements:
a) "keep an existing session alive"
I think "resume" an existing session would be more correct. Because it
would be broken when the reload happens.
b) "with no interaction with the remote side"
My understanding is that due to DTLS and key handling a DTLS
renegotiation will be required with the peer. Isn't also a signalling
exchange likely to be required due to change of local DTLS cert as well
as ICE candidates as parameters? Any other parameters that will be
required to exchanges when rehydrating?
7. Section 3.6:
Next, a new offer is
generated by the new PeerConnection; this offer will have new ICE and
possibly new DTLS-SRTP certificate fingerprints (since the old ICE
and SRTP state has been lost).
I think this may require quite a bit more details. A forward pointer to
where you will specify that?
8. Section 3.6:
[OPEN ISSUE: EKR proposed an alternative rehydration approach where
the actual internal PeerConnection object in the browser was kept
alive for some time after the web page was killed and provided some
way for a new page to acquire the old PeerConnection object.]
Can't we declare this open issue closed? I have seen no details on the
alternative proposal. Thus, lets work with the one that is present.
9. Section 4.1.1:
There is no discussion of how the bundle policies relate to the Data
Channels? Are they included or do they have a specific set of policies.
Please extend this to discuss this.
10. Section 4.1.3:
This text doesn't appear to contain a requirement on that one MUST have
called setRemote prior to being able to call it.
11. Section 4.1.4.1:
While this could also be done with an inactive "pranswer", followed
by a sendrecv "answer", the initial "pranswer" leaves the offer-
answer exchange open, which means the caller cannot send an updated
offer during this time.
Should one mention that also the callee can't send an offer without
doing a "final" answer?
12. Section 4.1.4.1
By the time the human has accepted the call and
triggered the new offer, it is likely that the ICE and DTLS
handshaking for all the channels will already be set up.
Wouldn't the handshaking have "finished" rather than "set up"?
13. Section 4.1.4.2:
Rollback can only be used to cancel proposed changes; there is no
support for rolling back from a stable state to a previous stable
state.
What is meant with "proposed changes"? From my side it is not clear how
much you can do after having performed a SetLocal or SetRemote. I think
these needs to be treated separately.
For an offerer, they can createOffer, SetLocal, send to peer, receive
reject and then undo the SetLocal. That is straight forward, and if they
done the SetRemote, they would be consider in a new Stable state and
can't roll back anymore?
For the answering side, it receive an offer, does SetRemote,
CreateAnswer, determines that it doesn't like it, the can undo the
SetRemote and send a reject message to offerer.
But what about this case? it receive an offer, does SetRemote,
CreateAnswer, SetLocal and sends the message, then receive a reject from
the peer, because it didn't like the answer? Are the answerer then in a
stable state that can't be unrolled, or?
14. Section 4.1.5:
This API indirectly controls the candidate gathering process. When a
local description is supplied, and the number of transports currently
in use does not match the number of transports needed by the local
description, the PeerConnection will create transports as needed and
begin gathering candidates for them.
Another part of an earlier question regarding what triggers ICE gathering?
15. Section 4.1.7:
TODO: Do we need to expose accessors for both the current and
proposed local description?
This needs to be resolved, I don't know if I can answer this question.
16. Section 4.1.9:
Should this section discuss that it might be browser that has overriding
controls regarding if other candidates then relay ones may be provided,
i.e. privacy mode?
17. Section 4.1.9:
Regardless of the configuration, the gathering process collects all
available candidates, but excluded candidates will not be surfaced in
onicecandidate callback or used for connectivity checks.
Doesn't this result in both resource consumption and that the configured
TURN server will learn the external IP address and port for the client?
18. Section 5.2.1:
Structure in relation between RTP media and DATA channel. Maybe you
should try to find a structure that makes the difference between the two
types of transport more clear, and what applies to the perspective.
19. Section 5.2.1:
o For the current default candidate, a "c=" line, as specific in
[RFC5245], Section 4.3., paragraph 6. If no candidates have been
gathered yet, the default candidate should be set to the 'null'
value defined in [I-D.ietf-mmusic-trickle-ice], Section 5.1.
What about host candidates?
20. Section 5.2.1:
The CNAME must be generated
in accordance with draft-rescorla-random-cname-00. [OPEN ISSUE:
How are CNAMEs specified for MSTs? Are they randomly generated
for each MediaStream? If so, can two MediaStreams be synced?]
I think you should point to the RTP usage for this particular piece.
Because we do have text there both for the CNAME generation and how
CNAMES among MSTs and between PeerConnection. Likely to be changed soon
based on the mailing list discussion.
21. Section 5.2.1:
o [OPEN ISSUE: Handling of a=imageattr]
Yes, I think imageattr should be supported to give guidance on suitable
resolutions that an endpoint like to receive for a particular MST.
22. Section 5.2.1:
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.
Isn't this overriding BUNDLE as currently specified, forcing everything
into a single bundle group. Thus, preventing the bundle policies to work.
23. Section 5.2.2:
o If any MediaStreamTracks have been added, and there exist m=
sections of the appropriate media type with no associated
MediaStreamTracks
Isnt' the last a "MediaStreamTrack" rather than plural ones?
24. 5.2.3.3. VoiceActivityDetection
If the "VoiceActivityDetection" constraint is specified, with a value
of "true", the offer MUST indicate support for silence suppression by
including comfort noise ("CN") codecs for each supported clock rate,
as specified in [RFC3389], Section 5.1.
As currently specified this text requires the usage of a comfort noise
codec, currently there is no such on required. I think the "MUST" needs
to be rewritten.
25. Section 5.3.1:
Note
that for simplicity, the answerer MAY use different payload types
for codecs than the offerer, as it is not prohibited by
Section 6.1.
I react to the word simplicity here. I never consider usage of different
PTs per direction anything simple. But, yes it is allowed by RFC 3264.
But I kind of protest to encourage the usage.
26. Section 5.3.2 etc.
When will we see a first draft of the text in the sections:
5.3.2, 5.3.3., 5.4, 5.5, 5.6, 5.7?
I really like to see it prior to the Interim meeting.
27. Section 6:
Note: This section is still very early and is likely to significantly
change as we get a better understanding of a) the use cases for this
b) the implications at the protocol level c) feedback from
implementors on what they can do.
Shouldn't this mention W3C discussion also?
28. Section 7 - Security Considerations:
First of all there are no references to the Security Considerations or
architecture document.
Secondly, I would like to have some security discussion on significant
issues with JSEP itself. Resource attacks on the local endpoint for
example?
29. section 10
There are a couple of draft references that are either published RFCs or
at least WG versions. Please update the reference list.
30. Section 10.2:
Looking at the spec, I think the following references are normative:
[I-D.ietf-mmusic-trickle-ice]
Ivov, E., Rescorla, E., and J. Uberti, "Trickle ICE:
Incremental Provisioning of Candidates for the Interactive
Connectivity Establishment (ICE) Protocol", draft-ietf-
mmusic-trickle-ice-00 (work in progress), March 2013.
[I-D.ietf-rtcweb-data-protocol]
Jesup, R., Loreto, S., and M. Tuexen, "WebRTC Data Channel
Protocol", draft-ietf-rtcweb-data-protocol-04 (work in
progress), February 2013.
Cheers
Magnus Westerlund
----------------------------------------------------------------------
Services, Media and Network features, Ericsson Research EAB/TXM
----------------------------------------------------------------------
Ericsson AB | Phone +46 10 7148287
Färögatan 6 | Mobile +46 73 0949079
SE-164 80 Stockholm, Sweden | mailto: magnus.westerlund@ericsson.com
----------------------------------------------------------------------
- [rtcweb] Comments on draft-ietf-rtcweb-jsep-06 Magnus Westerlund
- Re: [rtcweb] Comments on draft-ietf-rtcweb-jsep-06 Justin Uberti
- Re: [rtcweb] Comments on draft-ietf-rtcweb-jsep-06 Justin Uberti