Re: [rtcweb] #15: Section 4.8: SSRC signaling

worley@ariadne.com (Dale R. Worley) Thu, 25 April 2013 22:21 UTC

Return-Path: <worley@shell01.TheWorld.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 3E3B821F96DD for <rtcweb@ietfa.amsl.com>; Thu, 25 Apr 2013 15:21:06 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.117
X-Spam-Level:
X-Spam-Status: No, score=0.117 tagged_above=-999 required=5 tests=[RCVD_IN_DNSWL_LOW=-1, RCVD_IN_SORBS_WEB=1.117]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id tDGGgQfSRfST for <rtcweb@ietfa.amsl.com>; Thu, 25 Apr 2013 15:21:05 -0700 (PDT)
Received: from TheWorld.com (pcls4.std.com [192.74.137.144]) by ietfa.amsl.com (Postfix) with ESMTP id 52C1E21F96C4 for <rtcweb@ietf.org>; Thu, 25 Apr 2013 15:21:05 -0700 (PDT)
Received: from shell.TheWorld.com (svani@shell01.theworld.com [192.74.137.71]) by TheWorld.com (8.14.5/8.14.5) with ESMTP id r3PMKVaX014304; Thu, 25 Apr 2013 18:20:34 -0400
Received: from shell01.TheWorld.com (localhost.theworld.com [127.0.0.1]) by shell.TheWorld.com (8.13.6/8.12.8) with ESMTP id r3PMKVvC3449291; Thu, 25 Apr 2013 18:20:31 -0400 (EDT)
Received: (from worley@localhost) by shell01.TheWorld.com (8.13.6/8.13.6/Submit) id r3PMKUjt3433388; Thu, 25 Apr 2013 18:20:30 -0400 (EDT)
Date: Thu, 25 Apr 2013 18:20:30 -0400
Message-Id: <201304252220.r3PMKUjt3433388@shell01.TheWorld.com>
From: worley@ariadne.com
Sender: worley@ariadne.com
To: Bernard Aboba <bernard_aboba@hotmail.com>
In-reply-to: <BLU404-EAS880456C2F56BCE26AC2D3293B40@phx.gbl> (bernard_aboba@hotmail.com)
References: <066.4c5db43349d3176acaa90d17617a02d6@trac.tools.ietf.org> <5173ECC7.7020909@jitsi.org> <51754363.3090300@ericsson.com> <CABkgnnV2DA0v9FuJ=hC6JCB8xCxOW-QNFdvMD5=XuJ1MruFSGw@mail.gmail.com> <201304222215.r3MMFqsE3199256@shell01.TheWorld.com> <CABkgnnV4RbJNR29sJtRaqaD6BPGYrosvqjBmZuRmgsc-qZH+WQ@mail.gmail.com> <201304231858.r3NIw4OJ3260483@shell01.TheWorld.com> <BLU404-EAS880456C2F56BCE26AC2D3293B40@phx.gbl>
Cc: rtcweb@ietf.org
Subject: Re: [rtcweb] #15: Section 4.8: SSRC signaling
X-BeenThere: rtcweb@ietf.org
X-Mailman-Version: 2.1.12
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: <http://www.ietf.org/mail-archive/web/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: Thu, 25 Apr 2013 22:21:06 -0000

> From: Bernard Aboba <bernard_aboba@hotmail.com>
> 
> If you have several devices per host (e.g. Multiple cameras) each
> using simulcast or layered coding, are supporting screen
> sharing/data channel/audio+video and also have a single m= line for
> each RTP stream, then this isn't so outlandish.

I was working on an essay based on the assumption that a single video
capture is carried over a single m= line (with the various component
streams (simulcast, FEC, layered encoding, etc.) sent using different
SSRCs)...  But that isn't how existing systems work, and it may not be
workable at all.  It would be nice to correct that, but that probably
isn't the quick way to get products to market.  ;-)

If multiplexing based on payload type is unworkable, how about the
following technique.  (Forgive me if someone else has already proposed
it.)

    Each SSRC is demultiplexed based on an RTCP SDES item that gives
    the mapping between the SSRC and the m= line via which it is
    presented to the application layer (that is, the constituent m=
    line sequence number).

When a media stream with new SSRC is sent, the sender inserts an RTCP
SDES item with a special multiplexing "item type".  The SDES item
contains the SSRC value and the sequence number of the m= line via
which that SSRC is obtained from the application layer.  The sender
resends this SDES item occasionally.

The receiver keeps a table which maps the SSRCs to the m= lines via
which each SSRC is to be presented to the application.  Entries in the
table are added/updated when the multiplexing SDES items are received.

Since SDES items are meant to describe the "source" of the media
stream, using an SDES item to identify how the media is supplied by
the application is close to its intention.  (If one doesn't like that,
we could define another RTCP packet type.)

This mechanism only adds one 8 byte SDES item periodically in the RTCP
(given that RTCP packets often contain SDES packets, so the SDES
packet header isn't charged to multiplexing).  The overhead is reduced
to 4 bytes if the RTCP periodically contains SDES items for the SSRC
anyway.

        0                   1                   2                   3
        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
header |V=2|P|    SC   |  PT=SDES=202  |             length            |
       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
chunk  |                          SSRC                                 |
  1    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |     MUX=11    |     length=1  |0|m= line seq. |  NULL=0       |
       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
chunk  |                          ...                                  |
  2

With dexterous use of pseudo-UTF-8 encoding to encode sequence
numbers, an 8 byte item suffices for the typical case, but we still
support multiplexing an unlimited number of m= lines, and even support
multiplexing m= lines that specify multiple addresses or ports.

This method allows multiplexing to support whatever use of m= lines
the overlying application supports/requires, since it places no
restrictions on the SDP or RTP usage.

In addition, demultiplexing is stable even while the bundling is
changing due to a new offer/answer exchange, because the SSRC on the
incoming RTP packets will be stable, even while the media stream is
redirected from one transport endpoint (for the old bundle) to another
transport endpoint (for the new bundle).

Dale