Re: [AVTCORE] Review of draft-ietf-avtcore-rtp-circuit-breakers-10

Colin Perkins <csp@csperkins.org> Sun, 17 May 2015 16:18 UTC

Return-Path: <csp@csperkins.org>
X-Original-To: avt@ietfa.amsl.com
Delivered-To: avt@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 1787A1A1A59 for <avt@ietfa.amsl.com>; Sun, 17 May 2015 09:18:47 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.8
X-Spam-Level:
X-Spam-Status: No, score=0.8 tagged_above=-999 required=5 tests=[BAYES_50=0.8] 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 FLHULSx-jpbi for <avt@ietfa.amsl.com>; Sun, 17 May 2015 09:18:45 -0700 (PDT)
Received: from balrog.mythic-beasts.com (balrog.mythic-beasts.com [IPv6:2a00:1098:0:82:1000:0:2:1]) (using TLSv1.2 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id D83311A0277 for <avt@ietf.org>; Sun, 17 May 2015 09:18:44 -0700 (PDT)
Received: from [77.156.192.158] (port=21420 helo=[10.59.248.134]) by balrog.mythic-beasts.com with esmtpsa (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.80) (envelope-from <csp@csperkins.org>) id 1Yu1H0-0000ln-LA; Sun, 17 May 2015 17:18:43 +0100
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
From: Colin Perkins <csp@csperkins.org>
Mime-Version: 1.0 (1.0)
Date: Sun, 17 May 2015 14:36:37 +0100
Message-Id: <EDB68650-CDE1-4557-943A-6F89AB925F1C@csperkins.org>
References: <554CE893.7050006@jive.com>
In-Reply-To: <554CE893.7050006@jive.com>
To: Simon Perreault <sperreault@jive.com>
X-Mailer: iPad Mail (12F69)
X-BlackCat-Spam-Score: -28
X-Mythic-Debug: Threshold = On =
Archived-At: <http://mailarchive.ietf.org/arch/msg/avt/QIYLX_95uMSp9ZY8hocA4LwluhY>
Cc: "draft-ietf-avtcore-rtp-circuit-breakers@tools.ietf.org" <draft-ietf-avtcore-rtp-circuit-breakers@tools.ietf.org>, "avt@ietf.org" <avt@ietf.org>
Subject: Re: [AVTCORE] Review of draft-ietf-avtcore-rtp-circuit-breakers-10
X-BeenThere: avt@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Audio/Video Transport Core Maintenance <avt.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/avt>, <mailto:avt-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/avt/>
List-Post: <mailto:avt@ietf.org>
List-Help: <mailto:avt-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/avt>, <mailto:avt-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 17 May 2015 16:18:47 -0000

Simon,

Thank you for your comments, and apologies for the slow response. I've made some responses inline. 


> On 8 May 2015, at 17:47, Simon Perreault <sperreault@jive.com> wrote:
> 
> Authors, WG,
> 
> I read draft-ietf-avtcore-rtp-circuit-breakers-10 as a probable
> implementer. Questions follow.
> 
> In general this is an exceptionally well written draft. I especially
> enjoyed the amount and quality of background information and rationale
> text. And I have zero grammatical nits to report!

Thank you!

> Thanks,
> Simon
> 
> ---
> 
> In section "4.  RTP Circuit Breakers for Systems Using the RTP/AVP Profile":
> 
>>   RTCP is a fundamental part of the RTP protocol, and the mechanisms
>>   described here rely on the implementation of RTCP.  Implementations
>>   that claim to support RTP, but that do not implement RTCP, cannot use
>>   the circuit breaker mechanisms described in this memo.  Such
>>   implementations SHOULD NOT be used on networks that might be subject
>>   to congestion unless equivalent mechanisms are defined using some
>>   non-RTCP feedback channel to report congestion and signal circuit
>>   breaker conditions.
> 
> Ok, fine, but how should *my* supposedly well-behaving implementation
> deal with those bad implementations? Status quo (i.e., no circuit breaker)?

If you want to interwork with those implementations, then you have no choice but to operate without a circuit breaker. I'd encourage you to use at least some form of consent check, to indicate that the remote end system still wants to receive your traffic, in such cases. I can add some words about this to the draft.

> Absent a priori knowledge of the remote endpoint's RTCP capabilities,
> would it be OK to arm circuit breakers upon reception of a first RTCP
> packet?

I'm not sure that's something I'd want to standardise, but it seems a reasonable practical solution. I'd have thought RTCP was signalled most times, anyway?

> ---
> 
> In section "4.1.  RTP/AVP Circuit Breaker #1: Media Timeout":
> 
>>   The extended highest sequence number received field is non-increasing
>>   if the sender receives at least CB_INTERVAL consecutive RTCP SR or RR
>>   packets that report the same value for this field, but it has sent
>>   RTP data packets, at a rate of at least one per RTT, that would have
>>   caused an increase in the reported value if they had reached the
>>   receiver.
> 
> How would "at a rate of at least one per RTT" be implemented in
> practical terms, keeping in mind that both the sending rate and the RTT
> vary during a session? Must the condition be satisfied all of the time
> or only part of the time? For example, what should happen when the
> condition is satisfied for all but one of the CB_INTERVAL RTCP reports?
> As an implementer, I need more guidance here.

The "at least one per RTT" bound is intended to be an approximate, long-term, average. Like much in the draft, it doesn't need to be too precise. I'm open to suggestions how best to phrase this in the text, but will try to add something. 

> Also, I assume that RTT is to be estimated from RTCP as usual, but it
> would help to be explicit about this.

Yes. Will do.

> Section "4.3.  RTP/AVP Circuit Breaker #3: Congestion" also uses the
> "more than one RTP packet per RTT" condition, so my comments also apply
> there.

Sure; same answer. Will clarify there too. 

> ---
> 
> About section "4.4.  RTP/AVP Circuit Breaker #4: Media Usability"...
> 
> Would it be appropriate for an interactive RTP receiver (e.g., a soft
> phone) to simply rely on the user hanging up the call? If so, it would
> be nice to spell it out for implementers.
> 
> Similarly, would it be OK when sending to an interactive RTP receiver to
> rely on the receiver hanging up, instead of guessing what might be
> usable or not?

In both cases, you should terminate the call without waiting for the user to hang up, if the loss or delay is such that the media will be unusable. This circuit breaker is intentionally vague, because different applications have different thresholds, but should be conservative, so it only terminates calls that are unambiguously unusable.

> More generally, why should senders implement this circuit breaker at
> all? Why not always rely on the receiver?

To protect the network, and avoid disrupting other applications, in case the user at the receiver has wandered off, and doesn't hang up when the call goes bad. Like most of the circuit breakers, I expect this will rarely be triggered because in the usual case – as you suggest – the users will have given up before the quality gets so bad as to trigger the circuit breaker. The circuit breakers are safety measures needed for the unusual cases.

Colin




-- 
Colin Perkins
http://csperkins.org/