Re: [MMUSIC] Associating packets with m-lines in a bundle

Colin Perkins <> Mon, 27 May 2013 16:15 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id DE12F21F96CD for <>; Mon, 27 May 2013 09:15:21 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -105.899
X-Spam-Status: No, score=-105.899 tagged_above=-999 required=5 tests=[AWL=0.100, BAYES_00=-2.599, J_CHICKENPOX_14=0.6, RCVD_IN_DNSWL_MED=-4, USER_IN_WHITELIST=-100]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id CeinMWw55x6g for <>; Mon, 27 May 2013 09:15:16 -0700 (PDT)
Received: from ( []) by (Postfix) with ESMTP id 50EDA21F9675 for <>; Mon, 27 May 2013 09:15:16 -0700 (PDT)
Received: from [] (port=41810 helo=[]) by with esmtpsa (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.72) (envelope-from <>) id 1Uh04e-0002Gj-8p; Mon, 27 May 2013 17:15:04 +0100
Mime-Version: 1.0 (Apple Message framework v1283)
Content-Type: text/plain; charset="us-ascii"
From: Colin Perkins <>
In-Reply-To: <>
Date: Mon, 27 May 2013 17:15:03 +0100
Content-Transfer-Encoding: quoted-printable
Message-Id: <>
References: <> <BLU403-EAS11291D50BCA39955DE3C9C393940@phx.gbl> <>
To: Paul Kyzivat <>
X-Mailer: Apple Mail (2.1283)
X-BlackCat-Spam-Score: -28
X-Mythic-Debug: Threshold = On =
Subject: Re: [MMUSIC] Associating packets with m-lines in a bundle
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Multiparty Multimedia Session Control Working Group <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Mon, 27 May 2013 16:15:22 -0000

On 27 May 2013, at 16:55, Paul Kyzivat wrote:
> On 5/24/13 3:34 PM, Bernard Aboba wrote:
>> On May 23, 2013, at 11:50, "Paul Kyzivat" <> wrote:
>>> After all the discussion in the meeting today, I thought it would be good to unwind all the indenting and start a new thread on one issue that is part of the "demux" problem:
>>> IMO the following should obviously be a truism. I want to know if all agree.
>>> If an O/A exchange negotiates a bundle with multiple m-lines,
>>> then attributes in those m-lines and the associated media sections must provide sufficient information to associate each incoming packet on the 5-tuple to exactly *one* of those m-lines.
>> [BA] I would argue that this statement needs to be true for *both* RTP and RTCP packets.
> I don't know enough to comment on that, but it sounds right.
>>> (If it doesn't, then there was no point in including those m-lines in the bundle.)
>>> For instance a=ssrc, if unique to one m-line, can bind packets with that SSRC to the m-line.
>> [BA] That is only necessary for RTP (and RTCP) if the PT is not unique to an m line; otherwise PT demux is sufficient for RTP.  For RTCP the situation is more complicated. If we only need to bind RTCP packets from RTP senders, we can build an SSRC to PT to m line table dynamically, based on SSRCs and PTs seen in RTP packets.  However if we get a RR from a source that has not yet sent, we can't map it to an m line without a=ssrc if BUNDLE is in use.
> I discussed that elsewhere. There are several features that, when present in the SDP and in the packet, can be used to bind the packet to the m-line. The PT has the advantage that it is always present in RTP m-lines, and is always present in RTP packets. But as you mention, I guess it is not present in RTCP packets.

RTCP operates at a different level, so it's not clear why it needs to be bound to an m= line. Use the SSRC to group related RTP and RTCP packets according to source, and match them to a de-jitter buffer and the state for RTCP processing. Use the PT to match those sources with the payload format, m= line and the corresponding decoding and rendering context.

> I'll also note that PT doesn't help when bundling non-rtp m-lines, such as DTLS/SCTP.
>>> If a property such as SSRC is used this way, then there is the possibility of receiving packets that don't match any of the m-lines. I think we ought to address that, by defining some syntax to specify what to do with packets that don't match any m-line. This might be to specify one m-line as the default, or that packets that don't match be discarded.
>> [BA] I do not believe that a default m line makes sense for RTCP packets that can't be bound to an m line.  Discard, while undesirable, seems like the only option. However this could create problems in diagnostics in some cases.
> Again, I'll defer to others that know more about this.

Match the RTCP to the RTP based on the SSRC, and process it. There is no need to discard the RTCP in this case.

Yes, you need to define what to do about an RTP source that doesn't match to an m= line, but that's at a higher-layer than the RTP demultiplexing. The issue of if/how/where an RTP source is decoded should be separate to the issue of how the RTP and RTCP packets comprising that source are demultiplexed, fed to a de-jitter buffer, reported in RTCP, etc. 

Colin Perkins