Skip to main content

Negotiating Media Multiplexing Using the Session Description Protocol (SDP)
RFC 8843

Revision differences

Document history

Date Rev. By Action
2021-02-18
54 (System) Received changes through RFC Editor sync (added Verified Errata tag)
2021-02-17
54 (System) Received changes through RFC Editor sync (added Errata tag)
2021-01-20
54 (System)
Received changes through RFC Editor sync (created alias RFC 8843, changed abstract to 'This specification defines a new Session Description Protocol (SDP) Grouping Framework …
Received changes through RFC Editor sync (created alias RFC 8843, changed abstract to 'This specification defines a new Session Description Protocol (SDP) Grouping Framework extension called 'BUNDLE'. The extension can be used with the SDP offer/answer mechanism to negotiate the usage of a single transport (5-tuple) for sending and receiving media described by multiple SDP media descriptions ("m=" sections). Such transport is referred to as a BUNDLE transport, and the media is referred to as bundled media. The "m=" sections that use the BUNDLE transport form a BUNDLE group.

This specification defines a new RTP Control Protocol (RTCP) Source Description (SDES) item and a new RTP header extension.

This specification updates RFCs 3264, 5888, and 7941.', changed pages to 50, changed standardization level to Proposed Standard, changed state to RFC, added RFC published event at 2021-01-20, changed IESG state to RFC Published, created updates relation between draft-ietf-mmusic-sdp-bundle-negotiation and RFC 3264, created updates relation between draft-ietf-mmusic-sdp-bundle-negotiation and RFC 5888, created updates relation between draft-ietf-mmusic-sdp-bundle-negotiation and RFC 7941)
2021-01-20
54 (System) RFC published
2020-05-18
54 (System) RFC Editor state changed to AUTH48-DONE from AUTH48
2020-05-04
54 (System) RFC Editor state changed to AUTH48 from RFC-EDITOR
2020-03-16
54 (System) RFC Editor state changed to RFC-EDITOR from REF
2019-12-23
54 (System) RFC Editor state changed to REF from EDIT
2019-08-16
54 (System) RFC Editor state changed to EDIT from MISSREF
2019-08-15
54 (System) RFC Editor state changed to MISSREF from EDIT
2019-08-15
54 (System) RFC Editor state changed to EDIT from MISSREF
2018-12-14
54 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-54.txt
2018-12-14
54 (System) New version approved
2018-12-14
54 (System) Request for posting confirmation emailed to previous authors: Christer Holmberg , Cullen Jennings , Harald Alvestrand
2018-12-14
54 Christer Holmberg Uploaded new revision
2018-09-20
53 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-53.txt
2018-09-20
53 (System) New version approved
2018-09-20
53 (System) Request for posting confirmation emailed to previous authors: Christer Holmberg , Cullen Jennings , Harald Alvestrand
2018-09-20
53 Christer Holmberg Uploaded new revision
2018-06-19
52 (System) IANA Action state changed to RFC-Ed-Ack from Waiting on RFC Editor
2018-06-19
52 (System) IANA Action state changed to Waiting on RFC Editor from Waiting on Authors
2018-06-18
52 (System) IANA Action state changed to Waiting on Authors from In Progress
2018-06-18
52 (System) RFC Editor state changed to MISSREF
2018-06-18
52 (System) IESG state changed to RFC Ed Queue from Approved-announcement sent
2018-06-18
52 (System) Announcement was received by RFC Editor
2018-06-18
52 (System) IANA Action state changed to In Progress
2018-06-18
52 Cindy Morgan IESG state changed to Approved-announcement sent from Approved-announcement to be sent
2018-06-18
52 Cindy Morgan IESG has approved the document
2018-06-18
52 Cindy Morgan Closed "Approve" ballot
2018-06-18
52 Cindy Morgan Ballot approval text was generated
2018-06-18
52 Ben Campbell RFC Editor Note was changed
2018-06-18
52 Ben Campbell There is a new RFC Editor note.
2018-06-18
52 Ben Campbell IESG state changed to Approved-announcement to be sent from IESG Evaluation::AD Followup
2018-06-18
52 Ben Campbell Ballot approval text was generated
2018-06-18
52 Ben Campbell RFC Editor Note was changed
2018-06-18
52 Ben Campbell RFC Editor Note for ballot was generated
2018-06-18
52 Ben Campbell RFC Editor Note for ballot was generated
2018-05-24
52 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-52.txt
2018-05-24
52 (System) New version approved
2018-05-24
52 (System) Request for posting confirmation emailed to previous authors: Christer Holmberg , Cullen Jennings , Harald Alvestrand
2018-05-24
52 Christer Holmberg Uploaded new revision
2018-05-19
51 Eric Rescorla
[Ballot comment]
Rich version of this review at:
https://mozphab-ietf.devsvcdev.mozaws.net/D3382

This is really vastly better. Thanks for making the changes. I have
made a few notes …
[Ballot comment]
Rich version of this review at:
https://mozphab-ietf.devsvcdev.mozaws.net/D3382

This is really vastly better. Thanks for making the changes. I have
made a few notes of things that I still think are problematic, but I
am clearing my DISCUSS.


IMPORTANT
S 7.3.5.
>      a zero port value to, the video "m=" section.

>      SDP Answer

>        v=0
>        o=bob 2808844564 2808844564 IN IP6 2001:db8::1

This doesn't sound right. You can't use the existing address:port,
because if the peer rejects BUNDLE but accepts the m= section then
it's broken.


S 9.3.1.2.

>  9.3.1.2.  Generating the SDP Answer

>      When an answerer generates an answer, if the answerer supports RTP-
>      based media, and if a bundled "m=" section in the corresponding offer
>      contained an SDP 'rtcp-mux' attribute, the answerer MUST enable usage

This does not define how to interact with trickle ICE.

COMMENTS


>    Negotiating Media Multiplexing Using the Session Description Protocol
>                                    (SDP)
>              draft-ietf-mmusic-sdp-bundle-negotiation-51.txt

>  Abstract

This document is quite a bit improved from when I read it before, but
it's still very confusing. The primary problem here is the repeated
use of "address;port" as synechdoche for the m= section which is the
"head" of the BUNDLE group (i.e., that which is indicated by the
BUNDLE-tag). That's not what's going on and it's misplaced
concreteness. I would invent some new term ("head" is actually not
bad) and then use it throughout for this concept.


S 1.2.
>      transport) for sending and receiving media (bundled media) described
>      by multiple SDP media descriptions ("m=" sections).  The address:port
>      combination used by an endpoint for sending and receiving bundled
>      media is referred to as the BUNDLE address:port.  The set of SDP
>      attributes that are applied to each "m=" section within a BUNDLE
>      group is referred to as BUNDLE attributes.  The same BUNDLE transport

Nit: "pair"?


S 1.2.
>      group is referred to as BUNDLE attributes.  The same BUNDLE transport
>      is used for sending and receiving bundled media, which means that the
>      symmetric Real-time Transport Protocol (RTP) mechanism [RFC4961] is
>      always used for RTP-based bundled media.

>      This specification defines a new SDP Grouping Framework [RFC5888]

Why is one of these called "address" and the other "address:port"?


S 1.2.
>      Interactive Connectivity Establishment (ICE)
>      [I-D.ietf-ice-rfc5245bis] candidates for the whole BUNDLE group.

>      A given BUNDLE address:port MUST only be associated with a single
>      BUNDLE group.  If an SDP offer or answer contains multiple BUNDLE
>      groups, the procedures in this specification apply to each group

1. Bundle lets you have multiple SDP m= sections on a single 5-tuple
2. The underling mechanism here is that you put those m= sections in
the same BUNDLE group
3. In order to facilitate demuxing, we define a new RTP extension for
MID.
4. It is sometimes desirable to say that an m= section should only be
negotiated if it can be bundled. This is done with port=0 and a
=bundle-only.



S 1.2.
>      Interactive Connectivity Establishment (ICE)
>      [I-D.ietf-ice-rfc5245bis] candidates for the whole BUNDLE group.

>      A given BUNDLE address:port MUST only be associated with a single
>      BUNDLE group.  If an SDP offer or answer contains multiple BUNDLE
>      groups, the procedures in this specification apply to each group

This section is kind of a laundry list. I think it would be helpful to
break it out conceptually. Specifically.

1.
2.
3.



S 1.3.
>        SDES header extension that can be used to associate RTP streams
>        with "m=" sections.

>      o  The specification updates [RFC7941], by adding an exception, for
>        the MID RTP header extension, to the requirement regarding
>        protection of an SDES RTP header extension carrying an SDES item

Was this intended to be a bullet?


S 2.

>      o  BUNDLE attributes: IDENTICAL and TRANSPORT multiplexing category
>        SDP attributes.  Once a BUNDLE group has been created, the
>        attribute values apply to each bundled "m=" section within the
>        BUNDLE group.


This is a very idiosyncratic definition, because it's *not* the first
offer in the session, but the one where the BUNDLE group is
introduced. Given that 3264 has a different meaning for this same
term, and the difference is critical, I would strongly urge you to
pick a different term.


S 2.
>      o  Bundle-only "m=" section: A bundled "m=" section that contains an
>        SDP 'bundle-only' attribute.

>      o  Bundled media: All media associated with a given BUNDLE group.

>      o  Initial offer: The first offer, within an SDP session (e.g. a SIP

This appears still not to be resolved. Here is the 3264 definition "
Protocol operation begins when one agent sends an initial offer to
another agent.  An offer is initial if it is outside of any context
that may have already been established through the higher layer
protocol." I'm not making this part of my DISCUSS, but I think it's
very confusing and I would strongly urge the AD to address it.




S 2.
>        BUNDLE group is created once the answerer sends the initial
>        answer.

>      o  Subsequent offer: An offer which contains a BUNDLE group that has
>        been created as part of a previous offer/answer exchange.


How about "is part of" instead of "associated with"


S 2.
>        been created as part of a previous offer/answer exchange.

>      o  Subsequent answer: An answer to a subsequent offer.

>      o  Identification-tag: A unique token value that is used to identify
>        an "m=" section.  The SDP 'mid' attribute [RFC5888] in an "m="

Again "part of"


S 5.
>      a semantics value [RFC5888] of "BUNDLE".  An identification-tag is
>      assigned to each bundled "m=" section, and each identification-tag is
>      listed in the SDP 'group:BUNDLE' attribute identification-tag list.
>      Each "m=" section whose identification-tag is listed in the
>      identification-tag list is associated with a given BUNDLE group.


I would put some of this text up before the attribute definition to
explain why the attribute exists.


S 7.
>      rejected by the answerer, the previously negotiated addresses:ports,
>      SDP parameters and characteristics (including those associated with a
>      BUNDLE group) apply.  Hence, if an offerer generates an offer in
>      order to negotiate a BUNDLE group, and the answerer rejects the
>      offer, the BUNDLE group is not created.


Multiplexing?


S 7.
>      "m=" line proto value assigned to a bundled "m=" section.  Section 9
>      defines additional considerations for RTP based media.  Section 6
>      defines additional considerations for the usage of the SDP 'bundle-
>      only' attribute.  Section 10 defines additional considerations for
>      the usage of Interactive Connectivity Establishment (ICE)
>      [I-D.ietf-ice-rfc5245bis] mechanism.

Something bad happened here with your editor.


S 7.
>      the usage of Interactive Connectivity Establishment (ICE)
>      [I-D.ietf-ice-rfc5245bis] mechanism.

>      Offers and answers can contain multiple BUNDLE groups.  The
>      procedures in this section apply independently to a given BUNDLE
>      group.

This is pretty opaque. It's not that the address:port pair have been
selected but rather that BUNDLE has been negotiated for that m=
section (though of course the address:port being selected is a side
effect of this).




S 7.1.1.
>      attribute values have been assigned to each bundled "m=" section.

>  7.1.1.  Connection Data (c=)

>      The "c=" line nettype value [RFC4566] associated with a bundled "m="
>      section MUST be 'IN'.

It seems like you should define bundled "m=" section. I believe it's
one that appears in a bundle tag?


S 7.1.1.

>  7.1.1.  Connection Data (c=)

>      The "c=" line nettype value [RFC4566] associated with a bundled "m="
>      section MUST be 'IN'.


Huh? This is section 8.1.

This whole paragraph is a mess. I would say

"One consequence of these rules is that because SDP attributes which
are appropriate only to some other m= section may appear in the m=
section indicated by the BUNDLE-tag. For instance, the BUNDLE-tag may
indicate a data channel but contain the 'rtcp-mux' attribute because
that applies to an RTP m= section that is part of the BUNDLE group"




S 7.1.2.
>      with each "m=" section.

>      NOTE: Extensions to this specification can specify usage of the
>      BUNDLE mechanism for other nettype and addrtype values than the ones
>      listed above.


This sentence is ungrammatical. "In order to negotiate a BUNDLE group
in an initial offer, the offerer MUST"


S 7.1.3.

>      An offerer and answerer MUST include SDP attributes in every bundled
>      "m=" section where applicable, following the normal offer/answer
>      procedures for each attribute, with the following exceptions:

>      o  In the initial offerer, the offerer MUST NOT include IDENTICAL and

initial offer


S 7.1.3.
>      "m=" section where applicable, following the normal offer/answer
>      procedures for each attribute, with the following exceptions:

>      o  In the initial offerer, the offerer MUST NOT include IDENTICAL and
>        TRANSPORT multiplexing category SDP attributes (BUNDLE attributes)
>        in bundle-only "m=" sections.  The offerer MUST included such

MUST include


S 7.1.3.
>        attributes in all other bundled "m=" sections.  In the initial
>        offer each bundled "m=" line can contain a different set of BUNDLE
>        attributes, and attribute values.  Once the offerer tagged "m="
>        section has been selected, the BUNDLE attributes contained in the
>        offerer tagged "m=" section will apply to each bundled "m="
>        section within the BUNDLE group.

I would reorder these, because the zero port is the main semantic.


S 7.1.3.
>        tagged "m=" section).  The offerer and answerer MUST NOT include
>        such attributes in any other bundled "m=" section.  The BUNDLE
>        attributes contained in the tagged "m=" section will apply to each
>        bundled "m=" section within the BUNDLE group.

>      o  In an offer (initial or subsequent), or in an answer (initial or

Why is this an "If"? There are only two choices: "unique" and "zero".
Just put this graf up before the discussion of bundle-only and you can
remove the conditional


S 7.2.
>      within the BUNDLE group does describe RTP-based media).

>  7.2.  Generating the Initial SDP Offer

>      When an offerer generates an initial offer, in order to negotiate a
>      BUNDLE group, it MUST:

I would say "believes" rather than "assumes"


S 7.2.
>      within the negotiated BUNDLE group, the offerer MUST:

>      o  Include an SDP 'bundle-only' attribute [Section 7.2.1] in the "m="
>        section; and

>      o  Assign a zero port value to the "m=" section.

Line breaks between the m= sections would help here.


S 7.2.
>      section, but does not include an SDP 'bundle-only' attribute in the
>      "m=" section, it is an indication that the offerer wants to disable
>      the "m=" section [Section 7.5.3].

>      [Section 7.2.2] and [Section 17.1] show an example of an initial
>      offer.

Comma not needed here. Also, this negative phrasing is hard to follow.
I would say "MUST only ... if" here and below


S 7.2.1.
>      In the initial offer, the bundled "m=" section indicated by the
>      offerer BUNDLE-tag is the suggested offerer tagged "m=" section.  The
>      address:port combination associated with the "m=" section will be
>      used by the offerer for sending and receiving bundled media if the
>      answerer selects the "m=" section as the offerer tagged "m=" section
>      [Section 7.3.1].  In addition, if the answerer selects the "m="

This bullet is unnecessary as it immediately follows from the
preoceeding bukllet.


S 7.2.1.
>      section as the offerer tagged "m=" section, the BUNDLE attributes
>      included in the "m=" section will be applied to each "m=" section
>      within the negotiated BUNDLE group.

>      The offerer MUST NOT suggest a bundle-only "m=" section as the
>      offerer tagged "m=" section.

This isn't right, because each BUNDLE group has its own address:port,
so instead "For each BUNDLE group" contained in the offer.

More importantly, it's not the address:port that the answerer chooses,
but rather the m= section. I.e.,

o Determine the first m= section in the BUNDLE group which will be
BUNDLEd in the answer
o Select an answerer BUNDLE address:port


S 7.3.
>        a=extmap 1 urn:ietf:params:rtp-hdrext:sdes:mid

>  7.3.  Generating the SDP Answer

>      When an answerer generates an answer (initial or subsequent) that
>      contains a BUNDLE group the following general SDP grouping framework

Again, this isn't selecting the address:port but rather the m=section


S 7.3.
>        section using the procedures in Section 7.3.1.  In case of a
>        subsequent answer, the offerer tagged "m=" section is indicated in
>        the corresponding subsequent offer, and MUST NOT be changed by the
>        answerer; and

>      o  Select the answerer tagged "m=" section [Section 7.3.2]; and

This repeats text in S 8.3.


S 7.3.

>      o  Include SDP attributes in the bundled "m=" sections following the
>        rules in [Section 7.1.3]; and

>      o  Include an SDP 'group:BUNDLE' attribute in the answer; and


This text is baffling. As far as I can see, the first condition is
"don't pick it as the head m= section if you intend to move it out".
The second is some entirely different case. Can you rewrite it so it
makes sense.


S 7.3.
>      group, it MUST:

>      o  Move the "m=" section out of the BUNDLE group [Section 7.3.3]; or

>      o  Reject the "m=" section [Section 7.3.4].


No comma


S 7.3.1.
>      value, but the "m=" section does not contain an SDP 'bundle-only'
>      attribute, it is an indication that the offerer wants to disable the
>      "m=" section [Section 7.5.3].

>  7.3.1.  Answerer Selection of Offerer tagged 'm=' section


This is the third time you have said this. If you want to say it here,
say "Because ..., if"


S 7.3.1.
>      o  The answerer will not reject the "m=" section [Section 7.3.4]; and

>      o  The "m=" section does not contain a zero port value.

>      If all of the criteria above are fulfilled, the answerer MUST select
>      the "m=" section as the offerer tagged "m=" section.

Same comment here as above. These are entirely different conditions.


S 7.3.1.
>      o  The "m=" section does not contain a zero port value.

>      If all of the criteria above are fulfilled, the answerer MUST select
>      the "m=" section as the offerer tagged "m=" section.

>      If one or more of the criteria are not fulfilled, the answerer MUST

"criteria... are"


S 7.3.1.
>      indicated by that identification-tag.  If there are no more
>      identification-tags in the identification-tag list, the answerer MUST
>      NOT create the BUNDLE group.  Unless the answerer rejects the whole
>      offer, the answerer MUST apply the answerer procedures for moving an
>      "m=" section out of a BUNDLE group [Section 7.3.3] or rejecting an
>      "m=" section within a BUNDLE group [Section 7.3.4] to every bundled

No comma


S 7.3.2.
>  7.3.2.  Answerer Selection of Answerer tagged 'm=' section

>      The answerer MUST select the "m=" section in that corresponds to the
>      selected offerer tagged "m=" section in the corresponding offer
>      [Section 7.3.1] as the answerer tagged "m=" section.  In the answer
>      the answerer BUNDLE-tag indicates the answerer tagged "m=" section.

I'm having trouble reading this paragraph. How do you select an m=
section that correspond to the selected m= section.


S 7.3.3.
>      has been negotiated, a bundled "m=" section can not be moved out of
>      the BUNDLE group in an answer.  Instead an offer is needed.

>      When the answerer generates an answer, in which it moves a bundled
>      "m=" section out of a BUNDLE group, the answerer:


Please put line breaks in between m= sections here too


S 7.3.3.

>      o  MUST include any applicable SDP attribute in the "m=" section,
>        using the normal offer/answer procedures for the each Attributes;
>        and

>      o  MUST NOT place the identification-tag associated with the "m="

address:port, again. It's the m=section that's relevant.


S 7.3.3.
>        list associated with the BUNDLE group.

>      o  MUST NOT include an SDP 'bundle-only' attribute to the "m="
>        section; and

>      Because an answerer is not allowed to move an "m=" section from one

"each" -> "an given"


S 7.3.4.
>      another BUNDLE group [Section 7.5.1].

>  7.3.4.  Rejecting a Media Description in a BUNDLE Group

>      When an answerer wants to reject a bundled "m=" section in an answer,
>      it MUST first check the following criterium:

criterion would be more standard English. criterium generally refers
to a bike race


S 7.3.4.
>        the procedures in [RFC3264]; and

>      o  MUST NOT place the identification-tag associated with the "m="
>        section in the SDP 'group:BUNDLE' attribute identification-tag
>        list associated with the BUNDLE group; and


Again it would make more sense to describe this as suggesting a new m=
section.


S 7.5.

>      o  Pick one bundled "m=" section as the offerer tagged "m=" section.
>        The offerer can either pick the "m=" section that was previously
>        selected by the answerer as the offerer tagged "m=" section, or
>        pick another bundled "m=" section within the BUNDLE group; and


Are you sure disable -> port 0, as opposed to "inactive"


S 7.5.1.

>  7.5.1.  Adding a Media Description to a BUNDLE group

>      When an offerer generates a subsequent offer, in which it wants to
>      add a bundled "m=" section to a previously negotiated BUNDLE group,
>      the offerer follows the procedures in [Section 7.5].  The offerer

You should make clear that it's not possible to have an added m=
section that the peer can take as bundled or not.


S 8.1.
>      correct protocols.

>  8.1.  STUN, DTLS, SRTP

>      Section 5.1.2 of [RFC5764] describes a mechanism to identify the
>      protocol of a received packet among the STUN, DTLS and SRTP protocols

Nit "the correct"


S 9.2.
>        If the RTCP packet is a feedback request that includes target
>        SSRC(s), for each target SSRC that is found in the outgoing SSRC
>        table, deliver a copy of the RTCP packet to the "m=" section
>        associated with that SSRC.  PSFB and RTPFB types that are handled
>        in this way include:


associates -> includes


S 9.3.1.2.
>      section, following the procedures for BUNDLE attributes
>      [Section 7.1.3].  In addition, if the "m=" section that is selected
>      as the offerer tagged "m=" section contained an SDP "rtcp-mux-only"
>      attribute, the answerer MUST include an SDP "rtcp-mux-only" attribute
>      in the answerer tagged "m=" section.


You should rewrite this graf and the one below to be about BUNDLED-
ness not port assignment. I.e., if you are definitely bundled, willing
to bundle, or not bundled.


S 9.3.1.2.

>      If the usage of RTP/RTCP multiplexing within a BUNDLE group has been
>      negotiated in a previous offer/answer exchange, the answerer MUST
>      include an SDP 'rtcp-mux' attribute in the answerer tagged "m="
>      section .  It is not possible to disable RTP/RTCP multiplexing within
>      a BUNDLE group.

Same point here as above. Talking about address:port isn't helpful.
2018-05-19
51 Eric Rescorla [Ballot Position Update] Position for Eric Rescorla has been changed to No Objection from Discuss
2018-05-07
51 Gunter Van de Velde Closed request for Last Call review by OPSDIR with state 'No Response'
2018-05-02
51 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-51.txt
2018-05-02
51 (System) New version approved
2018-05-02
51 (System) Request for posting confirmation emailed to previous authors: Christer Holmberg , Cullen Jennings , Harald Alvestrand
2018-05-02
51 Christer Holmberg Uploaded new revision
2018-04-24
50 (System) Sub state has been changed to AD Followup from Revised ID Needed
2018-04-24
50 (System) IANA Review state changed to Version Changed - Review Needed from IANA OK - Actions Needed
2018-04-24
50 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-50.txt
2018-04-24
50 (System) New version approved
2018-04-24
50 (System) Request for posting confirmation emailed to previous authors: Christer Holmberg , Cullen Jennings , Harald Alvestrand
2018-04-24
50 Christer Holmberg Uploaded new revision
2018-04-23
49 Magnus Westerlund Closed request for Telechat review by TSVART with state 'Overtaken by Events'
2018-04-19
49 Cindy Morgan IESG state changed to IESG Evaluation::Revised I-D Needed from IESG Evaluation
2018-04-19
49 Ignas Bagdonas [Ballot Position Update] New position, No Objection, has been recorded for Ignas Bagdonas
2018-04-19
49 Martin Vigoureux [Ballot Position Update] New position, No Objection, has been recorded for Martin Vigoureux
2018-04-18
49 Alvaro Retana [Ballot Position Update] New position, No Objection, has been recorded for Alvaro Retana
2018-04-18
49 Alissa Cooper [Ballot Position Update] New position, No Objection, has been recorded for Alissa Cooper
2018-04-18
49 Deborah Brungard [Ballot Position Update] New position, No Objection, has been recorded for Deborah Brungard
2018-04-18
49 Warren Kumari
[Ballot comment]
Thank you for writing this.

The Abstract says "This specification updates RFC 3264, ...", but it doesn't say how it updates RFC7941 …
[Ballot comment]
Thank you for writing this.

The Abstract says "This specification updates RFC 3264, ...", but it doesn't say how it updates RFC7941. I think it would be helpful if it did...
2018-04-18
49 Warren Kumari [Ballot Position Update] New position, No Objection, has been recorded for Warren Kumari
2018-04-18
49 Mirja Kühlewind [Ballot comment]
Maybe also briefly say in the abstract how/why RFC7941 is updated.
2018-04-18
49 Mirja Kühlewind [Ballot Position Update] New position, No Objection, has been recorded for Mirja Kühlewind
2018-04-17
49 Suresh Krishnan [Ballot Position Update] New position, No Objection, has been recorded for Suresh Krishnan
2018-04-17
49 Amanda Baber IANA Review state changed to IANA OK - Actions Needed from Version Changed - Review Needed
2018-04-17
49 Adam Roach
[Ballot comment]
Thanks to everyone who spent time over the past seven years getting this
document complete and out the door.

---------------------------------------------------------------------------

Abstract:

Please indicate …
[Ballot comment]
Thanks to everyone who spent time over the past seven years getting this
document complete and out the door.

---------------------------------------------------------------------------

Abstract:

Please indicate that the document updates RFC 7941.

---------------------------------------------------------------------------

§1:

>  This specification updates RFC 3264 [RFC3264], to allow assigning a
>  zero port value to a "m=" section without meaning that the media
>  described by the "m=" section is disabled or rejected.

This needs further qualification: the exception is very narrow, while this
paragraph makes it sound like the meaning of "0" to reject a media section has
been removed altogether.

---------------------------------------------------------------------------

§10.2:

>  Applications can implement RTP stacks in many different ways.  The
>  algorithm below details one way that RTP streams can be associated
>  with "m=" sections, but is not meant to be prescriptive about exactly
>  how an RTP stack needs to be implemented.
...
>  To prepare to associate RTP streams with the correct "m=" section,
>  the following steps MUST be followed for each BUNDLE group:

This "MUST" seems to be at odds with the text about not being prescriptive.
Please clarify whether the steps following this statement are prescriptive
(normative) or not.

---------------------------------------------------------------------------

§10.2:

>    Layer Refresh Request (LRR):  [I-D.ietf-avtext-lrr] (PT=PSFB,
>        FMT=TBD).

Please replace "TBD" with "10" (cf
https://www.iana.org/assignments/rtp-parameters/rtp-parameters.xhtml#rtp-parameters-9)

---------------------------------------------------------------------------

§11.1:

>  NOTE: The following ICE-related media-level SDP attributes are
>  defined in [I-D.ietf-mmusic-ice-sip-sdp]: 'candidate', 'remote-
>  candidates', 'ice-mismatch', 'ice-ufrag', 'ice-pwd', and 'ice-
>  pacing'.

This seems to leave "ice-options" out.

---------------------------------------------------------------------------

§15.2:

>  applications SHALL avoid generating
>  the identification-tag using a pattern that enables user- or
>  application identification.

Without some kind of recommended MID-generation algorithm, application
identification will be nearly a foregone conclusion. RID makes a concrete
suggestion to start with "1" and go up from there. You may want to consider
doing the same thing, or at least something similar.

This has an impact on §17 as well.

===========================================================================
Nits
===========================================================================

General:

I agree with EKR that the use of "address:port" is cumbersome. For the places
where this is not a stand-in for the term "'m=' section", I would suggest that
the well-known term "3-tuple" would serve the purpose in a much more readable
way.

---------------------------------------------------------------------------

§1:

>  As defined in RFC 4566 [RFC4566], the semantics of assigning the same
>  transport address (IP address and port) to multiple "m=" sections are
>  undefined, and there is no grouping defined by such means.  Instead,
>  an explicit grouping mechanism needs to be used to express the
>  intended semantics.  This specification provides such an extension.

This reads as if the present document is going to define semantics associated
with having the same port and address associated with a multiple m-lines. I
think this was true of BUNDLE at some point in its history, but the present
mechanism uses port=0/bundle-only rather than duplicate port numbers. The
preceding paragraph probably needs to be heavily edited or -- more likely --
removed.

---------------------------------------------------------------------------


§3:

Please consider updating to use RFC 8174 boilerplate.

---------------------------------------------------------------------------

§6:

>  The offerer and answerer assign a zero
>  port value and includes an SDP 'bundle-only' attribute to every other
>  bundled "m=" section.

"...and include..."

---------------------------------------------------------------------------

§8.3.4:

>  it MUST first check the following criteria:

"...criterion:"

>  If the criteria above is fulfilled, the answerer can not reject the

"If the criterion..."

---------------------------------------------------------------------------

§8.3.5:

>    o=bob 2808844564 2808844564 IN IP6 2001:db8::3
...
>    c=IN IP6 2001:db8::3

As this is supposed to be an answer to the offer in §8.2.2, please select a
different address for the answerer than the offerer.

---------------------------------------------------------------------------

§11.1:

>  When an answerer assigns a BUNDLE address to an "m=" section within a
>  BUNDLE group (the "m=" section represented by the answerer BUNDLE-
>  tag), the answerer onlys include SDP 'candidate' attributes (and

Nit: "...only includes..."

---------------------------------------------------------------------------

§12:

>  o  If the DTLS client supports DTLS-SRTP [RFC5764] it MUST include
>    the 'use_srtp' extension [RFC5764] in the DTLS ClientHello message
>    [RFC5764].  The client MUST include the extension even if the
>    usage of DTLS-SRTP is not negotiated as part of the multimedia
>    session (e.g., SIP session [RFC3261].

Fix missing closing paren.

---------------------------------------------------------------------------

§14.3 & §14.4:

The update described by these sections appears unnecessary, as the original text
does not preclude the additional meaning assigned to port=0 by this document. If
this has already been discussed, I don't want to revisit WG consensus; but, if
not, I would recommend removing these sections as superfluous.

---------------------------------------------------------------------------
2018-04-17
49 Adam Roach [Ballot Position Update] New position, Yes, has been recorded for Adam Roach
2018-04-16
49 Eric Rescorla
[Ballot discuss]
Rich version of this review at:
https://mozphab-ietf.devsvcdev.mozaws.net/D3382









DETAIL
>      When an offerer generates an offer, in which it wants to add …
[Ballot discuss]
Rich version of this review at:
https://mozphab-ietf.devsvcdev.mozaws.net/D3382









DETAIL
>      When an offerer generates an offer, in which it wants to add a new
>      bundled "m=" section, the offerer MUST:

>      o  Assign the offerer BUNDLE address:port (previously selected
>        [Section 8.3.1] or newly suggested [Section 8.5.1]) to the added
>        "m=" section; or

IMPORTANT: This doesn't sound right. You can't use the existing
address:port, because if the peer rejects BUNDLE but accepts the m=
section then it's broken.


>      o  When the BUNDLE transport has been established, ICE connectivity
>        checks and keep-alives only need to be performed for the BUNDLE
>        transport, instead of per individual "m=" section within the
>        BUNDLE group.

>      o  In an offer, if the offer assigns a unique address:port to one or

IMPORTANT: This does not define how to interact with trickle ICE.
2018-04-16
49 Eric Rescorla
[Ballot comment]

>    Negotiating Media Multiplexing Using the Session Description Protocol
>                        …
[Ballot comment]

>    Negotiating Media Multiplexing Using the Session Description Protocol
>                                    (SDP)
>              draft-ietf-mmusic-sdp-bundle-negotiation-49.txt

>  Abstract

This document is quite a bit improved from when I read it before, but
it's still very confusing. The primary problem here is the repeated
use of "address;port" as synechdoche for the m= section which is the
"head" of the BUNDLE group (i.e., that which is indicated by the
BUNDLE-tag). That's not what's going on and it's misplaced
concreteness. I would invent some new term ("head" is actually not
bad) and then use it throughout for this concept.


>      to negotiate which "m=" sections will become part of a BUNDLE group.
>      Within a BUNDLE group, each "m=" section will use a BUNDLE transport
>      for sending and receiving bundled media.

>      Within a BUNDLE group, each endpoint uses a single address:port
>      combination for sending and receiving bundled media.  The

Nit: "pair"?


>      combination for sending and receiving bundled media.  The
>      address:port combination is referred to as the BUNDLE address:port.
>      In addition to negotiating the BUNDLE group, the offerer and answerer
>      [RFC3264] use the BUNDLE extension to negotiate the BUNDLE
>      addresses:ports, one for the offerer (offerer BUNDLE address) and one
>      for the answerer (answerer BUNDLE address:port).  Once the offerer

Why is one of these called "address" and the other "address:port"?


>      can be used to request that specific media is only used if the "m="
>      section describing the media is kept within a BUNDLE group.

>      This specification updates RFC 3264 [RFC3264], to allow assigning a
>      zero port value to a "m=" section without meaning that the media
>      described by the "m=" section is disabled or rejected.

1. Bundle lets you have multiple SDP m= sections on a single 5-tuple
2. The underling mechanism here is that you put those m= sections in
the same BUNDLE group
3. In order to facilitate demuxing, we define a new RTP extension for
MID.
4. It is sometimes desirable to say that an m= section should only be
negotiated if it can be bundled. This is done with port=0 and a
=bundle-only.



>      can be used to request that specific media is only used if the "m="
>      section describing the media is kept within a BUNDLE group.

>      This specification updates RFC 3264 [RFC3264], to allow assigning a
>      zero port value to a "m=" section without meaning that the media
>      described by the "m=" section is disabled or rejected.

This section is kind of a laundry list. I think it would be helpful to
break it out conceptually. Specifically.

1.
2.
3.




>      "m=" section: SDP bodies contain one or more media descriptions,
>      referred to as "m=" sections.  Each "m=" section is represented by an
>      SDP "m=" line, and zero or more SDP attributes associated with the
>      "m=" line.  A local address:port combination is assigned to each "m="
>      section.

Was this intended to be a bullet?


>      o  Bundled media: All media associated with a given BUNDLE group.

>      o  Initial offer: The first offer, within an SDP session (e.g. a SIP
>        dialog when the Session Initiation Protocol (SIP) [RFC3261] is
>        used to carry SDP), in which the offerer indicates that it wants
>        to create a given BUNDLE group.

This is a very idiosyncratic definition, because it's *not* the first
offer in the session, but the one where the BUNDLE group is
introduced. Given that 3264 has a different meaning for this same
term, and the difference is critical, I would strongly urge you to
pick a different term.


>      The BUNDLE extension is indicated using an SDP 'group' attribute with
>      a semantics value [RFC5888] of "BUNDLE".  An identification-tag is
>      assigned to each bundled "m=" section, and each identification-tag is
>      listed in the SDP 'group:BUNDLE' attribute identification-tag list.
>      Each "m=" section whose identification-tag is listed in the
>      identification-tag list is associated with a given BUNDLE group.

How about "is part of" instead of "associated with"


>      Each "m=" section whose identification-tag is listed in the
>      identification-tag list is associated with a given BUNDLE group.

>      SDP bodies can contain multiple BUNDLE groups.  Any given bundled
>      "m=" section MUST NOT be associated with more than one BUNDLE group
>      at any given time.

Again "part of"


>      assign a zero port value to the "m=" section.  According to [RFC3264]
>      an answerer will reject such an "m=" section.  By including an SDP
>      'bundle-only' attribute in such an "m=" section, the offerer can
>      request that the answerer accepts the "m=" section if the answerer
>      supports the BUNDLE extension, and if the answerer keeps the "m="
>      section within the associated BUNDLE group.

I would put some of this text up before the attribute definition to
explain why the attribute exists.



>      SDP offers and answers can contain multiple BUNDLE groups.  The
>      procedures in this section apply independently to a given BUNDLE
>      group.

>  8.1.  Multiplex Category Considerations

Multiplexing?


>      When a BUNDLE group is initially negotiated, and a unique
>      address:port is assigned to each bundled "m=" section (excluding any
>      bundle-only "m=" section) in the initial offer [Section 8.2], any
>      IDENTICAL and TRANSPORT mux category SDP attributes included in the
>      BUNDLE group MUST explicitly be included in each bundled
>      "m=a€œ section (excluding any bundle-only "m=" sections).

Something bad happened here with your editor.


>      BUNDLE group MUST explicitly be included in each bundled
>      "m=a€œ section (excluding any bundle-only "m=" sections).

>      When an offerer or answerer includes SDP attributes in bundled "m="
>      sections within a BUNDLE group for which the offerer and answerer
>      BUNDLE addresses:ports have been selected, IDENTICAL and TRANSPORT

This is pretty opaque. It's not that the address:port pair have been
selected but rather that BUNDLE has been negotiated for that m=
section (though of course the address:port being selected is a side
effect of this).




>      The semantics of some SDP attributes only apply to specific types of
>      media.  For example, the semantics of the SDP 'rtcp-mux' and SDP
>      'rtcp-mux-only' attributes only apply to "m=" sections describing
>      RTP-based media.  However, as described in Section 8.1, there are
>      cases where IDENTICAL and TRANSPORT mux category SDP attributes are
>      only included in the "m=" sections indicated by the BUNDLE-tag.  That

Huh? This is section 8.1.

This whole paragraph is a mess. I would say

"One consequence of these rules is that because SDP attributes which
are appropriate only to some other m= section may appear in the m=
section indicated by the BUNDLE-tag. For instance, the BUNDLE-tag may
indicate a data channel but contain the 'rtcp-mux' attribute because
that applies to an RTP m= section that is part of the BUNDLE group"




>      type of media.

>  8.2.  Generating the Initial SDP Offer

>      When an offerer generates an initial offer, to negotiate a BUNDLE
>      group, it MUST:

This sentence is ungrammatical. "In order to negotiate a BUNDLE group
in an initial offer, the offerer MUST"


>      within the BUNDLE group, the offerer MUST:

>      o  Include an SDP 'bundle-only' attribute [Section 8.2.1] in the "m="
>        section; and

>      o  Assign a zero port value to the "m=" section.

I would reorder these, because the zero port is the main semantic.



>      NOTE: If the offerer assigns unique addresses:ports to multiple
>      bundled "m=" sections, the offerer needs to be prepared to receive
>      bundled media on each unique address:port, until it receives the
>      associated answer and finds out which address:port combination has
>      been selected as the offerer BUNDLE-address.

Why is this an "If"? There are only two choices: "unique" and "zero".
Just put this graf up before the discussion of bundle-only and you can
remove the conditional



>      It is RECOMMENDED that the offerer assigns the suggested offerer
>      BUNDLE address:port to a bundled "m=" section that the offerer
>      assumes it is unlikely that the answerer will reject, or move out of
>      the BUNDLE group.  How such assumption is made is outside the scope
>      of this document.

I would say "believes" rather than "assumes"


>        b=AS:1000
>        a=mid:bar
>        a=rtcp-mux
>        a=rtpmap:31 H261/90000
>        a=rtpmap:32 MPV/90000
>        a=extmap 1 urn:ietf:params:rtp-hdrext:sdes:mid

Line breaks between the m= sections would help here.



>      When an answerer generates an answer that contains a BUNDLE group,
>      the following general SDP grouping framework restrictions, defined in
>      [RFC5888], also apply to the BUNDLE group:

>      o  The answerer MUST NOT include a BUNDLE group in the answer, unless

Comma not needed here. Also, this negative phrasing is hard to follow.
I would say "MUST only ... if" here and below


>      o  The answerer MUST NOT include an "m=" section within a BUNDLE
>        group, unless the offerer requested the "m=" section to be within
>        that BUNDLE group in the corresponding offer.

>      o  If the answer contains multiple BUNDLE groups, the answerer MUST
>        NOT move an "m=" section from one BUNDLE group to another.

This bullet is unnecessary as it immediately follows from the
preoceeding bukllet.



>      If the answer contains a BUNDLE group, the answerer MUST:

>      o  Select an offerer BUNDLE address:port [Section 8.3.1]; and

>      o  Select an answerer BUNDLE address:port [Section 8.3.2].

This isn't right, because each BUNDLE group has its own address:port,
so instead "For each BUNDLE group" contained in the offer.

More importantly, it's not the address:port that the answerer chooses,
but rather the m= section. I.e.,

o Determine the first m= section in the BUNDLE group which will be
BUNDLEd in the answer
o Select an answerer BUNDLE address:port


>      o  The answerer will not reject the "m=" section [Section 8.3.4]; and

>      o  The "m=" section does not contain a zero port value.

>      If all of the criteria above are fulfilled, the answerer MUST select
>      the suggested offerer BUNDLE address:port.

Again, this isn't selecting the address:port but rather the m=section


>      bundled "m=" section the answerer MUST assign a zero port value and
>      include an SDP 'bundle-only' attribute.

>      The answerer MUST NOT assign an answerer BUNDLE address:port to an
>      "m=" section that is not within the BUNDLE group, or to an "m="
>      section that is within another BUNDLE group.

This repeats text in S 8.3.


>      group in an answer, it MUST first check the following criteria:

>      o  In the corresponding offer, an offerer BUNDLE address:port
>        (previously selected [Section 8.3.1] or newly suggested
>        [Section 8.5.1]) has been assigned to the "m=" section by the
>        offerer; or

This text is baffling. As far as I can see, the first condition is
"don't pick it as the head m= section if you intend to move it out".
The second is some entirely different case. Can you rewrite it so it
makes sense.


>      either reject the whole offer, reject each bundled "m=" section
>      within the BUNDLE group [Section 8.3.4], or keep the "m=" section
>      within the BUNDLE group in the answer and later create an offer where
>      the "m=" section is moved out of the BUNDLE group [Section 8.5.3].

>      When the answerer generates an answer, in which it moves a bundled

No comma



>      o  MUST NOT assign an SDP 'bundle-only' attribute to the "m="
>        section.

>      An answerer MUST NOT move an "m=" section from one BUNDLE group to
>      another within an answer.  If the answerer wants to move an "m="

This is the third time you have said this. If you want to say it here,
say "Because ..., if"


>      it MUST first check the following criteria:

>      o  In the corresponding offer, an offerer BUNDLE address:port
>        (previously selected [Section 8.3.1] or newly suggested
>        [Section 8.5.1]) has been assigned to the "m=" section by the
>        offerer.

Same comment here as above. These are entirely different conditions.


>      o  In the corresponding offer, an offerer BUNDLE address:port
>        (previously selected [Section 8.3.1] or newly suggested
>        [Section 8.5.1]) has been assigned to the "m=" section by the
>        offerer.

>      If the criteria above is fulfilled, the answerer can not reject the

"criteria... are"


>      reject the whole offer, reject each bundled "m=" section within the
>      BUNDLE group, or keep the "m=" section within the BUNDLE group in the
>      answer and later create an offer where the "m=" section is disabled
>      within the BUNDLE group [Section 8.5.4].

>      When an answerer generates an answer, in which it rejects a bundled

No comma


>        m=video 0 RTP/AVP 32
>        b=AS:1000
>        a=mid:bar
>        a=bundle-only
>        a=rtpmap:32 MPV/90000
>        a=extmap 1 urn:ietf:params:rtp-hdrext:sdes:mid

Please put line breaks in between m= sections here too


>  8.4.  Offerer Processing of the SDP Answer

>      When an offerer receives an answer, if the answer contains a BUNDLE
>      group, the offerer MUST check that any bundled "m=" section in the
>      answer was indicated as bundled in the corresponding offer.  If there
>      is no mismatch, the offerer MUST use the offerer BUNDLE address:port,

address:port, again. It's the m=section that's relevant.


>      bundled "m=" section.

>      NOTE: As the answerer might reject one or more bundled "m=" sections,
>      or move a bundled "m=" section out of a BUNDLE group, each bundled
>      "m=" section in the offer might not be indicated as bundled in the
>      answer.

"each" -> "an given"


>      When the offerer generates a subsequent offer, the offerer BUNDLE-tag
>      MUST represent the bundled "m=" section to which the offerer BUNDLE
>      address:port (previously negotiated or newly suggested) has been
>      assigned.

>  8.5.1.  Suggesting a New Offerer BUNDLE Address:Port

Again it would make more sense to describe this as suggesting a new m=
section.


>      section out of a BUNDLE group.

>  8.5.4.  Disabling a Media Description in a BUNDLE Group

>      When an offerer generates an offer, in which it wants to disable a
>      bundled "m=" section, the offerer:

Are you sure disable -> port 0, as opposed to "inactive"


>      configuration and packetization.
>      [I-D.ietf-mmusic-sdp-mux-attributes] lists SDP attributes, whose
>      attribute values are required to be identical for all codecs that use
>      the same payload type value.

>  10.2.  Associating RTP/RTCP Streams with Correct SDP Media Description

Nit "the correct"


>      "m=" sections), following the procedures for IDENTICAL mux category
>      attributes in Section 8.1.  In addition, the offerer MAY include an
>      SDP 'rtcp-mux-only' attribute [I-D.ietf-mmusic-mux-exclusive] in a
>      RTP-based bundled "m=" section.

>      NOTE: Whether the offerer associates the SDP 'rtcp-mux-only'

associates -> includes


>        an offerer BUNDLE address:port (previously selected
>        [Section 8.3.1] or newly suggested [Section 8.5.1]) to a bundled
>        "m=" section (the "m=" section indicated by the offerer BUNDLE-
>        tag), the offerer only includes ICE-related media-level SDP
>        attributes in that "m=" section, following the procedures in
>        Section 8.1.

You should rewrite this graf and the one below to be about BUNDLED-
ness not port assignment. I.e., if you are definitely bundled, willing
to bundle, or not bundled.


>      Support and usage of ICE mechanism together with the BUNDLE extension
>      is OPTIONAL, and the procedures in this section only apply when the
>      ICE mechanism is used.  Note that applications might mandate usage of
>      the ICE mechanism even if the BUNDLE extension is not used.

>  11.1.  SDP Offer/Answer Procedures

Same point here as above. Talking about address:port isn't helpful.
2018-04-16
49 Eric Rescorla Ballot comment and discuss text updated for Eric Rescorla
2018-04-16
49 Eric Rescorla
[Ballot discuss]
Rich version of this review at:
https://mozphab-ietf.devsvcdev.mozaws.net/D3382









DETAIL
>      When an offerer generates an offer, in which it wants to add …
[Ballot discuss]
Rich version of this review at:
https://mozphab-ietf.devsvcdev.mozaws.net/D3382









DETAIL
>      When an offerer generates an offer, in which it wants to add a new
>      bundled "m=" section, the offerer MUST:

>      o  Assign the offerer BUNDLE address:port (previously selected
>        [Section 8.3.1] or newly suggested [Section 8.5.1]) to the added
>        "m=" section; or

IMPORTANT: This doesn't sound right. You can't use the existing
address:port, because if the peer rejects BUNDLE but accepts the m=
section then it's broken.


>      o  When the BUNDLE transport has been established, ICE connectivity
>        checks and keep-alives only need to be performed for the BUNDLE
>        transport, instead of per individual "m=" section within the
>        BUNDLE group.

>      o  In an offer, if the offer assigns a unique address:port to one or

IMPORTANT: This does not define how to interact with trickle ICE.
2018-04-16
49 Eric Rescorla
[Ballot comment]

>    Negotiating Media Multiplexing Using the Session Description Protocol
>                        …
[Ballot comment]

>    Negotiating Media Multiplexing Using the Session Description Protocol
>                                    (SDP)
>              draft-ietf-mmusic-sdp-bundle-negotiation-49.txt

>  Abstract

This document is quite a bit improved from when I read it before, but
it's still very confusing. The primary problem here is the repeated
use of "address;port" as synechdoche for the m= section which is the
"head" of the BUNDLE group (i.e., that which is indicated by the
BUNDLE-tag). That's not what's going on and it's misplaced
concreteness. I would invent some new term ("head" is actually not
bad) and then use it throughout for this concept.


>      to negotiate which "m=" sections will become part of a BUNDLE group.
>      Within a BUNDLE group, each "m=" section will use a BUNDLE transport
>      for sending and receiving bundled media.

>      Within a BUNDLE group, each endpoint uses a single address:port
>      combination for sending and receiving bundled media.  The

Nit: "pair"?


>      combination for sending and receiving bundled media.  The
>      address:port combination is referred to as the BUNDLE address:port.
>      In addition to negotiating the BUNDLE group, the offerer and answerer
>      [RFC3264] use the BUNDLE extension to negotiate the BUNDLE
>      addresses:ports, one for the offerer (offerer BUNDLE address) and one
>      for the answerer (answerer BUNDLE address:port).  Once the offerer

Why is one of these called "address" and the other "address:port"?


>      can be used to request that specific media is only used if the "m="
>      section describing the media is kept within a BUNDLE group.

>      This specification updates RFC 3264 [RFC3264], to allow assigning a
>      zero port value to a "m=" section without meaning that the media
>      described by the "m=" section is disabled or rejected.

1. Bundle lets you have multiple SDP m= sections on a single 5-tuple
2. The underling mechanism here is that you put those m= sections in
the same BUNDLE group
3. In order to facilitate demuxing, we define a new RTP extension for
MID.
4. It is sometimes desirable to say that an m= section should only be
negotiated if it can be bundled. This is done with port=0 and a
=bundle-only.



>      can be used to request that specific media is only used if the "m="
>      section describing the media is kept within a BUNDLE group.

>      This specification updates RFC 3264 [RFC3264], to allow assigning a
>      zero port value to a "m=" section without meaning that the media
>      described by the "m=" section is disabled or rejected.

This section is kind of a laundry list. I think it would be helpful to
break it out conceptually. Specifically.

1.
2.
3.




>      "m=" section: SDP bodies contain one or more media descriptions,
>      referred to as "m=" sections.  Each "m=" section is represented by an
>      SDP "m=" line, and zero or more SDP attributes associated with the
>      "m=" line.  A local address:port combination is assigned to each "m="
>      section.

Was this intended to be a bullet?


>      o  Bundled media: All media associated with a given BUNDLE group.

>      o  Initial offer: The first offer, within an SDP session (e.g. a SIP
>        dialog when the Session Initiation Protocol (SIP) [RFC3261] is
>        used to carry SDP), in which the offerer indicates that it wants
>        to create a given BUNDLE group.

This is a very idiosyncratic definition, because it's *not* the first
offer in the session, but the one where the BUNDLE group is
introduced. Given that 3264 has a different meaning for this same
term, and the difference is critical, I would strongly urge you to
pick a different term.


>      The BUNDLE extension is indicated using an SDP 'group' attribute with
>      a semantics value [RFC5888] of "BUNDLE".  An identification-tag is
>      assigned to each bundled "m=" section, and each identification-tag is
>      listed in the SDP 'group:BUNDLE' attribute identification-tag list.
>      Each "m=" section whose identification-tag is listed in the
>      identification-tag list is associated with a given BUNDLE group.

How about "is part of" instead of "associated with"


>      Each "m=" section whose identification-tag is listed in the
>      identification-tag list is associated with a given BUNDLE group.

>      SDP bodies can contain multiple BUNDLE groups.  Any given bundled
>      "m=" section MUST NOT be associated with more than one BUNDLE group
>      at any given time.

Again "part of"


>      assign a zero port value to the "m=" section.  According to [RFC3264]
>      an answerer will reject such an "m=" section.  By including an SDP
>      'bundle-only' attribute in such an "m=" section, the offerer can
>      request that the answerer accepts the "m=" section if the answerer
>      supports the BUNDLE extension, and if the answerer keeps the "m="
>      section within the associated BUNDLE group.

I would put some of this text up before the attribute definition to
explain why the attribute exists.



>      SDP offers and answers can contain multiple BUNDLE groups.  The
>      procedures in this section apply independently to a given BUNDLE
>      group.

>  8.1.  Multiplex Category Considerations

Multiplexing?


>      When a BUNDLE group is initially negotiated, and a unique
>      address:port is assigned to each bundled "m=" section (excluding any
>      bundle-only "m=" section) in the initial offer [Section 8.2], any
>      IDENTICAL and TRANSPORT mux category SDP attributes included in the
>      BUNDLE group MUST explicitly be included in each bundled
>      "m=a€œ section (excluding any bundle-only "m=" sections).

Something bad happened here with your editor.


>      BUNDLE group MUST explicitly be included in each bundled
>      "m=a€œ section (excluding any bundle-only "m=" sections).

>      When an offerer or answerer includes SDP attributes in bundled "m="
>      sections within a BUNDLE group for which the offerer and answerer
>      BUNDLE addresses:ports have been selected, IDENTICAL and TRANSPORT

This is pretty opaque. It's not that the address:port pair have been
selected but rather that BUNDLE has been negotiated for that m=
section (though of course the address:port being selected is a side
effect of this).




>      The semantics of some SDP attributes only apply to specific types of
>      media.  For example, the semantics of the SDP 'rtcp-mux' and SDP
>      'rtcp-mux-only' attributes only apply to "m=" sections describing
>      RTP-based media.  However, as described in Section 8.1, there are
>      cases where IDENTICAL and TRANSPORT mux category SDP attributes are
>      only included in the "m=" sections indicated by the BUNDLE-tag.  That

Huh? This is section 8.1.

This whole paragraph is a mess. I would say

"One consequence of these rules is that because SDP attributes which
are appropriate only to some other m= section may appear in the m=
section indicated by the BUNDLE-tag. For instance, the BUNDLE-tag may
indicate a data channel but contain the 'rtcp-mux' attribute because
that applies to an RTP m= section that is part of the BUNDLE group"




>      type of media.

>  8.2.  Generating the Initial SDP Offer

>      When an offerer generates an initial offer, to negotiate a BUNDLE
>      group, it MUST:

This sentence is ungrammatical. "In order to negotiate a BUNDLE group
in an initial offer, the offerer MUST"


>      within the BUNDLE group, the offerer MUST:

>      o  Include an SDP 'bundle-only' attribute [Section 8.2.1] in the "m="
>        section; and

>      o  Assign a zero port value to the "m=" section.

I would reorder these, because the zero port is the main semantic.



>      NOTE: If the offerer assigns unique addresses:ports to multiple
>      bundled "m=" sections, the offerer needs to be prepared to receive
>      bundled media on each unique address:port, until it receives the
>      associated answer and finds out which address:port combination has
>      been selected as the offerer BUNDLE-address.

Why is this an "If"? There are only two choices: "unique" and "zero".
Just put this graf up before the discussion of bundle-only and you can
remove the conditional



>      It is RECOMMENDED that the offerer assigns the suggested offerer
>      BUNDLE address:port to a bundled "m=" section that the offerer
>      assumes it is unlikely that the answerer will reject, or move out of
>      the BUNDLE group.  How such assumption is made is outside the scope
>      of this document.

I would say "believes" rather than "assumes"


>        b=AS:1000
>        a=mid:bar
>        a=rtcp-mux
>        a=rtpmap:31 H261/90000
>        a=rtpmap:32 MPV/90000
>        a=extmap 1 urn:ietf:params:rtp-hdrext:sdes:mid

Line breaks between the m= sections would help here.



>      When an answerer generates an answer that contains a BUNDLE group,
>      the following general SDP grouping framework restrictions, defined in
>      [RFC5888], also apply to the BUNDLE group:

>      o  The answerer MUST NOT include a BUNDLE group in the answer, unless

Comma not needed here. Also, this negative phrasing is hard to follow.
I would say "MUST only ... if" here and below


>      o  The answerer MUST NOT include an "m=" section within a BUNDLE
>        group, unless the offerer requested the "m=" section to be within
>        that BUNDLE group in the corresponding offer.

>      o  If the answer contains multiple BUNDLE groups, the answerer MUST
>        NOT move an "m=" section from one BUNDLE group to another.

This bullet is unnecessary as it immediately follows from the
preoceeding bukllet.



>      If the answer contains a BUNDLE group, the answerer MUST:

>      o  Select an offerer BUNDLE address:port [Section 8.3.1]; and

>      o  Select an answerer BUNDLE address:port [Section 8.3.2].

This isn't right, because each BUNDLE group has its own address:port,
so instead "For each BUNDLE group" contained in the offer.

More importantly, it's not the address:port that the answerer chooses,
but rather the m= section. I.e.,

o Determine the first m= section in the BUNDLE group which will be
BUNDLEd in the answer
o Select an answerer BUNDLE address:port


>      o  The answerer will not reject the "m=" section [Section 8.3.4]; and

>      o  The "m=" section does not contain a zero port value.

>      If all of the criteria above are fulfilled, the answerer MUST select
>      the suggested offerer BUNDLE address:port.

Again, this isn't selecting the address:port but rather the m=section


>      bundled "m=" section the answerer MUST assign a zero port value and
>      include an SDP 'bundle-only' attribute.

>      The answerer MUST NOT assign an answerer BUNDLE address:port to an
>      "m=" section that is not within the BUNDLE group, or to an "m="
>      section that is within another BUNDLE group.

This repeats text in S 8.3.


>      group in an answer, it MUST first check the following criteria:

>      o  In the corresponding offer, an offerer BUNDLE address:port
>        (previously selected [Section 8.3.1] or newly suggested
>        [Section 8.5.1]) has been assigned to the "m=" section by the
>        offerer; or

This text is baffling. As far as I can see, the first condition is
"don't pick it as the head m= section if you intend to move it out".
The second is some entirely different case. Can you rewrite it so it
makes sense.


>      either reject the whole offer, reject each bundled "m=" section
>      within the BUNDLE group [Section 8.3.4], or keep the "m=" section
>      within the BUNDLE group in the answer and later create an offer where
>      the "m=" section is moved out of the BUNDLE group [Section 8.5.3].

>      When the answerer generates an answer, in which it moves a bundled

No comma



>      o  MUST NOT assign an SDP 'bundle-only' attribute to the "m="
>        section.

>      An answerer MUST NOT move an "m=" section from one BUNDLE group to
>      another within an answer.  If the answerer wants to move an "m="

This is the third time you have said this. If you want to say it here,
say "Because ..., if"


>      it MUST first check the following criteria:

>      o  In the corresponding offer, an offerer BUNDLE address:port
>        (previously selected [Section 8.3.1] or newly suggested
>        [Section 8.5.1]) has been assigned to the "m=" section by the
>        offerer.

Same comment here as above. These are entirely different conditions.


>      o  In the corresponding offer, an offerer BUNDLE address:port
>        (previously selected [Section 8.3.1] or newly suggested
>        [Section 8.5.1]) has been assigned to the "m=" section by the
>        offerer.

>      If the criteria above is fulfilled, the answerer can not reject the

"criteria... are"


>      reject the whole offer, reject each bundled "m=" section within the
>      BUNDLE group, or keep the "m=" section within the BUNDLE group in the
>      answer and later create an offer where the "m=" section is disabled
>      within the BUNDLE group [Section 8.5.4].

>      When an answerer generates an answer, in which it rejects a bundled

No comma


>        m=video 0 RTP/AVP 32
>        b=AS:1000
>        a=mid:bar
>        a=bundle-only
>        a=rtpmap:32 MPV/90000
>        a=extmap 1 urn:ietf:params:rtp-hdrext:sdes:mid

Please put line breaks in between m= sections here too


>  8.4.  Offerer Processing of the SDP Answer

>      When an offerer receives an answer, if the answer contains a BUNDLE
>      group, the offerer MUST check that any bundled "m=" section in the
>      answer was indicated as bundled in the corresponding offer.  If there
>      is no mismatch, the offerer MUST use the offerer BUNDLE address:port,

address:port, again. It's the m=section that's relevant.


>      bundled "m=" section.

>      NOTE: As the answerer might reject one or more bundled "m=" sections,
>      or move a bundled "m=" section out of a BUNDLE group, each bundled
>      "m=" section in the offer might not be indicated as bundled in the
>      answer.

"each" -> "an given"


>      When the offerer generates a subsequent offer, the offerer BUNDLE-tag
>      MUST represent the bundled "m=" section to which the offerer BUNDLE
>      address:port (previously negotiated or newly suggested) has been
>      assigned.

>  8.5.1.  Suggesting a New Offerer BUNDLE Address:Port

Again it would make more sense to describe this as suggesting a new m=
section.


>      section out of a BUNDLE group.

>  8.5.4.  Disabling a Media Description in a BUNDLE Group

>      When an offerer generates an offer, in which it wants to disable a
>      bundled "m=" section, the offerer:

Are you sure disable -> port 0, as opposed to "inactive"


>      configuration and packetization.
>      [I-D.ietf-mmusic-sdp-mux-attributes] lists SDP attributes, whose
>      attribute values are required to be identical for all codecs that use
>      the same payload type value.

>  10.2.  Associating RTP/RTCP Streams with Correct SDP Media Description

Nit "the correct"


>      "m=" sections), following the procedures for IDENTICAL mux category
>      attributes in Section 8.1.  In addition, the offerer MAY include an
>      SDP 'rtcp-mux-only' attribute [I-D.ietf-mmusic-mux-exclusive] in a
>      RTP-based bundled "m=" section.

>      NOTE: Whether the offerer associates the SDP 'rtcp-mux-only'

associates -> includes


>        an offerer BUNDLE address:port (previously selected
>        [Section 8.3.1] or newly suggested [Section 8.5.1]) to a bundled
>        "m=" section (the "m=" section indicated by the offerer BUNDLE-
>        tag), the offerer only includes ICE-related media-level SDP
>        attributes in that "m=" section, following the procedures in
>        Section 8.1.

You should rewrite this graf and the one below to be about BUNDLED-
ness not port assignment. I.e., if you are definitely bundled, willing
to bundle, or not bundled.


>      Support and usage of ICE mechanism together with the BUNDLE extension
>      is OPTIONAL, and the procedures in this section only apply when the
>      ICE mechanism is used.  Note that applications might mandate usage of
>      the ICE mechanism even if the BUNDLE extension is not used.

>  11.1.  SDP Offer/Answer Procedures

Same point here as above. Talking about address:port isn't helpful.
2018-04-16
49 Eric Rescorla [Ballot Position Update] New position, Discuss, has been recorded for Eric Rescorla
2018-04-16
49 Spencer Dawkins
[Ballot comment]
Thanks for doing this work. It's important.

I wonder if it's worth adding a mention of https://tools.ietf.org/html/rfc7657 as an Informational reference, because bundling …
[Ballot comment]
Thanks for doing this work. It's important.

I wonder if it's worth adding a mention of https://tools.ietf.org/html/rfc7657 as an Informational reference, because bundling makes it easier for you to shoot yourself in the foot by using different DSCP codepoints for different packets carried on a single 5-tuple.

If there's a better document to point that out to people who are considering using bundling for their applications, that's a fine answer ...
2018-04-16
49 Spencer Dawkins [Ballot Position Update] New position, Yes, has been recorded for Spencer Dawkins
2018-04-16
49 Alexey Melnikov
[Ballot comment]
8.1.  Multiplex Category Considerations

  When a BUNDLE group is initially negotiated, and a unique
  address:port is assigned to each bundled "m=" …
[Ballot comment]
8.1.  Multiplex Category Considerations

  When a BUNDLE group is initially negotiated, and a unique
  address:port is assigned to each bundled "m=" section (excluding any
  bundle-only "m=" section) in the initial offer [Section 8.2], any
  IDENTICAL and TRANSPORT mux category SDP attributes included in the
  BUNDLE group MUST explicitly be included in each bundled
  "m=a€œ section (excluding any bundle-only "m=" sections).

HTML encoding is not really readable in plain text.

Please add a reference on first mention of UTF-8.
2018-04-16
49 Alexey Melnikov Ballot comment text updated for Alexey Melnikov
2018-04-16
49 Alexey Melnikov [Ballot comment]
Please add a reference on first mention of UTF-8.
2018-04-16
49 Alexey Melnikov [Ballot Position Update] New position, No Objection, has been recorded for Alexey Melnikov
2018-04-13
49 Benjamin Kaduk
[Ballot comment]
Should the NOTE in Section 8.5.2 explicitly reaffirm that only one
m= section within the BUNDLE group can have the offerer BUNDLE
address:port, …
[Ballot comment]
Should the NOTE in Section 8.5.2 explicitly reaffirm that only one
m= section within the BUNDLE group can have the offerer BUNDLE
address:port, regardless of whether it is a new or preexisting
address:port?  That is, that you cannot use an existing BUNDLE
address:port and offer a new one in the same BUNDLE group.


When we talk about how the offerer must move a section out of one
BUNDLE group and then generate a second offer where that section is
added to the other BUNDLE group (this occurs in several places,
IIRC), do we need to say anything about the offer that moves the
section out of the first BUNDLE group must be accepted before the
second offer is offered?


In Section 10.2, page 23, I appreciate the description of the
payload type/m= mapping used by legacy implementations, but I worry
that there may not be sufficient description of when an SDP participant
should take the care to ensure the uniqueness of the mapping (versus
when the legacy considerations can be ignored).


Does the first paragraph of Section 10.3.1.2 imply that an
implementation of BUNDLE must also implement rtcp-mux-only?


Should the RTP SDES header extension URI be mentioned somewhere
other than the IANA considerations?


In Section 17:
  The security considerations of "RTP Header Extension for the RTP
  Control Protocol (RTCP) Source Description Items" [RFC7941] requires
  that when RTCP is confidentiality protected, and that any SDES RTP
  header extension carrying an SDES item, such as the MID RTP header
  extension, is also protected using commensurate strength algorithms.
"that when [...], and that" seems the wrong construction here; I
think that just "that when [...]," is the intended meaning.
2018-04-13
49 Benjamin Kaduk [Ballot Position Update] New position, No Objection, has been recorded for Benjamin Kaduk
2018-04-12
49 Mirja Kühlewind Requested Telechat review by TSVART
2018-04-03
49 Linda Dunbar Request for Telechat review by GENART Completed: Ready. Reviewer: Linda Dunbar. Sent review to list.
2018-03-08
49 Jean Mahoney Request for Telechat review by GENART is assigned to Linda Dunbar
2018-03-08
49 Jean Mahoney Request for Telechat review by GENART is assigned to Linda Dunbar
2018-03-03
49 (System) IANA Review state changed to Version Changed - Review Needed from IANA - Not OK
2018-03-03
49 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-49.txt
2018-03-03
49 (System) New version approved
2018-03-03
49 (System) Request for posting confirmation emailed to previous authors: Christer Holmberg , Cullen Jennings , Harald Alvestrand
2018-03-03
49 Christer Holmberg Uploaded new revision
2018-03-02
49 (System) IANA Review state changed to IANA - Not OK from Version Changed - Review Needed
2018-02-26
48 Ben Campbell Placed on agenda for telechat - 2018-04-19
2018-02-26
48 Ben Campbell IESG state changed to IESG Evaluation from Waiting for AD Go-Ahead
2018-02-26
48 Ben Campbell Ballot has been issued
2018-02-26
48 Ben Campbell [Ballot Position Update] New position, Yes, has been recorded for Ben Campbell
2018-02-26
48 Ben Campbell Created "Approve" ballot
2018-02-26
48 Ben Campbell Ballot writeup was changed
2018-02-17
48 Ben Campbell Changed consensus to Yes from Unknown
2018-02-16
48 Tero Kivinen Request for Last Call review by SECDIR Completed: Has Nits. Reviewer: Charlie Kaufman.
2018-02-15
48 Jean Mahoney Request for Last Call review by GENART Completed: Ready with Nits. Reviewer: Linda Dunbar.
2018-02-14
48 (System) IESG state changed to Waiting for AD Go-Ahead from In Last Call
2018-02-09
48 (System) IANA Review state changed to IANA - Not OK from IANA - Review Needed
2018-02-05
48 Gunter Van de Velde Request for Last Call review by OPSDIR is assigned to Joel Jaeggli
2018-02-05
48 Gunter Van de Velde Request for Last Call review by OPSDIR is assigned to Joel Jaeggli
2018-02-01
48 Jean Mahoney Request for Last Call review by GENART is assigned to Linda Dunbar
2018-02-01
48 Jean Mahoney Request for Last Call review by GENART is assigned to Linda Dunbar
2018-01-31
48 Tero Kivinen Request for Last Call review by SECDIR is assigned to Charlie Kaufman
2018-01-31
48 Tero Kivinen Request for Last Call review by SECDIR is assigned to Charlie Kaufman
2018-01-31
48 Amy Vezza IANA Review state changed to IANA - Review Needed
2018-01-31
48 Amy Vezza
The following Last Call announcement was sent out (ends 2018-02-14):

From: The IESG
To: IETF-Announce
CC: fandreas@cisco.com, ben@nostrum.com, mmusic-chairs@ietf.org, mmusic@ietf.org, draft-ietf-mmusic-sdp-bundle-negotiation@ietf.org …
The following Last Call announcement was sent out (ends 2018-02-14):

From: The IESG
To: IETF-Announce
CC: fandreas@cisco.com, ben@nostrum.com, mmusic-chairs@ietf.org, mmusic@ietf.org, draft-ietf-mmusic-sdp-bundle-negotiation@ietf.org
Reply-To: ietf@ietf.org
Sender:
Subject: Last Call:  (Negotiating Media Multiplexing Using the Session Description Protocol (SDP)) to Proposed Standard


The IESG has received a request from the Multiparty Multimedia Session
Control WG (mmusic) to consider the following document: - 'Negotiating Media
Multiplexing Using the Session Description Protocol
  (SDP)'
  as Proposed Standard

The IESG plans to make a decision in the next few weeks, and solicits final
comments on this action. Please send substantive comments to the
ietf@ietf.org mailing lists by 2018-02-14. Exceptionally, comments may be
sent to iesg@ietf.org instead. In either case, please retain the beginning of
the Subject line to allow automated sorting.

Abstract


  This specification defines a new Session Description Protocol (SDP)
  Grouping Framework extension, 'BUNDLE'.  The extension can be used
  with the SDP Offer/Answer mechanism to negotiate the usage of a
  single transport (5-tuple) for sending and receiving media described
  by multiple SDP media descriptions ("m=" sections).  Such transport
  is referred to as a BUNDLE transport, and the media is referred to as
  bundled media.  The "m=" sections that use the BUNDLE transport form
  a BUNDLE group.

  This specification updates RFC 3264, to allow assigning a zero port
  value to a "m=" section without meaning that the media described by
  the "m=" section is disabled or rejected.

  This specification defines a new RTP Control Protocol (RTCP) source
  description (SDES) item and a new RTP header extension that van be
  used to correlate bundled RTP/RTCP packets with their appropriate
  "m=" section.




The file can be obtained via
https://datatracker.ietf.org/doc/draft-ietf-mmusic-sdp-bundle-negotiation/

IESG discussion can be tracked via
https://datatracker.ietf.org/doc/draft-ietf-mmusic-sdp-bundle-negotiation/ballot/


No IPR declarations have been submitted directly on this I-D.


The document contains these normative downward references.
See RFC 3967 for additional information:
    draft-holmberg-mmusic-sdp-multiplex-negotiation: Multiplexing Negotiation Using Session Description Protocol (SDP) Port Numbers (None - )



2018-01-31
48 Amy Vezza IESG state changed to In Last Call from Last Call Requested
2018-01-31
48 Ben Campbell Last call was requested
2018-01-31
48 Ben Campbell IESG state changed to Last Call Requested from AD Evaluation
2018-01-31
48 Ben Campbell Last call announcement was generated
2018-01-31
48 Ben Campbell Ballot writeup was changed
2018-01-31
48 Ben Campbell Ballot approval text was generated
2018-01-31
48 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-48.txt
2018-01-31
48 (System) New version approved
2018-01-31
48 (System) Request for posting confirmation emailed to previous authors: Christer Holmberg , Cullen Jennings , Harald Alvestrand
2018-01-31
48 Christer Holmberg Uploaded new revision
2018-01-19
47 Ben Campbell
This is my AD Evaluation of  draft-ietf-mmusic-sdp-bundle-negotiation-47.

First, thank you for all the work on this. I know this has been a difficult process. I …
This is my AD Evaluation of  draft-ietf-mmusic-sdp-bundle-negotiation-47.

First, thank you for all the work on this. I know this has been a difficult process. I do have a few substantive comments and a number of editorial comments. I would like to resolve the substantive comments and make at least a pass over the editorial comments prior to IETF Last Call.

——————————

*** Substantive Comments ***

- boilerplate: I assume the pre-2008 boilerplate is present due to the extensive quoted text from RFC 3264. I note that it is not usually necessary to quote large amounts of text from an RFC in order to update it. I don’t expect a change in the update approach this late in the process, but I suggest that for future drafts people try to avoid creating the need for the pre-2008 boilerplate.

- section 8, first paragraph after bullet list: I’m confused as to whether this talks about the initial offer or a subsequent offer. the comment about the “previously negotiated SDP parameters” seems to suggest the latter. I suspect this is intended to cover all offers, in which case it needs clarification.

-8.3.3: IIUC, the criteria mean that the only m= sections that the answerer can move out of the bundle are those that have unique addresses but are not listed first in the group attribute. If that is correct, a sentence or two to say that would be helpful.

-8.5, first paragraph. IIUC, it’s not syntactically possible to assign more than one m= section the bundle address, since only one can be first in the group attribute. If that is correct, the MUST here is a statement of fact. Or am I missing something?

-9: There are several assertions that in order to do something you MUST have a spec saying how to do it. Formally, I think the requirement is really that you MUST NOT do that thing unless such a spec exists. (2119/8174 keywords are normally about implementation behavior.)

-10.2,
— paragraph 7: What implementations are we talking about that may not follow the requirements to include the tag in RTP/RTCP? Early implementations of this draft? Something else? As it is, it seems like we are talking about implementations that do not follow this spec. That makes the statement “  … In this situation, each "m=" section MUST use unique payload type values…” problematic, as it seems to be putting requirements on implementations that do not follow this draft in the first place.

— '  Therefore, when processing a compound packet, any contained SDES packet MUST be handled first.
      Note that this is a change from [RFC3550] Section 6.1 which
      states that "Each individual RTCP packet in the compound packet
      may be processed independently with no requirements upon the order
      or combination of packets”.’

Doesn’t this require an update of 3550? It’s not merely a tightening of requirements, it’s a reversal of guidance from that document when used in this context.

-10.3.1.3, last paragraph: What is the expected behavior when that "protocol error" occurs?

-15.2, last paragraph: Is it worth recommending against patterns which could be used as persistent identifiers, even if they don’t expressly identify a person or application?

-16.3: Please use the IESG and “iesg@ietf.org” as the contact for the IANA registrations.

-17, 2nd paragraph:
— Again, is it worth mentioning the risk of persistent identifiers?
—  “… SHOULD be 3 bytes or less, to allow them to efficiently fit into the MID RTP header extension.”
It seems like that requirement belongs in 15.2

-17, last paragraph: Doesn’t that require an update to 7941

-18: Would it make sense to have one of the examples use media-level c= lines?


*** Editorial Comments and nits ***

- Terminology issues: I think some of the terminology here will confuse readers who are new to the concepts. In particular, IIUC, “bundle address” means address + port. I think many readers will fall back to assuming that address means IP address. (Especially when we talk about a “unique address” assigned to an m= section, when much of the time that may just mean a unique port.)

I also find defining the term “Bundle Tag” to mean the first tag in the list to be confusing. It may be easier to just refer to the “first tag in the group list”.

— Examples: Any chance of some of the examples showing IPv6? I suspect it’s a trivial change for at least some examples, since they use domain names.

-abstract: The abstract seems longer and more detailed than strictly necessary. The first two sentences along with a brief mention of the update to 3264 and the SDES item/RTP header extension would be sufficient.

-Section 1,
— first paragraph: This sort of jumps into things without much context. (e.g. that we are talking about media sessions signaled using SDP offer/answer.”
s/consume/consumes
— paragraphs 5-9: Most of the instances of the word “also” are unneeded.
— paragraphs 7 and 9: These paragraphs both talk about updates to 3264; it would be better to keep them together.
— 2nd to last paragraph, “The procedures in this specification apply independently to a given BUNDLE group.” : I don’t understand what that sentence is trying to convey.

- Section 2: The terminology list would be more readable as a bullet list or hanging indent list.

-3: There are at least one lower case “must” and a number of lower case “shoulds”. Please consider using the boilerplate from RFC 8174, or verify that the lower case versions are not intended to be keywords.

-5:
— First paragraph: inconsistent tense. Please consider s/ “ … section will use …” / “… section uses…”
— 2nd paragraph: The citation to RFC5888 looks like a reference for the “BUNDLE” semantic value, rather than for the grouping framework. Please consider something to the effect of the following:
OLD:
    The BUNDLE extension is indicated using an SDP ’group’ attribute with a "BUNDLE" semantics value [RFC5888].
NEW:
    The BUNDLE extension is indicated using an SDP ’group’ attribute with a semantics value [RFC5888] of "BUNDLE”.

- Section 8.1:
— Consider moving this section to later in the offer/answer details. I think it would be easier for a reader to understand this section after they have some more general context.
— Title: Spell out “Multiplex” in the title.
— First Paragraph: The wording could be taken to mean that all attributes with a mux category of IDENTICAL or TRANSPORT must be included in the first place. I think the point is that, if they are present, they must be included in each m= section. I suggest something like the following:
OLD:
  … IDENTICAL and TRANSPORT mux category SDP attributes MUST explicitly be included in each bundled "m=“ section ...
NEW:
  … Any IDENTICAL and TRANSPORT mux category SDP attributes included in the BUNDLE group MUST explicitly be included in each bundled "m=“ section …

-8.2.1, first paragraph:
— The phrase “represented by the … BUNDLE-tag” occurs repeatedly throughout the document. The use of “represented” there seems awkward. I think “indicated” would be a better word choice.
— should “offerer BUNDLE address” be “offerer suggested BUNDLE address”?

-8.5.2: Should “add a bundled m= section” be “add a _new_ bundled m= section”?

-9:
— first paragraph: “ … different protocols on top of the transport-layer protocol …”
Upper layer protocols?
— Last paragraph: This paragraph seems mostly (or entirely) redundant to section 9.1.

-10.2:

— " RTCP packets for which no appropriate "m=" section can be identified
  MUST be processed as usual by the RTP layer, updating the metadata
  associated with the corresponding RTP streams, but are not passed to
  any "m=" section.”

I don’t think things gets passed to sections of SDP. What does this really talk about?

— “ Rules for additional processing of the various types of RTCP packets
  are explained below.”

Should that say “Additional rules for processing…”?

-11, 2nd bullet: " previously selected [Section 8.3.1 ] or new suggested [ Section 8.5.1]”
s/new/newly

— last paragraph: It may be worth clarifying that this doesn't change any requirement specified by the application or signaling protocol. For example, WebRTC still requires ICE even though bundle is used.

11.1:
— 2nd paragraph: “ previously selected or new suggested “
s/new/newly

— 3rd paragraph: Construct of the form of “MUST only” can be ambiguous. Please consider restating in the form of a MUST NOT construction. (For example, “MUST only do foo when….” can be interpreted as “MUST NOT do foo unless…” or “MUST NOT do anything but foo when…”  [Note: This construct repeats several times in the next few sections. ]

-19, 3rd paragraph from end: It’s seems a bit odd to thank a co-author (Cullen) for text contributions :-)
2018-01-16
47 Ben Campbell IESG state changed to AD Evaluation from Publication Requested
2017-12-18
47 Flemming Andreasen
As required by RFC 4858, this is the current template for the Document
Shepherd Write-Up.

Changes are expected over time. This version is dated …
As required by RFC 4858, this is the current template for the Document
Shepherd Write-Up.

Changes are expected over time. This version is dated 24 February 2012.

(1) What type of RFC is being requested (BCP, Proposed Standard,
Internet Standard, Informational, Experimental, or Historic)?  Why
is this the proper type of RFC?  Is this type of RFC indicated in the
title page header?

Proposed Standard. The title page shows Standards Track as the Intended Status, which is appropriate given the impact on other standards track documents.

(2) The IESG approval announcement includes a Document Announcement
Write-Up. Please provide such a Document Announcement Write-Up. Recent
examples can be found in the "Action" announcements for approved
documents. The approval announcement contains the following sections:

Technical Summary

  Relevant content can frequently be found in the abstract
  and/or introduction of the document. If not, this may be
  an indication that there are deficiencies in the abstract
  or introduction.

This specification defines a new Session Description Protocol (SDP) Grouping Framework extension, 'BUNDLE'.  The extension can be used with the SDP Offer/Answer mechanism to negotiate the usage of a single transport (5-tuple) for sending and receiving media described by multiple SDP media descriptions ("m=" sections).  Such transport is referred to as a BUNDLE transport, and the media is referred to as bundled media.  The "m=" sections that use the BUNDLE transport form a BUNDLE group.

To assist endpoints in negotiating the use of bundle this specification defines a new SDP attribute, 'bundle-only', which can be used to request that specific media is only used if bundled.  The specification also updates RFC 3264, to allow assigning a zero port value to a "m=" section without meaning that the media described by the "m=" section is disabled or rejected.

When RTP-based media is used, there are multiple ways to correlate bundled RTP packets with the appropriate "m=" section.  This specification defines a new Real-time Transport Control Protocol (RTCP) source description (SDES) item and a new RTP header extension that provides an additional way to do this correlation by using them to carry a value that associates the RTP/RTCP packets with a specific "m=" section.


Working Group Summary

  Was there anything in WG process that is worth noting? For
  example, was there controversy about particular points or
  were there decisions where the consensus was particularly
  rough?

The mechanism has been worked on since 2011, and it has been a WG document since 2012. Originally, there were different approaches to solving the problem which resulted in significant disagreements and discussion in the WG about the best way forward. Ultimately, a compromise proposal agreeable to all parties was reached (as reflected in the document), and it has been in place for quite a while with very solid consensus. There has been a number of technical details to sort out, and the document has also received a lot of editorial feedback. The current version addresses all known technical issues as well as editorial comments that can reasonably be addressed (while respecting previous WG discussions/consensus and also considering sometimes conflicting editorial comments).


Document Quality

  Are there existing implementations of the protocol? Have a
  significant number of vendors indicated their plan to
  implement the specification? Are there any reviewers that
  merit special mention as having done a thorough review,
  e.g., one that resulted in important changes or a
  conclusion that the document had no substantive issues? If
  there was a MIB Doctor, Media Type or other expert review,
  what was its course (briefly)? In the case of a Media Type
  review, on what date was the request posted?

The protocol is an important part of the RTCWeb suite of specifications and there are existing implementations of earlier versions of the specification.

Personnel

  Who is the Document Shepherd? Who is the Responsible Area
  Director?

Flemming Andreasen is the Document Shepherd
Ben Campbell is the Responsile Area Director.

(3) Briefly describe the review of this document that was performed by
the Document Shepherd.  If this version of the document is not ready
for publication, please explain why the document is being forwarded to
the IESG.

I have reviewed the current version(s) and several earlier versions of the document in detail. A number of WG participants have done the same. The document is ready to proceed.


(4) Does the document Shepherd have any concerns about the depth or
breadth of the reviews that have been performed?

No such concern.

(5) Do portions of the document need review from a particular or from
broader perspective, e.g., security, operational complexity, AAA, DNS,
DHCP, XML, or internationalization? If so, describe the review that
took place.

N/A

(6) Describe any specific concerns or issues that the Document Shepherd
has with this document that the Responsible Area Director and/or the
IESG should be aware of? For example, perhaps he or she is uncomfortable
with certain parts of the document, or has concerns whether there really
is a need for it. In any event, if the WG has discussed those issues and
has indicated that it still wishes to advance the document, detail those
concerns here.

N/A

(7) Has each author confirmed that any and all appropriate IPR
disclosures required for full conformance with the provisions of BCP 78
and BCP 79 have already been filed. If not, explain why.

Each author has confirmed.

(8) Has an IPR disclosure been filed that references this document?
If so, summarize any WG discussion and conclusion regarding the IPR
disclosures.

No IPR disclosure.

(9) How solid is the WG consensus behind this document? Does it
represent the strong concurrence of a few individuals, with others
being silent, or does the WG as a whole understand and agree with it? 

As described above, there is solid WG concensus behind the document, especially as it relates to the technical contents. There has been some editorial comments related to overall readability, however we believe those have been addressed at this point. The recent version(s) of the document were out for review by the WG (once again) and did not receive any further feedback.

(10) Has anyone threatened an appeal or otherwise indicated extreme
discontent? If so, please summarise the areas of conflict in separate
email messages to the Responsible Area Director. (It should be in a
separate email because this questionnaire is publicly available.)

N/A

(11) Identify any ID nits the Document Shepherd has found in this
document. (See https://www.ietf.org/tools/idnits/ and the Internet-Drafts
Checklist). Boilerplate checks are not enough; this check needs to be
thorough.

The document contains a disclaimer for pre-RFC5378 work since it includes material from RFC 3264.

ID-nits checks produces 2 comments related to references, both of which are false positives.

(12) Describe how the document meets any required formal review
criteria, such as the MIB Doctor, media type, and URI type reviews.

N/A

(13) Have all references within this document been identified as
either normative or informative?

Yes.

(14) Are there normative references to documents that are not ready for
advancement or are otherwise in an unclear state? If such normative
references exist, what is the plan for their completion?

[I-D.ietf-ice-rfc5245bis] was recently submitted for publication.
[I-D.ietf-mmusic-sdp-mux-attributes] is in the RFC Editor's Queue
[I-D.ietf-mmusic-mux-exclusive] is in the RFC Editor's Queue
[I-D.ietf-mmusic-ice-sip-sdp] has completed WGLC


(15) Are there downward normative references references (see RFC 3967)?
If so, list these downward references to support the Area Director in
the Last Call procedure.

N/A

(16) Will publication of this document change the status of any
existing RFCs? Are those RFCs listed on the title page header, listed
in the abstract, and discussed in the introduction? If the RFCs are not
listed in the Abstract and Introduction, explain why, and point to the
part of the document where the relationship of this document to the
other RFCs is discussed. If this information is not in the document,
explain why the WG considers it unnecessary.

The document updates RFC 3264, which is indicated on the title page and called out in the abstract and the introduction.

(17) Describe the Document Shepherd's review of the IANA considerations
section, especially with regard to its consistency with the body of the
document. Confirm that all protocol extensions that the document makes
are associated with the appropriate reservations in IANA registries.
Confirm that any referenced IANA registries have been clearly
identified. Confirm that newly created IANA registries include a
detailed specification of the initial contents for the registry, that
allocations procedures for future registrations are defined, and a
reasonable name for the new registry has been suggested (see RFC 5226).

IANA considerations have been reviewed. Registrations are consistent with the main body of the document and the relevant registry requirements.

(18) List any new IANA registries that require Expert Review for future
allocations. Provide any public guidance that the IESG would find
useful in selecting the IANA Experts for these new registries.

N/A

(19) Describe reviews and automated checks performed by the Document
Shepherd to validate sections of the document written in a formal
language, such as XML code, BNF rules, MIB definitions, etc.

N/A
2017-12-18
47 Flemming Andreasen Responsible AD changed to Ben Campbell
2017-12-18
47 Flemming Andreasen IETF WG state changed to Submitted to IESG for Publication from WG Consensus: Waiting for Write-Up
2017-12-18
47 Flemming Andreasen IESG state changed to Publication Requested
2017-12-18
47 Flemming Andreasen IESG process started in state Publication Requested
2017-12-18
47 Flemming Andreasen Tag Revised I-D Needed - Issue raised by WG cleared.
2017-12-18
47 Flemming Andreasen Changed document writeup
2017-12-18
47 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-47.txt
2017-12-18
47 (System) New version approved
2017-12-18
47 (System) Request for posting confirmation emailed to previous authors: Christer Holmberg , Cullen Jennings , Harald Alvestrand
2017-12-18
47 Christer Holmberg Uploaded new revision
2017-12-14
46 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-46.txt
2017-12-14
46 (System) New version approved
2017-12-14
46 (System) Request for posting confirmation emailed to previous authors: Christer Holmberg , Cullen Jennings , Harald Alvestrand
2017-12-14
46 Christer Holmberg Uploaded new revision
2017-12-14
45 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-45.txt
2017-12-14
45 (System) New version approved
2017-12-14
45 (System) Request for posting confirmation emailed to previous authors: Christer Holmberg , Cullen Jennings , Harald Alvestrand
2017-12-14
45 Christer Holmberg Uploaded new revision
2017-12-13
44 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-44.txt
2017-12-13
44 (System) New version approved
2017-12-13
44 (System) Request for posting confirmation emailed to previous authors: Christer Holmberg , Cullen Jennings , Harald Alvestrand
2017-12-13
44 Christer Holmberg Uploaded new revision
2017-12-07
43 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-43.txt
2017-12-07
43 (System) New version approved
2017-12-07
43 (System) Request for posting confirmation emailed to previous authors: Christer Holmberg , Cullen Jennings , Harald Alvestrand
2017-12-07
43 Christer Holmberg Uploaded new revision
2017-11-29
42 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-42.txt
2017-11-29
42 (System) New version approved
2017-11-29
42 (System) Request for posting confirmation emailed to previous authors: Christer Holmberg , Cullen Jennings , Harald Alvestrand
2017-11-29
42 Christer Holmberg Uploaded new revision
2017-11-27
41 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-41.txt
2017-11-27
41 (System) New version approved
2017-11-27
41 (System) Request for posting confirmation emailed to previous authors: Christer Holmberg , Cullen Jennings , Harald Alvestrand
2017-11-27
41 Christer Holmberg Uploaded new revision
2017-11-20
40 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-40.txt
2017-11-20
40 (System) New version approved
2017-11-20
40 (System) Request for posting confirmation emailed to previous authors: Christer Holmberg , Cullen Jennings , Harald Alvestrand
2017-11-20
40 Christer Holmberg Uploaded new revision
2017-08-31
39 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-39.txt
2017-08-31
39 (System) New version approved
2017-08-31
39 (System) Request for posting confirmation emailed to previous authors: Christer Holmberg , Harald Alvestrand , Cullen Jennings
2017-08-31
39 Christer Holmberg Uploaded new revision
2017-04-12
38 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-38.txt
2017-04-12
38 (System) New version approved
2017-04-12
38 (System) Request for posting confirmation emailed to previous authors: Christer Holmberg , Harald Alvestrand , mmusic-chairs@ietf.org, Cullen Jennings
2017-04-12
38 Christer Holmberg Uploaded new revision
2017-03-31
37 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-37.txt
2017-03-31
37 (System) New version approved
2017-03-31
37 (System) Request for posting confirmation emailed to previous authors: Christer Holmberg , Harald Alvestrand , mmusic-chairs@ietf.org, Cullen Jennings
2017-03-31
37 Christer Holmberg Uploaded new revision
2017-03-10
36 Bo Burman Added to session: IETF-98: mmusic  Thu-1300
2016-10-27
36 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-36.txt
2016-10-27
36 (System) New version approved
2016-10-27
35 (System) Request for posting confirmation emailed to previous authors: "Harald Alvestrand" , "Christer Holmberg" , mmusic-chairs@ietf.org, "Cullen Jennings"
2016-10-27
35 Christer Holmberg Uploaded new revision
2016-10-25
35 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-35.txt
2016-10-25
35 (System) New version approved
2016-10-25
34 (System) Request for posting confirmation emailed to previous authors: "Harald Alvestrand" , "Christer Holmberg" , mmusic-chairs@ietf.org, "Cullen Jennings"
2016-10-25
34 Christer Holmberg Uploaded new revision
2016-10-19
34 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-34.txt
2016-10-19
34 (System) New version approved
2016-10-19
33 (System) Request for posting confirmation emailed to previous authors: "Harald Alvestrand" , "Christer Holmberg" , mmusic-chairs@ietf.org, "Cullen Jennings"
2016-10-19
33 Christer Holmberg Uploaded new revision
2016-10-07
33 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-33.txt
2016-10-07
33 (System) New version approved
2016-10-07
32 (System) Request for posting confirmation emailed to previous authors: "Harald Alvestrand" , "Christer Holmberg" , mmusic-chairs@ietf.org, "Cullen Jennings"
2016-10-07
32 Christer Holmberg Uploaded new revision
2016-08-17
32 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-32.txt
2016-06-19
31 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-31.txt
2016-06-07
30 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-30.txt
2016-05-23
29 Flemming Andreasen Minor updates needed to address WGLC comments
2016-05-23
29 Flemming Andreasen Tag Revised I-D Needed - Issue raised by WG set.
2016-04-15
29 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-29.txt
2016-04-14
28 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-28.txt
2016-02-24
27 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-27.txt
2016-02-16
26 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-26.txt
2016-01-18
25 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-25.txt
2016-01-11
24 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-24.txt
2015-10-16
23 Flemming Andreasen Intended Status changed to Proposed Standard from None
2015-07-24
23 Flemming Andreasen IETF WG state changed to WG Consensus: Waiting for Write-Up from WG Document
2015-07-20
23 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-23.txt
2015-06-16
22 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-22.txt
2015-06-15
21 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-21.txt
2015-06-12
20 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-20.txt
2015-03-26
19 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-19.txt
2015-03-09
18 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-18.txt
2015-03-03
17 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-17.txt
2015-01-27
16 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-16.txt
2015-01-16
15 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-15.txt
2014-12-19
14 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-14.txt
2014-12-08
13 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-13.txt
2014-10-09
12 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-12.txt
2014-09-22
11 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-11.txt
2014-09-10
10 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-10.txt
2014-09-05
09 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-09.txt
2014-08-22
08 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-08.txt
2014-04-23
07 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-07.txt
2014-04-07
06 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-06.txt
2013-10-14
05 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-05.txt
2013-06-14
04 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-04.txt
2013-02-18
03 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-03.txt
2013-02-12
02 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-02.txt
2012-08-20
01 Christer Holmberg New version available: draft-ietf-mmusic-sdp-bundle-negotiation-01.txt
2012-07-31
00 Miguel García Changed shepherd to Flemming Andreasen
2012-02-23
00 (System) New version available: draft-ietf-mmusic-sdp-bundle-negotiation-00.txt