Re: [MMUSIC] WGLC for draft-ietf-mmusic-sdp-bundle-negotiation-19

Adam Roach <adam@nostrum.com> Wed, 08 April 2015 17:21 UTC

Return-Path: <adam@nostrum.com>
X-Original-To: mmusic@ietfa.amsl.com
Delivered-To: mmusic@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id C65091B34C1 for <mmusic@ietfa.amsl.com>; Wed, 8 Apr 2015 10:21:21 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.31
X-Spam-Level:
X-Spam-Status: No, score=-1.31 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, J_CHICKENPOX_15=0.6, T_RP_MATCHES_RCVD=-0.01] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id sKyDjmexSj0Z for <mmusic@ietfa.amsl.com>; Wed, 8 Apr 2015 10:21:19 -0700 (PDT)
Received: from nostrum.com (raven-v6.nostrum.com [IPv6:2001:470:d:1130::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 84FF21B34C9 for <mmusic@ietf.org>; Wed, 8 Apr 2015 10:21:16 -0700 (PDT)
Received: from Orochi.local (99-152-145-110.lightspeed.dllstx.sbcglobal.net [99.152.145.110]) (authenticated bits=0) by nostrum.com (8.15.1/8.14.9) with ESMTPSA id t38HL7vq051431 (version=TLSv1.2 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 8 Apr 2015 12:21:09 -0500 (CDT) (envelope-from adam@nostrum.com)
X-Authentication-Warning: raven.nostrum.com: Host 99-152-145-110.lightspeed.dllstx.sbcglobal.net [99.152.145.110] claimed to be Orochi.local
Message-ID: <55256383.9050708@nostrum.com>
Date: Wed, 08 Apr 2015 12:21:07 -0500
From: Adam Roach <adam@nostrum.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:31.0) Gecko/20100101 Thunderbird/31.6.0
MIME-Version: 1.0
To: Flemming Andreasen <fandreas@cisco.com>, mmusic <mmusic@ietf.org>
References: <5519B9B2.9090701@cisco.com>
In-Reply-To: <5519B9B2.9090701@cisco.com>
Content-Type: text/plain; charset="utf-8"; format="flowed"
Content-Transfer-Encoding: 7bit
Archived-At: <http://mailarchive.ietf.org/arch/msg/mmusic/6n6gND_S80izDGNWaYYjygDu61Y>
Cc: "draft-ietf-mmusic-sdp-bundle-negotiation@tools.ietf.org" <draft-ietf-mmusic-sdp-bundle-negotiation@tools.ietf.org>, "mmusic-chairs@tools.ietf.org" <mmusic-chairs@tools.ietf.org>
Subject: Re: [MMUSIC] WGLC for draft-ietf-mmusic-sdp-bundle-negotiation-19
X-BeenThere: mmusic@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Multiparty Multimedia Session Control Working Group <mmusic.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/mmusic>, <mailto:mmusic-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/mmusic/>
List-Post: <mailto:mmusic@ietf.org>
List-Help: <mailto:mmusic-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/mmusic>, <mailto:mmusic-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 08 Apr 2015 17:21:21 -0000

On 3/30/15 16:01, Flemming Andreasen wrote:
> Please review and provide any comments you may have on the document 
> changes by Monday, April 13, 2015. Comments should be sent to the 
> document authors and the MMUSIC WG list. If you review the document 
> but do not have any comments, please send a note to that effect as well.

I have reviewed the body of the document, and have a number of comments. 
These are of varying severity, ranging from editorial suggestions to 
proposed normative changes. They appear in document order.

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

In the Abstract:
   "This
    specification also updates sections 5.1, 8.1 and 8.2 of RFC 3264 to
    allow an answerer to assign a non-zero port value to an "m=" line in
    an SDP answer, even if the "m=" line in the associated SDP offer
    contained a zero port values.

This seems to be a bit of a deep dive for the abstract, and I would propose
removing it. If it does remain, it needs to include something like "under
certain circumstances." But I think removal is the better option.

The introduction should also qualify the similar statement in this 
paragraph:

    This specification also updates sections 5.1, 8.1 and 8.2 of RFC 3264
    [RFC3264].  The update allows an answerer to assign a non-zero port
    value to an "m=" line in an SDP answer, even if the "m=" line in the
    associated SDP offer contained a zero port value.

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

Especially because the term is overloaded, you should expand the meaning
of "SDES" on first use; something like:

   "This specification also defines a new Real-time Transport Protocol
    (RTP) [RFC3550] Source Description (SDES) item..."

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

Terminology: Since we are using '"m=" line' in a way that isn't (to my
knowledge) defined in another document, this section should include a
definition for that term. Yes, it's in the introduction, but that's not 
where
people look for definitions of terms.

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

Section 5 should cite RFC 4961 for the definition of "symmetric RTP."

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

Section 5 has this normative requirement:

    A given address:port
    combination MUST NOT be used for sending media associated with
    multiple BUNDLE groups.

It's not clear what this gains us. Everywhere else, we only require a unique
5-tuple per bundle. That seems like the correct restriction to impose.
(If we change this, it also has impacts on section 8.3.3)

---------------------------------------------------------------------------
Section 5:

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

Repunctuate as:

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

(cf. <https://www.google.com/search?q=restrictive+clause>)

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

Section 6:
   This whole section feels really out of place here; it's assuming that the
   reader has knowledge about BUNDLE offer/answer handling that he won't 
learn
   until reading section 8. I would propose that you leave the attribute
   definition in section 14.3, and move the semantics into section 8.

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

Section 6:
   "In order to ensure that an answerer that does not supports the BUNDLE"

s/supports/support/

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

Section 6:

    NOTE: Once an offerer BUNDLE address has been selected, the offerer
    can ensure that an bundled "m=" line is accepted by the answerer only
    if the answerer keeps the "m=" line within the associated BUNDLE
    group by assigning the offerer BUNDLE address to the "m=" line. If
    the answerer does not keep that "m=" line within the BUNDLE group,
    the answerer will reject it.  Therefore, the SDP 'bundle-only'
    attribute is not needed in such cases

I can't make any sense of that paragraph, and it's only partially 
because the
passive "has been selected" doesn't indicate who is performing the 
selection.
In particular, it doesn't sound like the offerer is *ensuring* anything. 
Maybe
we're trying to say he can detect something?  But even with that
interpretation, it's not clear what circumstances it's trying to say don't
require the use of 'bundle-only.' Or is this trying to say that subsequent
offers (as defined in section 2) don't need to use 'bundle-only' because
you know whether the peer supports bundle? That makes some sense, but it's
really hard to get that meaning out of the text.

Let me take a stab at something.

    NOTE: Subsequent offers do not need to include the 'bundle-only' 
attribute,
    since the offerer will already know whether its peer supports the BUNDLE
    mechanism. With that knowledge, the offerer can assign a new 'm=' 
line to
    an existing BUNDLE address. By doing so, they ensure that the answerer
    either accepts the line into the BUNDLE, or completely rejects it.

If that's what we mean, I propose replacing the paragraph with it. If it's
not, then the paragraph needs to be rewritten. Also, if that's what we mean,
then it needs corresponding text in section 8.3.1 (although if you take the
suggestion to move the semantics from section 6 into section 8, it might
make more sense to just put it there only rather than describe it in two
places).

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

Section 8.1:

    The offerer and answerer MUST follow the rules and restrictions
    defined in Section 7 when creating offers and answers.

This adds nothing. I would propose removing it (or, if you don't want to
remove it, I would propose that consistency calls for having every section
normatively require that implementors follow the normative statements of 
every
other section in the document).

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

Section 8.2.1:

    o  Add an SDP 'group:BUNDLE' attribute to the offer;

Replace with:

    o  Add an SDP 'group:BUNDLE' attribute to the offer at the session 
level;

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

Section 8.3.1:

    When an answerer generates an answer, which contains a BUNDLE group,

Replace with:

    When an answerer generates an answer that contains a BUNDLE group,

(cf. <https://www.google.com/search?q=which+that>)

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

The procedure described in Section 8.3.2 has a rather unfortunate property
that I'm not sure we want. If I were to offer something like:

a=group:BUNDLE foo bar
m=video 20002 RTP/AVP 97
a=rtpmap:97 H261/90000
a=mid:foo
m=video 0 RTP/AVP 97 98
a=rtpmap:97 H261/90000
a=rtpmap:98 VP8/90000
a=bundle-only
a=mid:bar

And the remote endpoint wanted to reject the first stream, it would be 
forced
to also reject the second. The historical intention of using 
"bundle-only" was
as a mechanism for UDP port preservation on the offerer's side. This 
procedure
unintentionally turns it into a semantic binding among streams in bundle.

I think we could restore the original purpose of the bundle-only handling
if we used the port from the rejected 'm=' line containing the BUNDLE-tag
for any 'bundle-only' lines.

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

Section 8.3.4 is structured very awkwardly. It calls out
two conditions that preclude moving an m= line out of a bundle (shared
address, bundle-only), and one that allows it. It would be much clearer
if it were stated in those terms rather than describing the rejection of
a media stream as if it were the same thing as accepting a media stream
with different addressing information.

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

Section 8.4.1:

    When an offerer receives an answer, if the answer contains a BUNDLE
    group, the offerer MUST check that any bundled "m=" line in the
    answer was indicated as bundled in the associated offer.

This is backwards as compared to the logic described in the section.
The remainder of the text talks about checking whether that bundled
"m=" lines in the *offer* appear in the *answer* (and, if they don't,
moving them out of the bundle).

If the answer has a bundle that contains an m-line that wasn't bundled
in the offer, it's an error.

Also, 8.4.1 is the only subsection in 8.4, which is otherwise empty.
I suggest removing 8.4.1, and putting its contents directly in 8.4.

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

The optionality in section 8.5.2 seems unnecessarily complex, and it's
difficult to see what it gains us. Why don't we simply specify that each
pre-existing m= line MUST have a single shared address?

To be clear: if we keep this behavior, then I think we want the answer 
to that
question in the document.

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

Section 8.5.4 should explicitly mention the case in which the line being 
moved
out is the one identified by the BUNDLE-tag. I think all we need to say is
that the BUNDLE-tag for a bundle changes if the corresponding m= line is
removed from the bundle.

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

Section 9.1: "publically" is more conventionally spelled "publicly"

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

Section 10.2:

    An offerer and answerer can in an offer and answer inform each other
    which SSRC values they will use inside sent RTP/RTCP packets, by
    associating one or more SDP 'ssrc' attributes [RFC5576] with each
    bundled "m=" line which contains a payload type value that is also
    used inside another bundled "m=" line.

That's really hard to follow. I propose reformulating along the lines of:

    Peers to a session can inform each other which SSRC values they will use
    for RTP and RTCP through the use of the SDP 'ssrc' attribute [RFC5576].
    To allow for proper association with this mechanism, the 'ssrc' 
attribute
    needs to appear in each "m=" line that shares a payload type with any
    other "m=" line in the same bundle.

Also, doesn't the final paragraph of this section kind of make the rest
of the section a waste of space?

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

Section 10.3.1:

    When a BUNDLE group, which contains RTP based media, is created,...

Change to:

    When a BUNDLE group that contains RTP based media is created,...

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

Section 10.3 (and its subsections) doesn't clearly explain where RTCP 
will be
received in the various described scenarios. In particular, I believe we 
need
to clarify that, while users might indicate a bunch of different rtcp ports
(using the 'rtcp' attribute) in bundled "m=" lines, if the answer accepts an
"m=" line into a bundle, then the rtcp port indicated in the section 
associated
with the selected BUNDLE address will be used.

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

11.2.3:

    When an answerer generates an answer, which contains a BUNDLE group,

Replace with:

    When an answerer generates an answer that contains a BUNDLE group,

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

Section 12, general:

Figuring out what changed in these rather large swaths of text is difficult.
It would be very helpful if these were broken down like:

12.2 Changes to section 5.1 (2nd paragraph) of RFC 3264

   The final sentence of the paragraph is modified to change the meaning
   of port zero.

12.2.1 Original Text
   ...
12.2.2 New Text
   ...
12.3 Changes to section 8.2 (2nd paragraph) of RFC 3264
   ...
12.3.1 Original Text
   ...
12.3.2 New Text
   ...

etc.

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

Section 13.1:

    The
    endpoint informs the remote endpoint about the identification-tag
    using the procedures in [RFC5888], and the remote endpoint then
    inserts the identification-tag in RTCP- and RTP packets sent towards
    the other endpoint.

It's really hard to follow which endpoint is doing what. Perhaps something
like this would be clearer:

    A media recipient informs the media sender about the identification-tag
    associated with an "m=" line through the use of an 'mid' attribute
    [RFC5888]. The media sender then inserts the identification-tag in RTCP
    and RTP packets sent to the media recipient.

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

Section 14:

There is no IANA section that registers the "BUNDLE" token for this 
registry:
http://www.iana.org/assignments/sdp-parameters/sdp-parameters.xhtml#sdp-parameters-13

For sections 14.2 and 14.3, I believe it is traditional for WG items to list
the WG as contact for IANA registrations rather than individual document
authors.

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

I have not reviewed the examples or the appendix.

/a