Summary: Has a DISCUSS. Has enough positions to pass once DISCUSS positions are resolved.
I'm not 100% sure, but I think there's a handful of places with internal inconsistencies that should be resolved before publication. I'd be happy to hear I'm wrong, of course. The specifics make more sense in context in the COMMENT section, so I'll just indicate the specific locations here: (1) In Section 5.3.2 tb != tc in the SDP vs. commentary (2) In Section 5.3.5 is there a fourth video stream (3) Also in 5.3.5, the ToP parameter is no longer valid (e.g., in RFC 8627) (4) In Section 5.4.3, the PTs in the rejected video lines in the answer don't seem correct
I echo the thanks for assembling a nice collection of annotated examples; it's thankless work but very helpful to have. Section 1 Javascript Session Establishment Protocol (JSEP) [I-D.ietf-rtcweb-jsep] specifies a generic protocol needed to generate [RFC3264] Offers and Answers negotiated between the [WebRTC] peers for setting up, updating and tearing down a WebRTC session. For this purpose, SDP is used to construct [RFC3264] Offers/Answers for describing (media and non-media) streams as appropriate for the recipients of the session description to participate in the session. There's some weird redundancy or missing information in the first sentence here that makes it come off funny, perhaps because the first 3264 reference ignores the "SDP" bit of it and the second sentence tries to add it back on. Section 4 This section introduces SDP Offer/Answer Exchange mechanism mandated by WebRTC for negotiating session capabilities while setting up, updating and tearing down a WebRTC session. This section is nit: doesn't "SDP Offer/Answer Exchange mechanism" require an article? intentionally brief in nature and interested readers are recommended to refer [RFC3264] for specific details on the protocol operation. nit: "refer to", I think. of multimedia streams. It defines protocol with involved participants exchanging desired session characteristics from each nit: "protocol" gest an article, too. reject the offer. If the session is accepted the Offer/Answer model guarantees a common view of the multimedia session between the participants. nit: I suggest s/guarantees/provides/; I can think of at least one way in which the common view would fail and "guarantees" is a rather strong statement. session updates. JSEP specification [I-D.ietf-rtcweb-jsep] for WebRTC provides the mechanism for generating [RFC3264] SDP Offers and Answers in order for both sides of the session to agree upon the details such as the list of media formats to be sent/received, nit: the reference seems misplaced, here (maybe a few words later). Section 5 Overall, I only really spot-checked the examples and corresponding references. A typical web based real-time multimedia communication session can be characterized as below: o It has zero or more Audio only, Video only or Audio/Video RTP Sessions, Is *zero* specifically "typical" (vs. "one or more")? o Sessions can be over IPv4-only, IPv6-only, dual-stack based clients, nit: conjunction for the list, please! Section 5.2.1 This example also shows the endpoints being [RFC8445] compliant by including "ice2" ice-options attribute. Omitting ice2 from all the other examples perhaps implies that it is not terribly important to use. Is it worth an explanatory note? | a=identity:eyJpZHAiOnsiZG9tYWluIjoibmlpZi5o | Section 5.6 of [I-D | | dSIsInByb3RvY29sIjoiaWRwLmh0bWwifSwiYXNzZXJ | .ietf-rtcweb-securi | | 0a W9uIjoiZXlKaGJHY2lPaUpTVXpJMU5pSXNJblI1Y | ty-arch] | I don't think this is the right reference (for a=identity?), since there is no Section 5.6 in https://tools.ietf.org/html/draft-ietf-rtcweb-security-arch-20 (Also for the corresponding bit in the Answer.) Section 5.2.7 | m=video 0 UDP/TLS/RTP/SAVPF 120 | [RFC4566] | | c=IN IP4 203.0.113.77 | [RFC4566] | | a=bundle-only | [I-D.ietf-mmusic-sd | | | p-bundle-negotiatio | | | n] | | a=mid:video | [RFC5888] Video | | | m=line part of the | | | BUNDLE group with | | | the port from audio | | | line repeated | Is it the port from the audio line *repeated*, or the value 0 used to indicate bundling on the same port? Section 5.2.11 (Table 25) | v=0 | Version number | | | incremented | | | [RFC4566] | It's the session version (o=) that's incremented, but the formatting implies that the v= value is what's being described. (Similarly for the answer.) | a=tls-id:89J2LRATQ3ULA24G9AHWVR31VJWSLB68 | [I-D.ietf-mmusic-dt | | | ls-sdp]Alice want's | | | to use the same | | | DTLS association | nit: no apostrophe in "wants" Section 5.3.2 | a=msid:ma tb | Identifies | | | RTCMediaStream ID | | | (ma) and | | | RTCMediaStreamTrack | | | ID (tc) | Note that tb != tc Section 5.3.3 |Alice offers single audio and simulcasted video streams | | | | | | Offer(Audio:Opus Video:VP8 with 3 resolutions) | | & RTX stream | Given that we're already on a second line, we can probably afford to write out "and". Section 5.3.5 On completion of the Offer/Answer exchange mechanism we end up one audio stream, 2 simulcast video streams and 2 associated FEC streams are sent over a single 5-tuple. [...] |One-Way Audio,Video session with 4 video streams(Simulcast | | and FEC) all multiplexed | I think I'm failing to find the fourth video stream: I see PTs 98 and 100 (simulcast) and 101 (FEC) but don't see indication of a second FEC stream. | a=fmtp:101 L=5; D=10; ToP=2; repair- | [I-D.ietf-payload-f | | window=200000 | lexible-fec-scheme] | Neither the listed I-D reference nor RFC 8627 which it became seem to describe the "ToP" parameter. In fact, it seems to have been removed in the -19 of that I-D. (Affects both Offer and Answer.) Section 5.4.1 This example shows Alice indicating the support of the RTP header extension to include the audio-level of the audio sample carried in the RTP packet. I'm a bit confused why a dedicated section is needed -- isn't this talking about the urn:ietf:params:rtp-hdrext:ssrc-audio-level extension, which has been used in quite a few of the previous examples already? Section 5.4.3 NOTE: Since Alice is unaware of Bob's support for BUNDLE framework, Alice includes separate RTP/RTCP ports and candidate information. nit: this wording implies that Bob does support BUNDLE and it's merely that Alice is unaware of the fact; my understanding is that the intent is only to say that Alice is unaware of whether or not Bob supports BUNDLE, e.g., "Alice is unaware of Bob's support status for the BUNDLE framework" or "Alice is uaware of whether Bob supports the BUNDLE framework". | a=extmap:2 urn:ietf:params:rtp- | [I-D.ietf-mmusic-sd | | hdrext:sdes:mid | p-bundle-negotiatio | Huh, we have an extmap:2 without a previous extmap:1, interesting. | ****** Video m=line ********* | *************** | | | ************** | | m=video 0 UDP/TLS/RTP/SAVPF 98 100 | Bob doesn't | | | recognize | | | bundle-only and | | | hence the | | | m=line is | | | rejected | | | implicitly due | | | to port 0 | | ****** Video m=line ********* | *************** | | | ************** | | m=video 0 UDP/TLS/RTP/SAVPF 98 100 | Bob doesn't | Why are both m=video rejects identical? In the Offer the two video stanzas used PT 98 and PTs 101 and 103, respectively. Section 7 We could reiterate the note from Section 5.1 that SSRC/foundation/etc. should be larger/more-random than what is shown, for secure operation (and what would go wrong if the short values were used). Appendix A.1.1 o o= line MUST follow with values '-' for username, 64 bit value for session id and dummy values for 'nettype', 'addrtype' and 'unicast-address' (for example: IN IP4 0.0.0.0). Our examples do not seem to be using 64-bit session IDs, and this disparity does not seem to be included in Section 5.1's list of values that need more entropy than shown in the examples. Appendix A.1.2 o a=extmap line identifying the BUNDLE header extension MUST be present. draft-ietf-mmusic-sdp-bundle-negotiation seems to refer to this as the "RTP MID header extension", not the "BUNDLE header extension".
Please respond to the GenART review. Although it raised no major or minor issues, the list of nits was extensive.
Please respond to the Gen-ART review. I agree with Roman that the use of normative language seems inappropriate in this doc.
Thanks for writing this document. It is always helpful to have examples that tie together a number of specifications. ** Section 4 and 5. I was surprised to see three place where RFC2119 language was used in the core text (i.e., not in the Appendix). Is there a reason this particular behavior was called out here? Is it not covered in other specifications? -- Section 4. The participant receiving the offer MAY generate an SDP Answer accepting the offer or it MAY reject the offer. -- Section 5. MAY contain zero or more non-media data sessions, ** Editorial Feedback -- Section 1. Recommend repeating the following text in the abstract to make it clear that this document is informative in nature: “This document provides an informational reference in describing the role of SDP and the Offer/Answer exchange mechanism for the most common WebRTC use-cases.”. Additionally, consider adding that “This document makes no changes to the Offer/Answer exchange mechanism”. -- Section 3. Editorial. s/Below figure introduces/Figure 1 introduces the/ -- Section 3. Editorial. Sentence uses “design” twice. s/[WebRTC] is designed so that the design of the control plane/[WebRTC] is architected in such a way that the design of the control plane/ -- Section 5.1. Typo. s/Eventhough/Even though/ -- Section 5.1. Editorial. s/Following SDP details/The following SDP details/
I am not even remotely qualified to evaluate the examples. Here are a bunch of nits instead: Abstract: s/mechanisms/mechanisms. Section 3: s/Below figure/The figure below s/convey participant’s/convey the participant’s Section 4. s/introduces SDP/introduces the SDP s/in nature/in nature, s/refer [RFC3264]/refer to [RFC3264] s/It defines protocol/it defines a protocol s/each others/each other’s s/JSEP specification/The JSEP specification Section 5.1: s/apriori/a priori s/intentionally is not/intentionally are not s/In the actual use/In actual use table 3: s/sreams/streams Sec 5.3.4: s/2 two/two Table 33. I believe the offer should reference RTX streams (plural?) Sec 5.3.5: s/we end up/, we end up with Sec 5.4.4: s/Bob being a WebRTC endpoint/Bob, being a WebRTC endpoint, Sec 7: s/using TLS/using the TLS
[[ nits ]] [ abstract ] * "mechanism" --> missing a full stop [ section ] * "Below figure" --> "The below figure" [ section 4 ] * "introduces SDP" --> "introduces the SDP"? * "to refer RFC3264" --> "to refer to RFC3264" * "defines protocol" --> "defines a protocol"? * "each others" --> "each other's" [ section 5.1 ] * "Eventhough" --> "Even though" * "diagrams shows" --> "diagrams show" * "confirm to" --> "conform to" * "Following SDP" --> "The following SDP" * "SSRCs" --> expand SSRC on first use? [ section 5.2.7 ] * "the Alice" --> "Alice" * "the Bob indicates its" --> "Bob indicate their" [ section 5.2.9 ] * "The same is indicated" --> "This is indicated"? [ section 5.2.10 ] * "show-cases" --> "showcases" [ section 5.3.4 ] * "2 two" --> "two" [ section 5.3.5 ] * "and and" --> "and" [ Appendix A.1.2 ] * "lip same sync" --> "same lip sync" [ Appendix A.1.3 ] * "An JSEP" --> "A JSEP"
All the references are marked as Informative; I am surprised that none of them are considered ones "that must be read to understand...the technology in the new RFC" [1]. It seems to me that some (maybe all) of the following should be Normative references: I-D.ietf-rtcweb-jsep, WebRTC, rfc3264, rfc7656, rfc4566. I am not balloting DISCUSS because I am definitely not an expert in the topic, so I trust the Responsible AD to make the right call. [1] https://www.ietf.org/about/groups/iesg/statements/normative-informative-references/
Thanks for addressing my issues. I did notice that the current text version is not keeping within the text formats limitation on lines. However, it might be that the RFC-editor is better at getting these tables to stay within limitations. I think this is one document that would benefit from a proper v3 format conversion so that we get reasonable HTML table renderings of the examples.
Hi, This document is well outside my domain of expertise, and I see no management related issues or concerns. I have mostly only skimmed this document. I hope that either the examples have been generated by real code, or otherwise programmatically validated in some way to ensure that they are correct. Regards, Rob