Re: [Covidimpacts-workshop] Forward Error Correction Qs

Cullen Jennings <fluffy@iii.ca> Fri, 13 November 2020 12:59 UTC

Return-Path: <fluffy@iii.ca>
X-Original-To: covidimpacts-workshop@ietfa.amsl.com
Delivered-To: covidimpacts-workshop@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 8895C3A0957 for <covidimpacts-workshop@ietfa.amsl.com>; Fri, 13 Nov 2020 04:59:13 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.897
X-Spam-Level:
X-Spam-Status: No, score=-1.897 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
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 dWo5pCr3MgB8 for <covidimpacts-workshop@ietfa.amsl.com>; Fri, 13 Nov 2020 04:59:12 -0800 (PST)
Received: from smtp76.ord1c.emailsrvr.com (smtp76.ord1c.emailsrvr.com [108.166.43.76]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 3B5513A0966 for <covidimpacts-workshop@iab.org>; Fri, 13 Nov 2020 04:59:12 -0800 (PST)
X-Auth-ID: fluffy@iii.ca
Received: by smtp18.relay.ord1c.emailsrvr.com (Authenticated sender: fluffy-AT-iii.ca) with ESMTPSA id 3334BE00E3; Fri, 13 Nov 2020 07:59:11 -0500 (EST)
Content-Type: text/plain; charset="utf-8"
Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.17\))
From: Cullen Jennings <fluffy@iii.ca>
In-Reply-To: <E36430C8-2A5F-4C46-A48E-BAFDD3A9F71B@kuehlewind.net>
Date: Fri, 13 Nov 2020 05:59:10 -0700
Cc: "Livingood, Jason" <Jason_Livingood=40comcast.com@dmarc.ietf.org>, "covidimpacts-workshop@iab.org" <covidimpacts-workshop@iab.org>
Content-Transfer-Encoding: quoted-printable
Message-Id: <35549EDF-C764-46AB-A516-EED98317158C@iii.ca>
References: <6262F72F-387A-47C3-9CCD-89D5C98CC166@cable.comcast.com> <B5215A9F-8B5F-4A6B-AD1E-58689519CFC2@iii.ca> <E36430C8-2A5F-4C46-A48E-BAFDD3A9F71B@kuehlewind.net>
To: Mirja Kuehlewind <ietf@kuehlewind.net>
X-Mailer: Apple Mail (2.3445.104.17)
X-Classification-ID: 601366fb-7dae-4caa-9c18-5f9f6a3a690e-1-1
Archived-At: <https://mailarchive.ietf.org/arch/msg/covidimpacts-workshop/EhL4wahDo3BpMrjzIn_jkWQUj5s>
Subject: Re: [Covidimpacts-workshop] Forward Error Correction Qs
X-BeenThere: covidimpacts-workshop@iab.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: COVID-19 Network Impacts Workshop <covidimpacts-workshop.iab.org>
List-Unsubscribe: <https://www.iab.org/mailman/options/covidimpacts-workshop>, <mailto:covidimpacts-workshop-request@iab.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/covidimpacts-workshop/>
List-Post: <mailto:covidimpacts-workshop@iab.org>
List-Help: <mailto:covidimpacts-workshop-request@iab.org?subject=help>
List-Subscribe: <https://www.iab.org/mailman/listinfo/covidimpacts-workshop>, <mailto:covidimpacts-workshop-request@iab.org?subject=subscribe>
X-List-Received-Date: Fri, 13 Nov 2020 12:59:14 -0000


> On Nov 13, 2020, at 4:25 AM, Mirja Kuehlewind <ietf@kuehlewind.net> wrote:
> 
> So you say the reaction to too few bandwidth was sending more data...?
> 
> Is the FEC fixed or is that somehow adopted dynamically?
> 

No, it’s not the case where as the packet loss goes up, the endpoints start sending more data. (that gets proposed on a regular basis but someone eventually points out why that is not such a hot idea)

At a high level the conceptual works along theses lines: 

1. The congestion control algorithm, or something else, provides an estimate of the bandwidth 

2. A rate controller decides what percentage of the bandwidth to allocate to each category of data that need to be sent: (audio, video, audio FEC, video FEC, feedback metrics, control). 

3. Given the bandwidth available for video, the rate controller will pick the resolution / frame rate to use for video 

4. Both opus and H.264 can dramatically adjust the bitrate they are sending at to match what the rate controller gives them as a target. 

That is a very gross over simplification of what any of the major systems do. What they actually do is a much more complicated but fits into that overall model. This area has a ton of IPR as well as trade secrets so it is not something that going to get discussed much on an open list. If you want to dig into details, I’m happy to do that outside an IETF context. The open source wbeRTC media engine is also a great example of what this looks like for people that want to dig deeper. 

One of the things that complicates the above is you have control loops running at very different times lines. The control loop changing the bitrate from the video decoder can not react to changing bandwidth as fast as the congestion control typically reacts. There are some great publications on how to deal with this at the USPTO. 

I also want to be a bit more nuanced about the quality of bandwidth. People tend to focus on how many bits per second users can get. Sure that matters but it is only one factor. If I had a 1.5 mbps connection that once a minute dropped all my packets for 1 second, it would be nearly impossible to have a good video call across that short of AI that predicts what I will say next. If I had the same connection and it lost twice as many packets as the first, but the losses were randomly distributed, that would deliver an awesome video conference without doing anything clever. Obviously jitter and latency are also important. The fact that we buy internet connections largely differentiated only by bandwidth in the advertising might be part of the focus on this.  I look forward 

The general quality of the internet that webex calls were running over was worse in March 2020 than it was in January 2020. VoIP apps have always had to deal with come users were on connections that were fast and some where slow - that was not new with covid-19. However the changes in other quality aspects of the internet were part of what caused significant shifts in how that bandwidth was allocated in step 2.