Re: [rmcat] How to handle an increasing send buffer

"Mo Zanaty (mzanaty)" <mzanaty@cisco.com> Wed, 12 November 2014 08:43 UTC

Return-Path: <mzanaty@cisco.com>
X-Original-To: rmcat@ietfa.amsl.com
Delivered-To: rmcat@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id E597F1A8852 for <rmcat@ietfa.amsl.com>; Wed, 12 Nov 2014 00:43:56 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.494
X-Spam-Level:
X-Spam-Status: No, score=-14.494 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, J_CHICKENPOX_37=0.6, RCVD_IN_DNSWL_HI=-5, RP_MATCHES_RCVD=-0.594, SPF_PASS=-0.001, USER_IN_DEF_DKIM_WL=-7.5] 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 TuNPf3zLUZOs for <rmcat@ietfa.amsl.com>; Wed, 12 Nov 2014 00:43:49 -0800 (PST)
Received: from rcdn-iport-3.cisco.com (rcdn-iport-3.cisco.com [173.37.86.74]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 715961A8850 for <rmcat@ietf.org>; Wed, 12 Nov 2014 00:43:49 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=8313; q=dns/txt; s=iport; t=1415781829; x=1416991429; h=from:to:subject:date:message-id:references:in-reply-to: mime-version; bh=vo1BoBymCByGD7YWLJRiIhYCZsrTahAVqNFHNw6NvUU=; b=kDrwraW0LuFFh+zrlv2iCV2NkViayF0h3EaLRlTVT+sNIvU9xL/h83NT FXbJTuo6SErmaiqHv+VtDTVE5iwUmEfw9fDVPMseAWaTHa6CFGEBd51xb XvQEVoQ7nJ7Q4hYuM4u3bFYR78maua7L55Zk0WpnMktjmzRBJr9w9ws6x U=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AhoFAHMcY1StJA2M/2dsb2JhbABcgkhGVFkEzCaHTwKBGxYBAQEBAX2EAwEBBG4bAgEIPwcyFBECBAESG4gmDc1sAQEBAQEBAQMBAQEBAQEYBJA8X4RLBZAWgiSEU4JIhFyBNIcEiiWECoN8bYEGBzuBAwEBAQ
X-IronPort-AV: E=Sophos;i="5.07,367,1413244800"; d="scan'208,217";a="371482234"
Received: from alln-core-7.cisco.com ([173.36.13.140]) by rcdn-iport-3.cisco.com with ESMTP; 12 Nov 2014 08:43:48 +0000
Received: from xhc-aln-x09.cisco.com (xhc-aln-x09.cisco.com [173.36.12.83]) by alln-core-7.cisco.com (8.14.5/8.14.5) with ESMTP id sAC8hmc4003525 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=FAIL); Wed, 12 Nov 2014 08:43:48 GMT
Received: from xmb-rcd-x14.cisco.com ([169.254.4.140]) by xhc-aln-x09.cisco.com ([173.36.12.83]) with mapi id 14.03.0195.001; Wed, 12 Nov 2014 02:43:48 -0600
From: "Mo Zanaty (mzanaty)" <mzanaty@cisco.com>
To: Randell Jesup <randell-ietf@jesup.org>, "rmcat@ietf.org" <rmcat@ietf.org>
Thread-Topic: [rmcat] How to handle an increasing send buffer
Thread-Index: AQHP/lTGwDkGhc0nkk2Tbgj2jkddMA==
Date: Wed, 12 Nov 2014 08:43:48 +0000
Message-ID: <D08884B0.3E2CA%mzanaty@cisco.com>
References: <D087C470.D901%xiaoqzhu@cisco.com> <5462C182.3040703@jesup.org>
In-Reply-To: <5462C182.3040703@jesup.org>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
user-agent: Microsoft-MacOutlook/14.4.5.141003
x-originating-ip: [64.100.32.216]
Content-Type: multipart/alternative; boundary="_000_D08884B03E2CAmzanatyciscocom_"
MIME-Version: 1.0
Archived-At: http://mailarchive.ietf.org/arch/msg/rmcat/gx3cDIekwilX2RE_qD-ZqA0AiyY
Subject: Re: [rmcat] How to handle an increasing send buffer
X-BeenThere: rmcat@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: "RTP Media Congestion Avoidance Techniques \(RMCAT\) Working Group discussion list." <rmcat.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rmcat>, <mailto:rmcat-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/rmcat/>
List-Post: <mailto:rmcat@ietf.org>
List-Help: <mailto:rmcat-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rmcat>, <mailto:rmcat-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 12 Nov 2014 08:43:58 -0000

I encourage folks to read and give feedback on the app interaction draft which covers all of this.

The interaction between the congestion control and encoder is limited to things like Allowed Rate (CC to codec), Media Elasticity (codec to CC), etc.

Codec decisions like changing frame rate, frame type, quantization, etc. are not part of the CC-codec interaction, so no solution candidate should include such things.

Simulated codecs should have the exact same interactions with CC as real ones, and their internal behavior should model real ones. For example, simulate changes in frame rate, frame type, quantization, etc. with proportional changes in synthetic output size and frequency.

Mahalo!
Mo


On 11/11/14, 9:10 PM, Randell Jesup <randell-ietf@jesup.org<mailto:randell-ietf@jesup.org>> wrote:

On 11/11/2014 6:53 PM, Xiaoqing Zhu (xiaoqzhu) wrote:
Regarding what’s the best way to model the encoder behavior …

We submitted a new draft on synthetic video traffic modeling for RMCAT evaluation, which contains some discussions what behaviors we want to model for such a codec (Sec 3):

https://tools.ietf.org/html/draft-zhu-rmcat-video-traffic-source-00

Thought I forwarded the new draft submission to the mailing list before but turns out I never did (Thanks to Varun for pointing this out).

I would NOT have the congestion controller send "drop frame" commands.  It should indicate:
* Estimated bitrate share
* Target bitrate (assuming continuous generation)
* Estimated additional one-way-delay above base estimate
and/or estimated number of buffered bits at bottleneck
* Loss indication/level (not for direct recovery - that's handled by other RTCP messages - but to tune the generated traffic

For the synthetic algorithm, I suggest that the fake encoder drop limited number of frames when the overhang (bits-behind-the-8-ball, number of bits buffered at bottleneck, or additional OWD*bitrate - all ways to say the same thing) is on the order of multiple encoded frames.  This moves the frame skipping out where it belongs, in the app/encoder (which we're abstracting here).

Errors when reported back to the sender would invoke one of several recovery mechanisms:
* retransmit - congestion-invoked loss means retransmit will need to steal N bits from your available total in the next encoding cycle, perhaps plus more.
* FEC - means loss may not cause an error result, at the code of "burning" some of your bandwidth.   Adaptive FEC will use more bits if errors are higher (or are anticipated to, see Varun's paper), so differences between algorithms in resultant error rates will affect quality (reduced by using more FEC bits) and number of recoveries-by-IDR (when FEC fails).
* IDR request - PLI/etc - classic recovery, causes a burst of traffic and in many (not all) cases may be best followed by a frame drop or two or three.  Obviously the size of the burst will affect the delay, but also affects quality.  This can be compensated for without waiting for a delay signal.  Note that dropping  frames is NOT good if we're not causing or near a bottleneck.

Since errors caused by the congestion mechanism affect the sending codec rates, they're important.

--
Randell Jesup -- rjesup a t mozilla d o t com