Re: [rmcat] 5 tuples and rmcat-cc-requirements-01

Dave Taht <dave.taht@gmail.com> Tue, 31 December 2013 06:37 UTC

Return-Path: <dave.taht@gmail.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 7CDAC1AE3E6 for <rmcat@ietfa.amsl.com>; Mon, 30 Dec 2013 22:37:58 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2
X-Spam-Level:
X-Spam-Status: No, score=-2 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, 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 evinAFra8huv for <rmcat@ietfa.amsl.com>; Mon, 30 Dec 2013 22:37:56 -0800 (PST)
Received: from mail-wg0-x22f.google.com (mail-wg0-x22f.google.com [IPv6:2a00:1450:400c:c00::22f]) by ietfa.amsl.com (Postfix) with ESMTP id DB7F01AE383 for <rmcat@ietf.org>; Mon, 30 Dec 2013 22:37:55 -0800 (PST)
Received: by mail-wg0-f47.google.com with SMTP id n12so10554644wgh.26 for <rmcat@ietf.org>; Mon, 30 Dec 2013 22:37:49 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; bh=reSOpbKmNkwvruFMEwDgJTxCEM2tOCkuvzw7pBYsfUA=; b=O6y8jLCB5Y6shji+QLusJn9MGgRq06/jT5hmX+bSTi4SjtzV4ogMpufKXvr6cvOTCZ 355lKukWUILKanstqg1Gg4JMwh9vi/GWJcFI1BwkYoHPe4WhaacWdpKU7pWCuAKDSm0n QydK1kGpQgyZS976WkRmUrje4ElfjR+YtvWfi+P2ETYCc31zoiQJPzjVkgUBPB8cZUDp 9AML4FJHX9RltD98T7bP73lYyq+mYGrWAyObyt5i6DNqhAQsznrSRsDDgYjBe7bnvSYR n5hy9GUGSO2G6zLIPVg1eai6VuEcOxxJynR1Mx77Gcg5B7zZCFg8ZYM1zITsfRNO+x2A aGqg==
MIME-Version: 1.0
X-Received: by 10.194.110.138 with SMTP id ia10mr47634890wjb.3.1388471869360; Mon, 30 Dec 2013 22:37:49 -0800 (PST)
Received: by 10.217.123.69 with HTTP; Mon, 30 Dec 2013 22:37:49 -0800 (PST)
In-Reply-To: <52C17E9F.8060703@alvestrand.no>
References: <CAA93jw7FDddn2n23fm=rdUsDyGakNfyLkJDgNjoC43fSc4GnSA@mail.gmail.com> <52C17E9F.8060703@alvestrand.no>
Date: Mon, 30 Dec 2013 22:37:49 -0800
Message-ID: <CAA93jw4g7bBrxJFfhqVkq0EpezBTY+hahhAJyt5wh=1zTs1EiA@mail.gmail.com>
From: Dave Taht <dave.taht@gmail.com>
To: Harald Alvestrand <harald@alvestrand.no>
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: quoted-printable
Cc: "rmcat@ietf.org" <rmcat@ietf.org>
Subject: Re: [rmcat] 5 tuples and rmcat-cc-requirements-01
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: Tue, 31 Dec 2013 06:37:58 -0000

On Mon, Dec 30, 2013 at 6:09 AM, Harald Alvestrand <harald@alvestrand.no> wrote:
> Dave, this is interesting .... I think characterizing what the connection
> between type-of-traffic and applicable congestion is should be an rmcat
> issue, but may feed back into RTCWEB and even MMUSIC - so I'm sending this
> to rmcat only.
>
>
>
> On 12/30/2013 01:02 AM, Dave Taht wrote:
>>
>> I finally had a chance to read over
>>
>> http://tools.ietf.org/html/draft-ietf-rmcat-cc-requirements-01
>>
>> and also work at reproducing some of the difficulties present in the
>> current implementation of chrome in light of the two papers presented
>> at the last ietf on google congestion control. I went through tons of
>> tests and packet captures that pretty much reproduced the legion of
>> problems documented in
>>
>>
>> https://speakerdeck.com/vr000m/evaluating-googles-congestion-control-for-webrtc
>> and the other paper presented at ietf...
>>
>> and also fed webrtc traffic through the fq_codel and pie queue
>> management systems (with pretty good results). I have tons of captures
>> from each experiment if anyone wants them.
>>
>> So, I have some comments on this requirements document. (I'm new to
>> paying attention on rmcat, so a few of my questions are probably
>> answered by some document I haven't read yet. Steers appreciated. for
>> all I know I'm on the wrong mailing lists too. Sorry)
>>
>> In particular, the flows I was looking at multiplexed voice and video
>> on the same 5 tuple. I am curious as to the justification for this, as
>> voice (without silence suppression) is isochronous and video is not.
>> (is silence suppression used in webrtc?)
>
>
> This is a curious statement - what characteristic are you thinking about
> when you say that voice is "isochronous" and video is not?
> Both of them are produced one time-frame at a time, and both of them cause
> irritation at the receiver when the frames are displayed in anything but the
> same cadence.

On a per packet level, voice is typically one packet ranging in size
from 110 bytes to 300 every 10 or 20ms. (the opus codec goes down to
2.5ms) Video, in comparison, consists of a variable number of (often)
many packets depending on encoding, subframes, etc.

So from this viewpoint voice can be isochronous (lacking silence
suppression), and video is not.

> I think the irritation from jitter on voice is quite a bit higher than on
> video, but stuttering video isn't a good thing either.

jitter and loss on voice is often quite annoying. On music it's intolerable.

On video, I would not use the word "stuttering" which implies a
max-headroom sort of effect. Partial corruption of the output, blocky
output, etc are closer to words I would use.

>
>>
>> To me, multiplexing these two very different flows on the same ports
>> is not a good idea except under extreme port pressure, and not useful
>> in ipv6 or in non-natted environments at all. Even in a natted
>> environment, saving a single port is a false savings as (for example)
>> dns lookups punch dozens of holes through nat on a regular basis.
>>
>> Requiring that in most or all cases these two flow types be on unique
>> 5 tuples would give smarter queue management techniques on routers
>> (like sfq, or sqf (deployed at FT), or fq_codel (deployed at
>> free.fr)), a fighting chance. In particular it gives voice much higher
>> probability for drop-and-delay free behavior, and analyzing the delta
>> in drops and delay between a separate voice tuple and video tuple
>> could provide insight as to the congestion in the system.
>
> How does this effect happen?

Could you be more specific?

> In particular, does the separation of flows itself create lower loss
> probability for voice, or are you thinking of systems where the network
> elements "know" what the flows contain?

In nearly any packet scheduled system (drr, sfq,sqf, fq_codel, etc),
the separation of flows on a 5 tuple will result in (much) less delay,
jitter and loss for the lower rate flows. With sqf and fq_codel, if
the rate is low enough there will be near zero queuing delay, jitter
and loss on many workloads.

I try to encourage people to just try it to get a feel for what
happens. openwrt, cerowrt, any modern linux for all of the above,
cisco routers do drr, many dsl devices do sfq or sqf in their
firmware....

separation of flows does nothing terrible useful on a strict drop tail
system, but no harm either.

> What about multiplexing between different flows of the same media type?

Good question. There are many things I don't understand about webrtc's
intended audience.

What excites me most about it is the ability to do in-the-building
videoconferences without having to go over the internet for them.  As
for going over the internet... I think the cable industry is too
broken (currently) for any e2e congestion control algorithm to work at
all with serious cross traffic, with up and downlinks having 2 or more
seconds of buffering each. (unless fixed by one of the algorithms
above in a 3rd party router) FIOS and DSL users have a fighting
chance, 3g and LTE less so, and wifi needs some serious work.

So at the moment I'd like to be addressing the fixable e2e problems in
gcc (it can't even compete with itself!) and wanted to be able to
break things out on tuples to look at the data...

before drawing any conclusions on how to multiplex video flows.

My gut tells me you want one tuple per voice and per video flow, AND
to manage their congestion indicators together, but depending on the
level of statistical multiplexing of the video flows they could go on
a single tuple.

>> In current implementations, is it possible to force flows onto
>> different tuples?
>
>
> Absolutely - just don't negotiate bundling.

Pointer to a working example?

keep hoping there's working ipv6 code out there too, getting the stun
and turn stuff out of the loop long enough to look at simpler cases.

>
>>   What are the other flaws in suggesting or requiring
>> a different tuple?
>
>
>
>>
>> (note I'm not suggesting bulk data traffic get unique 5 tuples per flow)
>
>
> I wouldn't either.
> In current deployments, it's multiplexed with the media traffic on the same
> 5-tuple too - what would you suggest advising it to be bundled with, and
> why?

My understanding of the use case for that is that it is for p2p file
transfer. Given how prone to failure setup has been for this in other
protocols it seems to make some sense to bundle it on the video
tuple...

> (dropping the rest of the message - this should be enough for one thread)
>



-- 
Dave Täht

Fixing bufferbloat with cerowrt: http://www.teklibre.com/cerowrt/subscribe.html