Re: [rtcweb] JSEP: RTP demux algorithms

Jonathan Lennox <jonathan@vidyo.com> Fri, 16 September 2016 18:59 UTC

Return-Path: <prvs=3067728013=jonathan@vidyo.com>
X-Original-To: rtcweb@ietfa.amsl.com
Delivered-To: rtcweb@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 994D212B2EE for <rtcweb@ietfa.amsl.com>; Fri, 16 Sep 2016 11:59:41 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.83
X-Spam-Level:
X-Spam-Status: No, score=-1.83 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_SORBS_WEB=0.77, SPF_PASS=-0.001] autolearn=ham autolearn_force=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 oXKU32s-HbuV for <rtcweb@ietfa.amsl.com>; Fri, 16 Sep 2016 11:59:39 -0700 (PDT)
Received: from mx0b-00198e01.pphosted.com (mx0b-00198e01.pphosted.com [67.231.157.197]) (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 1A5DF12B293 for <rtcweb@ietf.org>; Fri, 16 Sep 2016 11:59:39 -0700 (PDT)
Received: from pps.filterd (m0073110.ppops.net [127.0.0.1]) by mx0b-00198e01.pphosted.com (8.16.0.17/8.16.0.17) with SMTP id u8GIxYdE010955; Fri, 16 Sep 2016 14:59:36 -0400
Received: from mail.vidyo.com ([162.209.16.214]) by mx0b-00198e01.pphosted.com with ESMTP id 25ccx4x7p3-1 (version=TLSv1 cipher=AES128-SHA bits=128 verify=NOT); Fri, 16 Sep 2016 14:59:36 -0400
Received: from 492132-EXCH1.vidyo.com ([fe80::50:56ff:fe85:4f77]) by 492133-EXCH2.vidyo.com ([fe80::50:56ff:fe85:6b62%13]) with mapi id 14.03.0195.001; Fri, 16 Sep 2016 13:59:36 -0500
From: Jonathan Lennox <jonathan@vidyo.com>
To: Cullen Jennings <fluffy@iii.ca>
Thread-Topic: [rtcweb] JSEP: RTP demux algorithms
Thread-Index: AQHSEEqiRc9bJSa2qkmm5GrI8oyLzKB8zCkA
Date: Fri, 16 Sep 2016 18:59:34 +0000
Message-ID: <66CB8C7B-56D1-4AC9-B0F8-4F1689E2CA89@vidyo.com>
References: <CAOW+2dtN-tfmnsep8FjOFD2R2uZbUwZxHfDGBwx3N13Ue9Nb2w@mail.gmail.com> <E1B53795-4B14-408B-BFF1-A305EE45AD20@iii.ca>
In-Reply-To: <E1B53795-4B14-408B-BFF1-A305EE45AD20@iii.ca>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [160.79.219.114]
Content-Type: multipart/alternative; boundary="_000_66CB8C7B56D14AC9B0F84F1689E2CA89vidyocom_"
MIME-Version: 1.0
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2016-09-16_09:, , signatures=0
X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=0 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1609020000 definitions=main-1609160240
Archived-At: <https://mailarchive.ietf.org/arch/msg/rtcweb/qQoodfwItBvKMpnZqJg6kKtwEX4>
Cc: "rtcweb@ietf.org" <rtcweb@ietf.org>, Robin Raymond <robin@myjoe.com>
Subject: Re: [rtcweb] JSEP: RTP demux algorithms
X-BeenThere: rtcweb@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: Real-Time Communication in WEB-browsers working group list <rtcweb.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rtcweb>, <mailto:rtcweb-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/rtcweb/>
List-Post: <mailto:rtcweb@ietf.org>
List-Help: <mailto:rtcweb-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rtcweb>, <mailto:rtcweb-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 16 Sep 2016 18:59:41 -0000

I’m not going to come up with beverage names for my examples, but feel free to make up your own.

1. The PT are all the same.  An RTCP source description for an SSRC contains a MID.  This latches the MID.  Later, RTP packets with this SSRC arrive without a MID. They go to the place matching the MID that was in RTCP.

2. The PT are all the same.  A packet contains MID1.  It goes to the place that matches MID1, latching the SSRC to MID1.  Later, a packet with the same SSRC contains MID2. This moves the latching, so the SSRC is now latched to MID2.


On Sep 15, 2016, at 6:18 PM, Cullen Jennings <fluffy@iii.ca<mailto:fluffy@iii.ca>> wrote:


To propose a few use case….

“Whiskey & Soda Example”
The PT are all the same. Early packets, and any packets after a SSRC change, contain a MID. If the packet has  MID, it goes to the place that matches that MID *and* it latches that SSRC so any future SSRC that don’t have a MID go the to the same place.

“Coke Classic Example”
The PT are all unique. The SSRC change. There is no RID, MID, FEC, or RTX. The packets get delivered to the thing with the matching PT.

“Bloddy Mary Example”
The PT are the same. The SSRC do not changed and are signalled in SDP. There is no MID, RID, etc in the RTP.  The packets go to the thing the SSRC signalling would have indicated.

“Diet Coke Example”
The PT are all unique. The packet has a MID. The MID corresponds to a an m-line that does not have PT associated with it that match the PT. (the PT is from a different m-line). The packets gets dropped (or cause event in ORTC). [ Note I think of this that the MID sends it to the right m-line aka Receiver, but then that does not have a codec for that PT so it gets dropped. ]

“Diet Pepsi Example”
The PT are all unique. The packet has a SSRC. The SSRC does not correspond to any SSRC that were signalled for the m-line that the PT is on. The packet goes to the thing associated with that PT ignoring any SSRC.

“Red Bull Example”
The packet has a MID that does not match any MID in the signalling. The packets gets dropped (or event in ORTC).






On Sep 14, 2016, at 10:49 AM, Bernard Aboba <bernard.aboba@gmail.com<mailto:bernard.aboba@gmail.com>> wrote:

There is now a JSEP PR relating to RTP demux algorithms:
https://github.com/rtcweb-wg/jsep/pull/320

Rather than commenting in detail on that PR in this post, I would like to prove some thoughts on how we evaluate proposed RTP demux algorithms.

The goal of an RTP demux algorithm is to determine whether an incoming RTP packet received on a DtlsTransport can be forwarded to one of the RtpReceivers attached to that DtlsTransport.  If none of the RtpReceivers qualify, then the packet is either dropped (WebRTC 1.0) or generates an RTP unhandled event (ORTC).

In principle, RTP demux algorithms do not seem complicated, since they often can be expressed in less than half a dozen steps, typically with less than a page of text.

However, in practice the difficulty has turned out to be not in stating an algorithm, but in evaluating whether it is correct. This challenges include:

1. Agreement on a set of use cases and desired outcomes that a proposed algorithm must satisfy.  Think of this as a set of regression tests that insure that a proposed algorithm behaves as we expect, as well as ensuring that changes to that algorithm do not result in unintended consequences.

2. Agreement on all the inputs that the algorithm takes into account.  This includes fields within the RTP packet (e.g. SSRC, PT, RID, MID, etc.) as well as methods within the API (e.g. setLocalDescription, setRemoteDescription, setParameters, etc.).

With respect to Issue #1, some of the trickiest use cases involve both PT and SSRC signaling, SSRC "latching" and handling FEC and RTX.  Examples include:
    a. Change of SSRCs (e.g. due to conflict).
    b. Codec switching (e.g. changing PT but same SSRC, or changing both PT and SSRC).
    c. Use of both FEC and RTX (and perhaps RTX of FEC).

IMHO it would be useful to come up a few (less than half a dozen) use cases with agreed-upon outcomes.

With respect to Issue #2, the proposed algorithms so far look at the SSRC & PT fields in the RTP header as well as the MID RTP extension.  However, I have not seen algorithms which take into account the role of the RID RTP extension.  So agreement on whether the RID needs to be considered or not would be helpful.

Also, for WebRTC 1.0 it would appear to me that the algorithm will depend on the inputs to the setLocalDescription/setRemoteDescription methods, so that there is a potential dependency on the signaling state of the PeerConnection.

Overall, I believe that the discussion of RTP demux algorithms is likely to go more smoothly (and conclude more quickly) if we get agreement on these meta-issues upfront.












_______________________________________________
rtcweb mailing list
rtcweb@ietf.org<mailto:rtcweb@ietf.org>
https://www.ietf.org/mailman/listinfo/rtcweb

_______________________________________________
rtcweb mailing list
rtcweb@ietf.org<mailto:rtcweb@ietf.org>
https://www.ietf.org/mailman/listinfo/rtcweb