Re: [rtcweb] Review of draft-ietf-rtcweb-rtp-usage

Emil Ivov <emcho@jitsi.org> Fri, 09 May 2014 12:12 UTC

Return-Path: <emcho@sip-communicator.org>
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 E60321A0289 for <rtcweb@ietfa.amsl.com>; Fri, 9 May 2014 05:12:44 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.251
X-Spam-Level:
X-Spam-Status: No, score=-2.251 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_EQ_FR=0.35, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=ham
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 d_sBs-BItbL6 for <rtcweb@ietfa.amsl.com>; Fri, 9 May 2014 05:12:38 -0700 (PDT)
Received: from mail-we0-f176.google.com (mail-we0-f176.google.com [74.125.82.176]) by ietfa.amsl.com (Postfix) with ESMTP id 570F01A0285 for <rtcweb@ietf.org>; Fri, 9 May 2014 05:12:38 -0700 (PDT)
Received: by mail-we0-f176.google.com with SMTP id q59so3801131wes.21 for <rtcweb@ietf.org>; Fri, 09 May 2014 05:12:33 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to :cc:subject:references:in-reply-to:content-type :content-transfer-encoding; bh=EXUpAvxIx+b7smwIbDGTYHGjZ/rCD4vUF+7nQxEWf68=; b=Gjk49TSy9Ph6u+cLHxUBi4qhb+vbITndDZGk3sGNQOsVuyIE3pddQ9R2W9R6kr6LWT qsZ2xPqN2+v/SQIYN0Wy9chdTYfo8Tz0MTLSql7Q1EkPLTiiB/FMw/MziXzdxyf1nRNa R4AqXo/umhNd8dYf66EuK8XYFhFvwCuClfj5SQy52QqF1uJ/Z5Mr26Y7si/e/sEiBn6I QU28YimSiKtutgw5Tt3x9ipSgV7mOGVlpY3EoLHFmFC1STWOSmodwL6PY6r6Ekr67P09 GlCCjUD1UsasQ/zPUMWpmJpx1JPVjwYu170+rzJ4As4GjgaViUdX7+yXkBaMI0bUjdi9 LZ0w==
X-Gm-Message-State: ALoCoQm2ODBEkba4c+HYOhRQDdITtWNCj+lvEsqmEwso2zB1yWtrghCWWcrd67LFW7uwbWo0+PN/
X-Received: by 10.194.201.73 with SMTP id jy9mr7916211wjc.51.1399637552516; Fri, 09 May 2014 05:12:32 -0700 (PDT)
Received: from pastropnet.u-strasbg.fr ([2001:660:4701:1001:38f1:8eef:bd05:691e]) by mx.google.com with ESMTPSA id s2sm4801085wia.7.2014.05.09.05.12.30 for <multiple recipients> (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Fri, 09 May 2014 05:12:31 -0700 (PDT)
Message-ID: <536CC62E.20103@jitsi.org>
Date: Fri, 09 May 2014 14:12:30 +0200
From: Emil Ivov <emcho@jitsi.org>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.5.0
MIME-Version: 1.0
To: Magnus Westerlund <magnus.westerlund@ericsson.com>, Colin Perkins <csp@csperkins.org>
References: <CAOW+2dsdEZyzs4Qu6+z55JcgiwaOWNQ0pHz=8-buuH1+3TJj8w@mail.gmail.com> <D3F43C35-2B37-4111-8803-46B6DED248E7@csperkins.org> <C9834672-6685-471C-83B9-B52CB8532573@gmail.com> <2CE99351-87F9-4815-913A-092C1B703D8A@csperkins.org> <536BB52B.50102@jitsi.org> <A40F4E8F-1F9A-4A8D-9F5D-F318B8FE3224@csperkins.org> <536BFBC2.4090107@jitsi.org> <536CA59F.3090707@ericsson.com>
In-Reply-To: <536CA59F.3090707@ericsson.com>
Content-Type: text/plain; charset="windows-1252"; format="flowed"
Content-Transfer-Encoding: 8bit
Archived-At: http://mailarchive.ietf.org/arch/msg/rtcweb/Uoi1G_xIJPGnoo2KsdeTTMLmpN0
Cc: "rtcweb@ietf.org" <rtcweb@ietf.org>
Subject: Re: [rtcweb] Review of draft-ietf-rtcweb-rtp-usage
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: Fri, 09 May 2014 12:12:45 -0000

Hey Magnus,

On 09.05.14, 11:53, Magnus Westerlund wrote:
> On 2014-05-08 23:48, Emil Ivov wrote:
>>
>>
>> On 08.05.14, 21:02, Colin Perkins wrote:
>>> On 8 May 2014, at 17:47, Emil Ivov <emcho@jitsi.org> wrote:
>>>> On 08.05.14, 14:54, Colin Perkins wrote:
>>>>> On 8 May 2014, at 13:43, Bernard Aboba <bernard.aboba@gmail.com>
>>>>> wrote:
>>>>>>> On May 8, 2014, at 3:45, Colin Perkins <csp@csperkins.org>
>>>>>>> wrote: The fix here is to delete “In the absence of a
>>>>>>> concrete congestion control algorithm, all”, leaving the text
>>>>>>> as “WebRTC implementations MUST implement the RTP circuit
>>>>>>> breaker…” since as you note, we want the circuit breaker even
>>>>>>> if there is congestion control.
>>>>>>
>>>>>> [BA] The question I have is whether this would be widely
>>>>>> implemented. The Circuit Breaker algorithm pauses sessions, but
>>>>>> has no mechanism to resume them, so it increases brittleness.
>>>>>
>>>>> The circuit breaker is a mechanism of last resort. If we've
>>>>> designed it correctly, it will only stop sessions that are
>>>>> otherwise unusable.
>>>>
>>>> Shouldn't we have the "if" cleared before making this a MUST? It is
>>>> not clear to me that we’ve managed to avoid excessive false
>>>> positives for example.
>>>
>>> The experiments that I, Varun, and Zahed have done look to show the
>>> circuit breaker behaving as desired.
>>
>> That sounds interesting and I'd actually be happy to see the data
>> although I can easily believe that circuit breakers could come in handy
>> in certain situations.
>>
>> draft-ietf-avtcore-rtp-circuit-breakers-05 contains some very useful
>> guidelines on determining how and when an application might want to
>> consider employing them.
>>
>> So I am fine with the concept ... *as long as* the choice is left to the
>> application.
>>
>> I don't believe that any of the breakers however have the reliability to
>> only trigger in cases where ceasing media transmission is the right
>> thing to do. I don't think such a thing is possible given how use cases
>> and requirements vary from one application to the next.
>
> The circuit breakers triggers when the conditions are really bad.

Well, not really. They trigger when specific events occur. Whether those 
events are caused by network conditions and whether those network 
conditions actually are "really bad" is often a matter of perspective.

> I
> think the one condition which is most likely to give a false positive is
> the loss of feedback, i.e. that one loses all RTCP packets under 3
> regular reporting intervals.
>
> It is very hard to define programmatic rules that always do the "Right
> thing" here. Because with hindsight you can determine one action more
> appropriate than another.

Yes, I agree.

>>> If you know of scenarios where
>>> there are false positives, I’d like to see your data so we can
>>> improve the circuit breaker.
>>
>> It's funny you should ask. I am currently having connectivity issues and
>> my media transmissions would every now and then be interrupted for
>> periods that go beyond two or three RR packets. I am very happy that my
>> sessions just resume when things go back to normal.
>
> Well, the important aspect here is how your sending client behaves
> during these outages. The circuit breaker do requires you to have cut
> back the transmission in these conditions to less than a 10th of the
> nominal rate during these outages if the circuit breaker triggers. That
> means that you can continue to send low bit-rate traffic to detect when
> the path is restored and ramp up again with your congestion control.
> Thus, I don't see circuit breakers preventing a congestion control
> algorithm to operate under these conditions and maintain the session. If
> the congestion control isn't there that is another question.
>
>>
>> In cases like demo stands or some forms of video surveillance, lack of
>> media for several (tens) of seconds is not really a problem, whereas a
>> break that requires human intervention could be one.
>>
>> Cases where SFUs decide to selectively NOT forward some RTP but forward
>> all RTCP would also trigger false positives, while they are not a
>> problem for applications that are aware of their behaviour.
>
> A SFU must provide consistent RTCP, i.e. RTCP SRs from the SFU must
> provide RTCP statistics for what is actually forwarded, not what the SFU
> received from the originating RTP sender.

That's a lot of must-s for something that is largely an implementation 
choice and for which we only have informational documents.

Yes, circuit breakers could probably be worked around by applications 
but I am not sure how trivial this would be, especially in the case of 
WebRTC.

>> IP layer network mobility à la NEMO, temporary uplink saturation because
>> someone mistakenly started a torrent client (and quit a few seconds
>> later), someone tripping over a cable and then re-plugging it, buggy NAT
>> gateways ... all of those could potentially trigger circuit breakers and
>> in all these cases both the application and the user may prefer that
>> they don't.
>
> Triggering the circuit breakers just requires the sending client to have
> taken sufficient action to prevent persistent congestion. If it does it
> can continue to transmit.
>
>>
>> Obviously browsers are a special case but we already have consent
>> freshness there and that likely covers most of the concerns for
>> undesirable streaming that circuit breakers address.
>
> The point of the circuit breakers is to prevent situations where RTP
> senders continue to blast away into a persistent congestion situation or
> onto paths that are broken.

Yes I get that. However we already have "consent freshness" and that 
will do the job in a big chunk of the cases that circuit breakers are 
meant to protect. It is not clear to me that CBs would be a clear 
improvement for the remainder of the cases.

>> So again, I feel circuit breakers could be a useful informative
>> reference but they can be harmful if REQUIRED.
>
> I think they will from a protect the network perspective needs to be
> REQUIRED. As I have tried to explain above, there are actions that are
> allowed within the circuit breaker specification that allows a sender to
> throttle its traffic sufficiently when it detects a path breakage, to
> keep monitoring it until it recovers and then resume transmission. But,
> if the implementation in the sender does not care to implement such
> functionality, the circuit breaker do require them to cease
> transmission. But, it do become a implementers choice.

OK then, if we agree that this needs to be an implementation choice then 
why don't we just inform implementers of that possibility and 
potentially advise the W3C to add API calls to enable their use?

> In addition I don't think IETF should publish an RFC for a RTP media
> plane that doesn't have some REQUIRED behaviour when it comes to
> protecting the network in persistent congestion situations.

I would agree if we actually had a flawless mechanism that would only 
trigger in cases where it absolutely has to. As you have indicated 
yourself: It is very hard to define programmatic rules that always do 
the "Right thing" here

Cheers,
Emil


-- 
https://jitsi.org