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

Randell Jesup <randell-ietf@jesup.org> Mon, 02 July 2012 21:52 UTC

Return-Path: <randell-ietf@jesup.org>
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 F0BD221F84C4 for <rtcweb@ietfa.amsl.com>; Mon, 2 Jul 2012 14:52:15 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.963
X-Spam-Level:
X-Spam-Status: No, score=-1.963 tagged_above=-999 required=5 tests=[AWL=0.636, BAYES_00=-2.599]
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 rLL+pH7ykDdh for <rtcweb@ietfa.amsl.com>; Mon, 2 Jul 2012 14:52:11 -0700 (PDT)
Received: from r2-chicago.webserversystems.com (r2-chicago.webserversystems.com [173.236.101.58]) by ietfa.amsl.com (Postfix) with ESMTP id 1775E21F84C2 for <rtcweb@ietf.org>; Mon, 2 Jul 2012 14:52:10 -0700 (PDT)
Received: from pool-108-16-41-249.phlapa.fios.verizon.net ([108.16.41.249] helo=[192.168.1.12]) by r2-chicago.webserversystems.com with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.69) (envelope-from <randell-ietf@jesup.org>) id 1SloXX-0000SF-D3 for rtcweb@ietf.org; Mon, 02 Jul 2012 16:52:15 -0500
Message-ID: <4FF217DD.1060607@jesup.org>
Date: Mon, 02 Jul 2012 17:51:25 -0400
From: Randell Jesup <randell-ietf@jesup.org>
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:13.0) Gecko/20120614 Thunderbird/13.0.1
MIME-Version: 1.0
To: 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>
In-Reply-To: <CAOJ7v-1SwvqDrzOGGSwFjkmnqPmF8PVvbOoGrtbtx6qk2T_R-w@mail.gmail.com>
Content-Type: text/plain; charset="ISO-8859-1"; format="flowed"
Content-Transfer-Encoding: 7bit
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - r2-chicago.webserversystems.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - jesup.org
X-Source:
X-Source-Args:
X-Source-Dir:
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: Mon, 02 Jul 2012 21:52:17 -0000

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.

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).

-- 
Randell Jesup
randell-ietf@jesup.org