Ballot for draft-ietf-rtcweb-sdp

Discuss

Benjamin Kaduk

Yes

Murray Kucherawy

No Objection

Deborah Brungard
Alissa Cooper
Roman Danyliw
Martin Duke
Erik Kline
Alvaro Retana
Magnus Westerlund
Robert Wilton

No Record

Warren Kumari
Barry Leiba
Martin Vigoureux
Éric Vyncke

Summary: Has a DISCUSS. Has enough positions to pass once DISCUSS positions are resolved.

Benjamin Kaduk Discuss

Discuss (2020-05-20 for -12)
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
Comment (2020-05-20 for -12)
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".

Murray Kucherawy Yes

Comment (2020-05-10 for -12)
Please respond to the GenART review.  Although it raised no major or minor issues, the list of nits was extensive.

Deborah Brungard No Objection

Alissa Cooper No Objection

Comment (2020-05-20 for -12)
Please respond to the Gen-ART review.

I agree with Roman that the use of normative language seems inappropriate in this doc.

Roman Danyliw No Objection

Comment (2020-05-19 for -12)
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/

Martin Duke No Objection

Comment (2020-05-20 for -12)
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

Erik Kline No Objection

Comment (2020-05-19 for -12)
[[ 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"

Alvaro Retana No Objection

Comment (2020-05-19 for -12)
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/

Magnus Westerlund (was Discuss) No Objection

Comment (2020-12-17 for -13)
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.

Robert Wilton No Objection

Comment (2020-05-21 for -12)
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

Warren Kumari No Record

Barry Leiba No Record

Martin Vigoureux No Record

Éric Vyncke No Record