Re: [rtcweb] JSEP: Issues with a=ssrc and RTP payload type switching

Harald Alvestrand <harald@alvestrand.no> Mon, 08 June 2015 09:19 UTC

Return-Path: <harald@alvestrand.no>
X-Original-To: rtcweb@ietfa.amsl.com
Delivered-To: rtcweb@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 4DC0D1B2DD1 for <rtcweb@ietfa.amsl.com>; Mon, 8 Jun 2015 02:19: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_14=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 Ixq7cSgDmgs0 for <rtcweb@ietfa.amsl.com>; Mon, 8 Jun 2015 02:19:19 -0700 (PDT)
Received: from mork.alvestrand.no (mork.alvestrand.no [IPv6:2001:700:1:2::117]) by ietfa.amsl.com (Postfix) with ESMTP id EAD591B2DCE for <rtcweb@ietf.org>; Mon, 8 Jun 2015 02:19:18 -0700 (PDT)
Received: from localhost (localhost [127.0.0.1]) by mork.alvestrand.no (Postfix) with ESMTP id 52AF37C0A3A; Mon, 8 Jun 2015 11:19:17 +0200 (CEST)
X-Virus-Scanned: Debian amavisd-new at alvestrand.no
Received: from mork.alvestrand.no ([127.0.0.1]) by localhost (mork.alvestrand.no [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id j0KN_mc2sV-J; Mon, 8 Jun 2015 11:19:15 +0200 (CEST)
Received: from [IPv6:2001:470:de0a:27:fd19:c332:d33e:eb48] (unknown [IPv6:2001:470:de0a:27:fd19:c332:d33e:eb48]) by mork.alvestrand.no (Postfix) with ESMTPSA id 6624C7C05D7; Mon, 8 Jun 2015 11:19:15 +0200 (CEST)
Message-ID: <55755E12.8020201@alvestrand.no>
Date: Mon, 08 Jun 2015 11:19:14 +0200
From: Harald Alvestrand <harald@alvestrand.no>
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0
MIME-Version: 1.0
To: Magnus Westerlund <magnus.westerlund@ericsson.com>, Roman Shpount <roman@telurix.com>
References: <556EF4F9.1060700@ericsson.com> <556F5E5C.5080600@alvestrand.no> <CAD5OKxs4_hVc-7haF7vik7+PNU33Ox9Jin35tzrPhiaekENLvQ@mail.gmail.com> <557556ED.8050206@ericsson.com>
In-Reply-To: <557556ED.8050206@ericsson.com>
Content-Type: text/plain; charset="windows-1252"
Content-Transfer-Encoding: 8bit
Archived-At: <http://mailarchive.ietf.org/arch/msg/rtcweb/gmFX7OOiEShs17k0XQUh5jr5Ybs>
Cc: "rtcweb@ietf.org" <rtcweb@ietf.org>
Subject: Re: [rtcweb] JSEP: Issues with a=ssrc and RTP payload type switching
X-BeenThere: rtcweb@ietf.org
X-Mailman-Version: 2.1.15
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: Mon, 08 Jun 2015 09:19:21 -0000

Den 08. juni 2015 10:48, skrev Magnus Westerlund:
> Roman Shpount skrev den 2015-06-04 23:02:
>> On Wed, Jun 3, 2015 at 4:06 PM, Harald Alvestrand <harald@alvestrand.no
>> <mailto:harald@alvestrand.no>> wrote:
>>
>>
>>     If we want to have a mechanism that:
>>
>>     a) allows PT switching
>>     b) uses different clock rates (and therefore different SSRCs)
>>     c) doesn't need renegotiation on SSRC change
>>
>>     I would think that the initial SDP would have to contain a=ssrc
>>     fields for *all* the possible SSRCs - that is, one "a=ssrc:<nnnn>
>>     cname:<cname>" line per payload type.
>>
>>     Section 5.2.1 already specifies that there will be multiple a=ssrc
>>     lines (and a=ssrc-group lines) in the case of RTX data. So it's not
>>     exactly a novel solution.
>>
>>
>> I agree with one small correction -- it is not a separate SSRC per
>> payload type, but separate SSRC per clock rate. For instance, if you
>> have G.711 audio, RFC 4733 tones and CN at 8KHz, there is going to be a
>> payload type for each of them, but all this media should use the same
>> SSRC. Opus, RFC 4733 tones and CN at 48Khz (and you will need to specify
>> to different payloads for tones and CN for different clock rates), will
>> use second SSRC.
>>
>> The reason for separate SSRCs is to have RTCP reports to work correctly,
>> which requires to use the same time units for all the media under
>> particular SSRC. Multiple payloads running with the same clock rate can
>> re-use the same SSRC without any issues. It actually is beneficial to
>> use the same SSRC since they can be synchronized based on the RTP time
>> stamps which would be more precise then ntp time.
> 
> However, this can't work as RFC 7160 says in Section 4.1:
> 
>   An RTP Sender with RTCP turned on MUST use a different SSRC for each
>    different clock rate.  An RTCP BYE MUST be sent and a new SSRC MUST
>    be used if the clock rate switches back to a value already seen in
>    the RTP stream.
> 
> Note the second sentence. One would still have to do a new round of
> signalling to prime a new SSRC for the previous rate after having
> switched to be able to switch back to that Payload Type.

Hm. I missed that when reviewing the clock-rate doc.
So that means one uses up an SSRC for every clock rate switch. That
seems silly; is it possible that this should be considered an erratum
for RFC 7160?

> I would to some degree argue that renegotiation is not needed here. My
> preference would be for a solution that rather use header extensions to
> indicate what "purpose" the new RTP stream has so that one understands
> that this is the replacement for an earlier RTP stream.

That would of course be incompatible with anything that came before.

> For the cases where a source is encoded into a single encoded stream and
> put in one RTP stream I think all the necessary indications are there.
> MID for which m line it belongs. The PT will indicate if it a source RTP
> stream or an Redundancy RTP stream (FEC or RTX).
> 
> It is when one comes to scalability layers sent in multiple RTP streams
> it becomes problematic to determine on RTP level which is which, without
> looking into payload header info to determine which layer the payload
> contains.

But I just can't imagine switching clock rates for different layers of a
scalability-encoded stream. Should we just not solve the problem of
behaving bizarrely for this case?

> 
> Having said that I do wonder if this will be a problem, especially in
> gateways to legacy. Where this behaviour will make the legacy peer fall
> over. Thus requiring a gateway that remap back to a single stable SSRC,
> possibly with loss of synch information. Please remember that there are
> reasons why the SSRC change was made as the required behaviour.

Are there legacy gateways that will NOT fall over on a clock rate + SSRC
switch?
If so - what do these legacy gateways do when switching back to the
original PT? New SSRC, or back to a previously used SSRC?


> 
> Cheers
> 
> Magnus Westerlund
> 
> ----------------------------------------------------------------------
> Services, Media and Network features, Ericsson Research EAB/TXM
> ----------------------------------------------------------------------
> Ericsson AB                 | Phone  +46 10 7148287
> Färögatan 6                 | Mobile +46 73 0949079
> SE-164 80 Stockholm, Sweden | mailto: magnus.westerlund@ericsson.com
> ----------------------------------------------------------------------
>