Re: [rtcweb] RTP Usage: Is RTP Retransmission REQUIRED or RECOMMENDED
Stefan Holmer <holmer@google.com> Mon, 02 July 2012 07:49 UTC
Return-Path: <holmer@google.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 326A721F8ABF for <rtcweb@ietfa.amsl.com>; Mon, 2 Jul 2012 00:49:27 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -100.577
X-Spam-Level:
X-Spam-Status: No, score=-100.577 tagged_above=-999 required=5 tests=[AWL=-0.466, BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, J_CHICKENPOX_36=0.6, J_CHICKENPOX_38=0.6, RCVD_IN_DNSWL_LOW=-1, SARE_HTML_USL_OBFU=1.666, USER_IN_WHITELIST=-100]
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 cWBr1E9CzyEM for <rtcweb@ietfa.amsl.com>; Mon, 2 Jul 2012 00:49:25 -0700 (PDT)
Received: from mail-yw0-f42.google.com (mail-yw0-f42.google.com [209.85.213.42]) by ietfa.amsl.com (Postfix) with ESMTP id 88E8121F8ABE for <rtcweb@ietf.org>; Mon, 2 Jul 2012 00:49:25 -0700 (PDT)
Received: by yhfq11 with SMTP id q11so4632215yhf.15 for <rtcweb@ietf.org>; Mon, 02 Jul 2012 00:49:29 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:x-system-of-record; bh=WHwAaYMGA6ET+eKc+fETVRq9j2ni3cdkLbg0rz6qRoo=; b=KoZbE12WBqGZzIrf7RVBjD1aE08CtbapwhoKR4+3XgXPoGU2wawtG/0AiAC+vF+J4H DNGHMDslpR67Idp8qKJWVzrQDxFK15KPed0/06CaIrQ9jQ3PoI8ixmja/PkVPNFAYeXp v7odM1Tj2h9ulZvMHjp2kSzsWjmwUrPeVNNelSBqXZ9LWuEvk3OHX7yVgZIozDcgeBon xFpq9kAUADLrQ3TxHUCdW5iyb9c64TPT0/rMgNFH9UkQZmObXqb6uWE1PxQWJGQuXUnE ul/fREgM2XrH3EKnMvp1VSKiJ7PWZC2ejYUbK2kpV3D/+gkxGAIbjTvn16O6N6KvvLFD MGgw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:x-system-of-record:x-gm-message-state; bh=WHwAaYMGA6ET+eKc+fETVRq9j2ni3cdkLbg0rz6qRoo=; b=MBzGArxy35lr3AproysEXbxCCWMR+Q3P/Oq5T5PNX0h8Ad5duEWlAnejGAHYWmttzY iw93ZD9wma/YDEM6e07Mf1uoo8iSXipkiyiznWZGz21cRMT5ewKjitpAvm8q9upX20aH GJok7W1eUDmR0A/3gY2JgHxvEVRh7YjtMP9YoFxR55V/yv3Tb2Ri73pWUBWy14G4Qlz7 szN0MHmsY4GA+BOwQ1ppau1tObZe1OtJ1YfWdXmdNwIA0B4m38P94WU782zI1kcUXKP+ ewS6ExlXq5aty3Mi3viSAmk5wJrq7hSW/dgqp7QafZao8EMZwK65FeL5zhDxQpCr1z02 +aPA==
Received: by 10.50.168.1 with SMTP id zs1mr6678630igb.45.1341215369127; Mon, 02 Jul 2012 00:49:29 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.50.168.1 with SMTP id zs1mr6678624igb.45.1341215368969; Mon, 02 Jul 2012 00:49:28 -0700 (PDT)
Received: by 10.50.108.103 with HTTP; Mon, 2 Jul 2012 00:49:28 -0700 (PDT)
In-Reply-To: <4FF14C97.4060005@jesup.org>
References: <4FEAB80A.7040207@ericsson.com> <4E5389B4-F54C-4060-952E-8319A801FDC3@iii.ca> <4FED4E81.7000607@ericsson.com> <CAEdus3KnqLHyBRtCUfE03C4rdTJfyEDoZReEo60cnz_30GuBnw@mail.gmail.com> <4FEFF1B6.6050504@jesup.org> <CAEdus3JSzOORFj4ihiYQ8XcbbQ+KYjbi-0KsPNJn-wT0Vn7K9A@mail.gmail.com> <4FF14C97.4060005@jesup.org>
Date: Mon, 02 Jul 2012 09:49:28 +0200
Message-ID: <CAEdus3Kc0b5sZkoLE=GXhvPLmjdEPRgex8_eRxN0KW=41LPWJw@mail.gmail.com>
From: Stefan Holmer <holmer@google.com>
To: Randell Jesup <randell-ietf@jesup.org>
Content-Type: multipart/alternative; boundary="e89a8f83a613a27dde04c3d40958"
X-System-Of-Record: true
X-Gm-Message-State: ALoCoQkOXQmHC/mclpjVUwQLuiGXEH7Cw4U/bM3RQvKtHrRome+ZpVPrhhjPzFjSjkt81Qtabjw2sqsqGs2nEuQGUH2svVhjibJCm9SIUffwa6ZjbXBx5ccjuWbRaA8ZSoTh5Wh63Nsq56mydlSK4gD15bVwe3XEf44xsm012W3E65zYOjTF+hg=
Cc: rtcweb@ietf.org
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 07:49:27 -0000
On Mon, Jul 2, 2012 at 9:24 AM, Randell Jesup <randell-ietf@jesup.org>wrote: > On 7/1/2012 8:17 AM, Stefan Holmer wrote: > >> >> >> On Sun, Jul 1, 2012 at 8:44 AM, Randell Jesup <randell-ietf@jesup.org >> <mailto:randell-ietf@jesup.org**>> wrote: >> >> On 6/29/2012 3:30 AM, Stefan Holmer wrote: >> >> Doesn't this in the end boil down to what tools we have for >> baseline >> resilience? Retransmissions are fairly easy to implement and will >> in >> most cases give a much better experience than for example relying >> on >> periodic key frames or doing key frame requests. Also it isn't >> necessary >> for the decoder to support decoding streams with lost packets. >> >> >> "Better experience" incorporates a bunch of assumptions. >> >> Assuming we're talking video only: >> >> If you want it to be seamless, you have to be running a jitter >> buffer depth of at least 1 RTT plus >> time-to-decide-packet-may-be-_**_lost plus random-constant. The >> >> second part of that can be tricky and network-state dependent. On >> corporate networks, I'd see sudden 100ms changes in base delay over >> 1-3 packets; a short time-to-decide would flag each of those as >> missing. This is ok (the re-xmit will get ignored as a dup), but >> adds packets at an apparent bad point for the network. >> >> That said, small RTTs certainly happen within LANs and corporations, >> and between neighbors in a single provider often. >> >> Note that often/normally with small RTTs you also get reasonably >> small jitter, and thus the adaptive jitter buffer might run very >> small numbers, so one might need to put a lower limit on the jitter >> buffer in these cases. >> >> The alternatives: >> >> 1) request re-xmit and freeze video queue when the jitter buffer >> runs dry. If the packet comes in ASAP, freeze <= RTT+constant >> (modulo application scheduling delay at the sender side). Then you >> can repair the broken frame, decode it, and then decode any >> following frames. Typically after a freeze you drop a frame or more; >> you might end up showing some of them depending on decode speed and >> how long the freeze lasted. If the re-xmit (or the request) is >> lost, then delays can stretch much longer, since you need to wait >> RTT+bigger constant before requesting again. >> >> >> Yes, this is what I would consider the simplest approach, which leads to >> a system which can guarantee a complete stream thus not requiring the >> decoder to be able to decode with errors, and at the same time having a >> good chance of recovering within slightly longer than one RTT. >> > > Simple, yes. There are aspects of this I don't like: > > * Frozen for minimum of 1RTT+. With 100ms RTT, you're probably at a > minimum of 4 frames, perhaps 5, and if you lose another packet during those > frames, it will move forward but not catch up sync, which can lead to > jerky, out of sync video. If you lose a re-xmit packet, you're talking > minimum 2x the delay (and in reality a fair bit more because you have to > decide when to ask for a re-re-xmit...). > * Decoding with errors: not generally a problem. The issue is whether you > prefer (or think the users prefer) a short (1 frame) freeze plus > 1RTT-1frame-ish period with motion but errors, or a 1+RTT min freeze, > maybe/occasionally much more. Our experience at WorldGate was that keeping > motion active was preferable to freezing or worse loss of sync, even if > there are errors. > Yes, it doesn't solve all problems. > > That conclusion is debatable, and the answer may vary according to RTT, > type of call, resolution, bandwidth, type of application, and isn't > something the IETF should mandate here. > > > 2) request IDR (or refresh of corrupted slice). Downside here is >> that you need to wait for the next frame encode at the sender side >> (so 0-33ms normally, or perhaps 0-100ms), and then the frame >> typically takes many packets to send (which also may be lost, and >> take time to receive especially on low-BW links), and IDR initial >> quality may be noticeably lower. The receiver may freeze the video >> until the IDR is received or keep decoding with errors. If there's >> a significant chance of the IDR losing a packet, a freeze could be >> substantial time. >> >> >> If the losses are related to congestion, sending an IDR is usually a bad >> idea. And as you are saying, if the losses are due to corruption, the >> chance of having a loss in an IDR is much bigger than for a P-frame. I >> don't think this approach is nearly as good as retransmissions, but it >> is a possible baseline option. >> > > Agreed, though in practice if you're not getting hammered with high loss > and you keep the quantization high on the IDR, it will usually get through. > Obviously as bitrates increase the number of packets in the IDR goes up, > and risk of loss in the IDR goes up. If correction is only for a slice, > this risk may not be high. > > > 3) request repair. Note that #2 and #3 may be the same at the >> receiver side, with the sender deciding the best available repair. >> In this case, the sender would instead of an IDR use a some other >> set of (smaller) packets to create an error-free up-to-date state at >> the receiver, such as encoding using a long-term-reference-frame, or >> using some other known-error-free frame in the receiver. Note that >> repair is basically just a normal p-frame, albeit with somewhat >> lower quality and/or somewhat higher bandwidth used. A big plus is >> that the end state is close to the same as re-transmit, but you >> don't have to speed through decoding any skipped frames. Repair >> also allows the receiver to use alternate recovery mechanisms than >> simply freezing, including simply continuing to decode p-frames >> ignoring the lost frame. This induces artifacts, but keeps motion >> loss to a minimum, especially in longer-RTT links. >> >> >> Yes, I agree that this is also a good approach. It may be more expensive >> than #1 if the long-term reference is old, but in general this would be >> a good baseline as well. >> > > There are mechanisms in VP8 that can be leveraged here. > > Yes. > > It is possible to continue decoding p-frames, ignoring the loss, with >> retransmissions as well. However it's a bit more complicated and you >> will have to speed through some frames at the decoder when the rtx >> arrives, although you can skip rendering them. >> > > Yes, you'd have to clone the decoder state at the loss point in order to > "rewind" and then correct. > > > >> >> Note that #3 in particular should result in similar freeze length as >> #1, perhaps 1 frame longer, if it freezes. If it plays with errors >> instead, the freeze is typically 1 frame (the lost one). >> >> (Others?) >> >> My normal preference is #3. But, as discussed above, in low-RTT >> networks it may be a good option and might give 0-frames of freeze. >> But, you still have all the complexities about how to decide when >> and how to use re-xmit; I think the 1 frame freeze is a reasonable >> option and a reasonable fallback if the source doesn't re-transmit. >> >> Also, if retransmit is REQUIRED, and the media is gatewayed to other >> sources (non-webrtc), and they don't support retransmit (likely), >> then the gateway would need to buffer and act as a retransmit agent >> (complicating the gateway). If it's RECOMMENDED, this is not a big >> deal and the gateway can stay simpler. >> >> >> Sure, that's a downside, and that may be a good enough reason for >> RECOMMENDED. The same goes for #3, right? Non-webrtc sources may not >> support long-term references and therefore have to rely on IDRs. >> > > Yup, and most do today. The point is you report the loss as best you can > (PLI, etc) and let the sender fix it as best it can. > Yes, that is nice with #3, and if we can assume most endpoints will support #3 I agree that is the way to go, even though the baseline (hopefully used for a very small %) will have to be IDRs. > > I do think this is a strong argument for RECOMMEND (or even something less > strong). We could of course REQUIRE support but warn that even if > supported, and endpoint might not agree to retransmits. It does make the > position of a gateway to this clause ... interesting, but in practice it > could reject re-xmits unless it knows the non-webrtc source supports them. > So this doesn't mandate RECOMMEND over REQUIRE, but it is justification > for RECOMMEND. > > Just saying that it would be nice to have a baseline which is something >> better than requesting IDRs. >> > > Yes. But I don't think this is in the purview of the spec, unless you > want to tie it to congestion control issues. > > > -- > Randell Jesup > randell-ietf@jesup.org > > ______________________________**_________________ > rtcweb mailing list > rtcweb@ietf.org > https://www.ietf.org/mailman/**listinfo/rtcweb<https://www.ietf.org/mailman/listinfo/rtcweb> >
- [rtcweb] RTP Usage: Is RTP Retransmission REQUIRE… Magnus Westerlund
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Fabio Pietrosanti (naif)
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Bernard Aboba
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Cameron Byrne
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Colin Perkins
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Fabio Pietrosanti (naif)
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Roy, Radhika R CIV (US)
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Fabio Pietrosanti (naif)
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Roy, Radhika R CIV (US)
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Colin Perkins
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Cameron Byrne
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Colin Perkins
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Fabio Pietrosanti (naif)
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Cameron Byrne
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Fabio Pietrosanti (naif)
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Roni Even
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Magnus Westerlund
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Michael Welzl
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Roy, Radhika R CIV (US)
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Roy, Radhika R CIV (US)
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Magnus Westerlund
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Roni Even
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Roni Even
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Roy, Radhika R CIV (US)
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Cameron Byrne
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Roy, Radhika R CIV (US)
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Magnus Westerlund
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Cullen Jennings
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Roni Even
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Roni Even
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Magnus Westerlund
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Magnus Westerlund
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Magnus Westerlund
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Stefan Holmer
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… John Leslie
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Cullen Jennings
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Colin Perkins
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Cullen Jennings
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Roy, Radhika R CIV (US)
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Randell Jesup
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Randell Jesup
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Stefan Holmer
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Roni Even
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Roni Even
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Randell Jesup
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Stefan Holmer
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Olle E. Johansson
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Justin Uberti
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Randell Jesup
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Olle E. Johansson
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Stefan Hakansson LK
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Roman Shpount
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Olle E. Johansson
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Roman Shpount
- [rtcweb] 答复: RTP Usage: Is RTP Retransmission REQ… Lishitao
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Randell Jesup
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Martin Thomson
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Olle E. Johansson
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Martin Thomson
- Re: [rtcweb] RTP Usage: Is RTP Retransmission REQ… Stefan Hakansson LK
- [rtcweb] LTE using AM_RLC or UM_RLC mode for UDP? Harald Alvestrand
- Re: [rtcweb] LTE using AM_RLC or UM_RLC mode for … Göran Eriksson AP
- Re: [rtcweb] LTE using AM_RLC or UM_RLC mode for … Cameron Byrne