Re: [MMUSIC] Thoughts on bundling mechanisms

Harald Alvestrand <harald@alvestrand.no> Sat, 02 February 2013 16:54 UTC

Return-Path: <harald@alvestrand.no>
X-Original-To: mmusic@ietfa.amsl.com
Delivered-To: mmusic@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 86E8121F8629 for <mmusic@ietfa.amsl.com>; Sat, 2 Feb 2013 08:54:18 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -108.64
X-Spam-Level:
X-Spam-Status: No, score=-108.64 tagged_above=-999 required=5 tests=[AWL=-1.641, BAYES_00=-2.599, J_CHICKENPOX_12=0.6, J_CHICKENPOX_13=0.6, J_CHICKENPOX_14=0.6, J_CHICKENPOX_15=0.6, J_CHICKENPOX_17=0.6, J_CHICKENPOX_18=0.6, RCVD_IN_DNSWL_HI=-8, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 00ZTccELQVGI for <mmusic@ietfa.amsl.com>; Sat, 2 Feb 2013 08:54:17 -0800 (PST)
Received: from eikenes.alvestrand.no (eikenes.alvestrand.no [158.38.152.233]) by ietfa.amsl.com (Postfix) with ESMTP id E506D21F84BA for <mmusic@ietf.org>; Sat, 2 Feb 2013 08:54:16 -0800 (PST)
Received: from localhost (localhost [127.0.0.1]) by eikenes.alvestrand.no (Postfix) with ESMTP id 93B4D39E140; Sat, 2 Feb 2013 17:54:14 +0100 (CET)
X-Virus-Scanned: Debian amavisd-new at eikenes.alvestrand.no
Received: from eikenes.alvestrand.no ([127.0.0.1]) by localhost (eikenes.alvestrand.no [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id yk1Mci-4M5NG; Sat, 2 Feb 2013 17:54:12 +0100 (CET)
Received: from [IPv6:2001:470:de0a:27:700d:b80:cac1:2ae1] (unknown [IPv6:2001:470:de0a:27:700d:b80:cac1:2ae1]) by eikenes.alvestrand.no (Postfix) with ESMTPSA id 2B39139E070; Sat, 2 Feb 2013 17:54:12 +0100 (CET)
Message-ID: <510D44B1.5050707@alvestrand.no>
Date: Sat, 02 Feb 2013 17:54:09 +0100
From: Harald Alvestrand <harald@alvestrand.no>
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130106 Thunderbird/17.0.2
MIME-Version: 1.0
To: "Dale R. Worley" <worley@ariadne.com>
References: <201302012338.r11NcgY31009097@shell01.TheWorld.com>
In-Reply-To: <201302012338.r11NcgY31009097@shell01.TheWorld.com>
Content-Type: text/plain; charset="ISO-8859-1"; format="flowed"
Content-Transfer-Encoding: 7bit
Cc: mmusic@ietf.org
Subject: Re: [MMUSIC] Thoughts on bundling mechanisms
X-BeenThere: mmusic@ietf.org
X-Mailman-Version: 2.1.12
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: Sat, 02 Feb 2013 16:54:18 -0000

On 02/02/2013 12:38 AM, Dale R. Worley wrote:
> After reading
>      draft-alvestrand-one-rtp-01
>      draft-holmberg-mmusic-sdp-mmt-negotiation-00
>      draft-ietf-mmusic-sdp-bundle-negotiation-00
>      draft-nandakumar-rtcweb-sdp-00
> here are my thoughts on bundling:
>
> 1. Concept
>
> Overall, we need to fix the concept that a bundle is a container for a
> group of media streams, media streams as they are specified by m=
> lines.  We need to be able to bundle multiple media streams in a way
> that allows them to be demultiplexed accurately, even if different
> streams share the same media types, codecs, etc.
>
> In this regard, the transport protocol, transport ports, encryption
> specifications, ICE specifications, and (less obviously) payload type
> numbers are considered to be part of the transport mechanism and not
> part of the media stream properties.
>
> The m= line for a bundle should have all the "transport" attribues
> needed for the bundle, while the m= lines for the constituent media
> streams would have the attributes that describe the media stream
> itself.


This is an interesting concept - if I understand you correctly, you say 
that instead of having an m-line describe one or more media streams + a 
set of transport attributes, you have two kinds of m-lines, one of which 
describes transport attributes and the other one of which specifies 
media information.

This is a new concept - I think it would be an interesting evolution of 
SDP - but I have problems seeing how to make any kind of one-exchange 
compatibility mode function with this model. I may be misunderstanding 
your suggestion.



>
> (This distinction gets undermined if we use payload types to
> demultiplex the media streams, as the bundle m= line has to list the
> payload types, and thus probably the codec names and parameters, which
> are really constituent-level information.  One solution would be to
> require that if a bundle payload type is demultiplexed to a particular
> m= line, then that m= line must have the same payload type with the
> same codec.  Indeed, there's no particular reason for the bundle m=
> line to have a=fmtp attributes at all, though the m= line should
> probably list all the payload types the bundle RTP is going to use.)

I think we all agree that multiplexing different media streams using 
payload type is a horrible idea, and nobody should do that.

>
> 2. Configuration of m= lines
>
> There needs to be a fallback mechanism if the answerer does not
> understand the bundling mechanism.
> draft-ietf-mmusic-sdp-bundle-negotiation (BUNDLE) specifies that a
> bundle of m= lines all specify the same port number.  That is OK if
> the answerer understands BUNDLE, but if the answerer does not
> understand BUNDLE, the SDP is malformed (per RFC 4566 section 5.14),
> and the answerer may reject it as such.  Because of this, we need to
> adopt the mechanism of draft-alvestrand-one-rtp (TOGETHER), where each
> m= line in the offer has a distinct port number.
>
> There also needs to be a way for the answerer to individually accept
> or reject media streams within the bundle, that is, the m= lines
> within the bundle.  TOGETHER does not accomplish that, because the
> first m= line in the bundle is the one used to send/receive media (if
> the bundle is accepted), and so it cannot be rejected.  As
> draft-alvestrand-one-rtp says
>
>     The answerer cannot refuse the first m= section and establish the
>     call.  [[NOTE IN DRAFT: This could be relaxed by allowing it when ICE
>     is in use, or saying that the first non-zero port number is used.
>     Both lead to nonobvious edge cases.  Is the extra complexity worth
>     it?]]
>
> draft-holmberg-mmusic-sdp-mmt-negotiation (MMT) avoids this problem by
> associating with each bundle a "master" m= line with media type
> "anymedia".  If the bundle is accepted, this m= line provides the
> transport information.  If the bundle is rejected, then the answerer
> accepts or rejects each constituent m= line separately, and that m=
> lines attributes determine the transport mechanism.
>
> However, MMT needs to be updated to match the concept that the
> anymedia RTP stream multiplexes what would be the RTP streams of one
> or more constituent media streams.  Currently, it assumes that
> identifying the media type of an incoming RTP packet is sufficient
> demultiplexing.  As a consequence of this, it needs to be modified so
> that if the answerer accepts the MTT bundle (and thus, the anymedia m=
> line), it still must accept or reject each constituent m= line
> individually.
>
> 3. Demultiplexing RTP
>
> MMT envisions that the media data is demultiplexed based on the
> payload types:  The m=anymedia description contains a set of a=mmttype
> attributes that (I think should) provide the mapping from the payload
> types to the mid values of the constituent m= lines.  (The codec for
> each payload type is provided by a=fmtp attributes of the m=anymedia
> description as normal.)

I disagree with that characterization. All of MMT, BUNDLE and TOGETHER 
agree that demultiplexing is based on SSRC. The payload type tells you 
what type the payload is.

>
> Note that this does not allow recovery of the payload types that would
> have been used for that codec and m= line (if multiple payload types
> for that m= line have the same codec).  But we assume that payload
> types are a transport matter and are of no interest to the higher
> layers of media processing.

I don't understand this sentence.
The payload type is "recovered" by looking at the 7-bit field called 
"payload type" in the RTP header of each RTP packet. It's hardly a 
transport matter at all.

>
> But perhaps instead, we should require that there be a matching
> payload type for the constituent m= line and use its a=fmtp
> attribute.  That allows us to not duplicate any codec specifications
> from the constituent m= lines into the m=anymedia line, and does allow
> recovering the "original" payload types.
>
> 4. RTCP
>
> My knowledge of RTCP is very thin.  But it's clear that incoming RTCP
> over the bundle transport must be demultiplexable to the point that we
> can separate which RTCP information is applicable to which constituent
> media stream.  My understanding is that RTCP information is identified
> by the SSRC of the media source it is reporting on, and that it is
> paired with the right media stream by examining the SSRC value in the
> RTP packet headers.  If so, demultiplexing RTCP requires no new
> protocol facilities.
>
> In regard to bandwidth consumption, I assume that the bundle's RTCP
> stream is essentially the union of the RTCP streams (or rather, the
> RCTP packets thereof, which are packed into the transport-level RTCP
> packets) that would be generated for each constituent m= line.  In
> particular, the frequency of the RTCP packets for a particular media
> stream is scaled to the needs of that media stream, rather than there
> being RTCP reports at same frequency for all media streams.  Thus, as
> long as the RTCP reports on each media stream are less than 5% of the
> RTP bandwidth for that media stream, the aggregate RTCP bandwidth is
> less then 5% of the aggregate RTP bandwidth.
>
> 5. Examples
>
> Incorporating these suggestions into
> draft-holmberg-mmusic-sdp-mmt-negotiation, I get this example:
>
>     SDP Offer (MMT offered)
>
>         v=0
>         o=alice 2890844526 2890844526 IN IP4 host.atlanta.com
>         s=
>         c=IN IP4 host.atlanta.com
>         t=0 0
>         a=group:MMT foo bar zoe
>         m=audio 10000 RTP/AVP 0 8 97
>         a=mid:foo
>         b=AS:200
>         a=rtpmap:0 PCMU/8000
>         a=rtpmap:8 PCMA/8000
>         a=rtpmap:97 iLBC/8000
>         m=video 20000 RTP/AVP 31 32
>         a=mid:bar
>         b=AS:1000
>         a=rtpmap:31 H261/90000
>         a=rtpmap:32 MPV/90000
>         m=anymedia 30000 RTP/AVP 0 8 97 31 32
>         a=mid:zoe
>         a=mmtype:foo 0 8 97
>         a=mmtype:bar 31 32

This seems to indicate that zoe "incorporates by reference" the foo and 
bar m-lines.
A better name in this case might be "m=transport" rather than "m=anymedia".

>
>     SDP Answer (MMT accepted, including both constituent streams)
>
>         v=0
>         o=bob 2808844564 2808844564 IN IP4 host.biloxi.com
>         s=
>         c=IN IP4 host.biloxi.com
>         t=0 0
>         a=group:MMT foo bar zoe
>         m=audio 1 RTP/AVP 0
>         a=mid:foo
>         a=rtpmap:0 PCMU/8000
>         m=video 1 RTP/AVP 32
>         a=mid:bar
>         a=rtpmap:32 MPV/90000
>         m=anymedia 60000 RTP/AVP 0 32
>         a=mid:zoe
>         a=mmtype:foo 0
>         a=mmtype:bar 32

Query: Are you making the port number 1 in the m=audio and m=video lines 
carry special meaning?

>
>     SDP Answer (MMT not accepted, but both constituent streams accepted)
>
>         v=0
>         o=bob 2808844564 2808844564 IN IP4 host.biloxi.com
>         s=
>         c=IN IP4 host.biloxi.com
>         t=0 0
>         m=audio 40000 RTP/AVP 0
>         a=mid:foo
>         a=rtpmap:0 PCMU/8000
>         m=video 50000 RTP/AVP 32
>         a=mid:bar
>         a=rtpmap:32 MPV/90000
>         m=anymedia 0 RTP/AVP 0
>         a=mid:zoe
>         [The a=mid attributes may be missing if the answerer does not
>         understand SDP grouping.]
>
>     SDP Offer with ICE (multiplexed media types offered)
>
>         v=0
>         o=alice 2890844526 2890844526 IN IP4 host.atlanta.com
>         s=
>         c=IN IP4 host.atlanta.com
>         t=0 0
>         a=group:MMT foo bar zoe
>         m=audio 10000 RTP/AVP 0 8 97
>         a=mid:foo
>         b=AS:200
>         a=rtpmap:0 PCMU/8000
>         a=rtpmap:8 PCMA/8000
>         a=rtpmap:97 iLBC/8000
>         a=candidate:1 1 UDP 1694498815 host.atlanta.com 10000 typ host
>         m=video 20000 RTP/AVP 31 32
>         a=mid:bar
>         b=AS:1000
>         a=rtpmap:31 H261/90000
>         a=rtpmap:32 MPV/90000
>         a=candidate:1 1 UDP 1694498815 host.atlanta.com 20000 typ host
>         m=anymedia 30000 RTP/AVP 0 8 97 31 32
>         a=mid:zoe
>         a=mmtype:foo 0 8 97
>         a=mmtype:bar 31 32
>         a=candidate:1 1 UDP 1694498815 host.atlanta.com 30000 typ host

Based on this offer, I don't quite see what this offer buys you above 
the MMT proposal.