Re: [rtcweb] RTP Usage: Is RTP Retransmission REQUIRED or RECOMMENDED

Stefan Hakansson LK <stefan.lk.hakansson@ericsson.com> Wed, 04 July 2012 14:22 UTC

Return-Path: <stefan.lk.hakansson@ericsson.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 A73D621F85D2 for <rtcweb@ietfa.amsl.com>; Wed, 4 Jul 2012 07:22:56 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.909
X-Spam-Level:
X-Spam-Status: No, score=-5.909 tagged_above=-999 required=5 tests=[AWL=0.340, BAYES_00=-2.599, HELO_EQ_SE=0.35, RCVD_IN_DNSWL_MED=-4]
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 MTQK8aXxOqPz for <rtcweb@ietfa.amsl.com>; Wed, 4 Jul 2012 07:22:55 -0700 (PDT)
Received: from mailgw7.ericsson.se (mailgw7.ericsson.se [193.180.251.48]) by ietfa.amsl.com (Postfix) with ESMTP id 1416621F8585 for <rtcweb@ietf.org>; Wed, 4 Jul 2012 07:22:54 -0700 (PDT)
X-AuditID: c1b4fb30-b7fb46d0000064f2-09-4ff451c8c4da
Received: from esessmw0191.eemea.ericsson.se (Unknown_Domain [153.88.253.125]) by mailgw7.ericsson.se (Symantec Mail Security) with SMTP id 9D.E4.25842.8C154FF4; Wed, 4 Jul 2012 16:23:04 +0200 (CEST)
Received: from [127.0.0.1] (153.88.115.8) by esessmw0191.eemea.ericsson.se (153.88.115.85) with Microsoft SMTP Server id 8.3.264.0; Wed, 4 Jul 2012 16:23:04 +0200
Message-ID: <4FF451C7.5080804@ericsson.com>
Date: Wed, 04 Jul 2012 16:23:03 +0200
From: Stefan Hakansson LK <stefan.lk.hakansson@ericsson.com>
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20120615 Thunderbird/13.0.1
MIME-Version: 1.0
To: "rtcweb@ietf.org" <rtcweb@ietf.org>
References: <4FEAB80A.7040207@ericsson.com> <4E5389B4-F54C-4060-952E-8319A801FDC3@iii.ca> <4FED4E81.7000607@ericsson.com> <B7F8286E-BDB0-4033-991C-A54A0A1227EB@iii.ca> <A8D45DD6-4E82-413F-8978-C6A80B2806DA@edvina.net> <CAOJ7v-1SwvqDrzOGGSwFjkmnqPmF8PVvbOoGrtbtx6qk2T_R-w@mail.gmail.com> <4FF217DD.1060607@jesup.org>
In-Reply-To: <4FF217DD.1060607@jesup.org>
Content-Type: text/plain; charset="ISO-8859-1"; format="flowed"
Content-Transfer-Encoding: 7bit
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrOJMWRmVeSWpSXmKPExsUyM+Jvre6JwC/+Bh/+m1us/dfO7sDosWTJ T6YAxigum5TUnMyy1CJ9uwSujI77n9gLrqpVTNg+jaWBsVm+i5GTQ0LARGLV9DssELaYxIV7 69m6GLk4hAROMUo8/DyHESQhJLCMUWLWk6AuRg4OXgFtidbFPCBhFgEViRNHt4L1sgnYSKzt nsIEUiIqECYxfSc7SJhXQFDi5MwnYCUiAuoSlx9eYAcpERbwk5jfEAYxfDeTxIsZsiA2p4Cm xOI3N1hBbGYBW4kLc66zQNjyEtvfzmGGqNeVePf6HusERoFZSDbMQtIyC0nLAkbmVYzCuYmZ Oenl5nqpRZnJxcX5eXrFqZsYgYF3cMtvgx2Mm+6LHWKU5mBREufVU93vLySQnliSmp2aWpBa FF9UmpNafIiRiYNTqoHRyiHy+DOuUgM70b+3Hb7ZfrhSt/bm1tMVS5YuFPu/aqeR0Tr3/SUL lG79vLxeu9hOPntP1ILzdxvtkk9+YZS9H2O0zfRrUvLlvQKbFxzvzLq1QsbzBr/LuiYPZd87 v4TsKu1P3TJjPFC+6Tb38eUBO7X+tf34uvK6Rc4kQwNLxrI26yNVyQkuSizFGYmGWsxFxYkA XTz1qAoCAAA=
Subject: Re: [rtcweb] RTP Usage: Is RTP Retransmission REQUIRED or RECOMMENDED
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: Wed, 04 Jul 2012 14:22:56 -0000

On 07/02/2012 11:51 PM, Randell Jesup wrote:
> On 7/2/2012 4:18 PM, Justin Uberti wrote:
>> As has been pointed out in this thread before, this discussion is not
>> about mandating the USE of retransmission in realtime scenarios.  It is
>> simply trying to decide whether retransmission should be required to be
>> present in the 'toolbox' of tools that WebRTC apps can expect to use,
>> primarily where the app developer and runtime developer are separate
>> (e.g. in a browser).
>
> Do you expect to expose this choice to the application? (and all the
> data needed to make the choice...)  Or have it be automatic?
>
>> Several people have pointed out scenarios and applications where
>> retransmission (of video, not audio) works very well. Our experience
>> matches this too. Typically we can locate a media gateway very close to
>> all participants, meaning that a lost packet between GW and user can be
>> detected and retransmitted fast enough to not be noticeable by the user.
>> These applications, if they do not have access to retransmission, will
>> be forced to use cruder methods of error recovery that are more
>> noticeable to users, among other unpleasant effects.
>
> Ok.  This says that it's preferable to implement it, and if you have one
> of the situations that works well, use it.  This sounds like a SHOULD to
> me, since other implementations (say an audio-only WebRTC<->PSTN
> gateway) may have little or no use for retransmission, or might reject
> it always.
>
>> Given that the implementation cost of retransmission is fairly
>> negligible (basically, a packet cache plus support for parsing NACK
>> messages), and that is really the only reason NOT to support this
>> functionality in the toolbox, I have a hard time understanding why we
>> would not want to make this a MUST implement for WebRTC.
>>
>> Again, this is about making _support_ for retransmission a requirement,
>> not _use_.
>
> If you don't mandate use, what does mandating "support" buy you?  An
> implementation (see above about PSTN gateways) might always decline to
> use retransmission, so what does MUST (REQUIRE) buy you?  I say SHOULD
> (RECOMMEND), with a statement that it's strongly recommended it be
> supported if video is supported, especially for non-single-purpose
> devices (i.e. browsers).
>
> In either case, you need to think about who decides to use re-xmit or
> not, what influences that, and if the app has visibility into this.
> Someone could as an rtx-time=0 to the SDP.  Or not include one, but
> never actually retransmit a packet regardless of NACKs - it could just
> repair via IDR (or other means).
>
> So here's a real problem related to retransmission: since the request is
> not specific and negotiated (it's normally a generic NACK), the receiver
> who sent the NACK has no idea if it will get a retransmission, an IDR
> (or IDR slice), another form of repair (pframe/slice against
> known-decoded frame - rpsi/etc), or nothing at all (NACK lost).  So, it
> doesn't know if it should freeze the video or play with errors.  It has
> to decide if it *thinks* the sender will use retransmission, or if it
> doesn't, does the receiver want to freeze video until an IDR or other
> repair is done, which might be a while.

Isn't retransmission negotiated using "rtx", "atp" and so on?

One way of removing the uncertainty would be to require that all 
browsers support RTP retransmission: This way, any RTP endpoint sending 
a NACK to a browser would know that that packet would be retransmitted 
(given that congestion does not prohibit, or NACK packet is lost etc.).

If we have this in place, I'm confident that implementors will quickly 
develop strategies on how and when to _use_ retransmission in the best 
way. There has already been input made on its usefulness.

Maybe the problem with legacy not always supporting retransmission is 
not that big. First of all, legacy is to a large extent audio only (e.g. 
PSTN), and no one is arguing for retransmission there. Secondly, I fail 
to see that this situation would be improved in any way if browsers are 
only recommended (and not required) to support RTP retransmission.

So I think we should require rtcweb capable browsers to support RTP 
retransmission.

>
> We also need to think about when a receiver should use SLI or RPSI.  PLI
> can also be used and should be if the other options don't negotiate (so
> it's important to offer it).  Certainly it's more work to keep track of
> the contents of each packet (slices, etc), especially in things like
> H.264 NALU aggregation packets, than it is to just respond to an SLI.
>
> That said, my previous systems just used NACK and let the sender decide
> the correct repair, but I wasn't leveraging slices and wasn't using
> retransmission, so there was only minor complexity (looking at possible
> reference frames).
>