Re: [rtcweb] An input for discussing congestion control (Fwd: New Version Notification for draft-alvestrand-rtcweb-congestion-00.txt)

Soo-Hyun Choi <> Tue, 20 September 2011 05:46 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 655C021F8B0F for <>; Mon, 19 Sep 2011 22:46:37 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2.977
X-Spam-Status: No, score=-2.977 tagged_above=-999 required=5 tests=[AWL=0.000, BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, RCVD_IN_DNSWL_LOW=-1]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id n6mVvNUzOwrk for <>; Mon, 19 Sep 2011 22:46:36 -0700 (PDT)
Received: from ( []) by (Postfix) with ESMTP id 45A5F21F8B0D for <>; Mon, 19 Sep 2011 22:46:36 -0700 (PDT)
Received: by fxd18 with SMTP id 18so198589fxd.31 for <>; Mon, 19 Sep 2011 22:48:59 -0700 (PDT)
Received: by with SMTP id d21mr699356faf.63.1316497738952; Mon, 19 Sep 2011 22:48:58 -0700 (PDT)
Received: from ( []) by with ESMTPS id b21sm446928fab.8.2011. (version=SSLv3 cipher=OTHER); Mon, 19 Sep 2011 22:48:57 -0700 (PDT)
Received: by bkaq10 with SMTP id q10so167260bka.31 for <>; Mon, 19 Sep 2011 22:48:55 -0700 (PDT)
Received: by with SMTP id f10mr212626bkt.379.1316497735840; Mon, 19 Sep 2011 22:48:55 -0700 (PDT)
MIME-Version: 1.0
Received: by with HTTP; Mon, 19 Sep 2011 22:37:43 -0700 (PDT)
In-Reply-To: <>
References: <> <> <> <> <>
From: Soo-Hyun Choi <>
Date: Tue, 20 Sep 2011 14:37:43 +0900
Message-ID: <>
To: Henrik Lundin <>
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Cc: Randell Jesup <>,
Subject: Re: [rtcweb] An input for discussing congestion control (Fwd: New Version Notification for draft-alvestrand-rtcweb-congestion-00.txt)
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Real-Time Communication in WEB-browsers working group list <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Tue, 20 Sep 2011 05:46:37 -0000

A question and a suggestion.

>>>> 4. Section 4.
>>>> "This algorithm is run every time a receive report arrives at the
>>>>    sender, which will happen [[how often do we expect? and why?]].  If
>>>>    no receive report is recieved within [[what timeout?]], the algorithm
>>>>    will take action as if all packets in the interval have been lost.
>>>>    [[does that make sense?]]"
>>>> The transmission of receiver reports is highly dependent on RTP profile,
>>>> the RTCP bandwidth, trr-int parameter and any feedback events.
>>>> If I start with assuming AVPF which seems reasonable in most browser to
>>>> browser case with our current proposals for RTP support. Then if there
>>>> are no feedback events the transmission of receiver reports will occur
>>>> as often as the bandwidth allows, but no more often than the value of
>>>> trr-int parameter.
>>>> Here is might be worth mentioning that I do expect trr-int to be set to
>>>> avoid RTCP reporting to often due to the relatively high RTCP bandwidth
>>>> values that will be set due to the multiplexing of audio and video in a
>>>> single RTP session. Thus avoiding that RTCP rates are as high or larger
>>>> than the audio streams they report in steady state.
>>> Agreed.  This is where my plans to suggest a baseline algorithm that
>>> melds
>>> the reception data of all the streams in the PeerConnection may be a
>>> significant advantage over doing bandwidth estimation on each stream
>>> independently.  We'll see if I can make the idea work, but there are some
>>> significant advantages if it does.  If not, we can estimate in each
>>> channel
>>> independently as per the Google algorithm.
>>> You can also use rtcp-fb PLI/etc events to hang these reports off of,
>>> increasing
>>> the frequency they get through with minimal extra bandwidth use.
>>>> When feedback events occur the stack will have the choice of sending a
>>>> RTCP RR, that is a choice provided due to the reduced size RTCP
>>>> specification included. But if the loss cumulative count diff is
>>>> non-zero it might be worth mandating that the RR/SR is included in any
>>>> such feedback RTCP packet.
>>> Exactly - or a TMMBR with the results of the receiver-side bandwidth
>>> calculations.
>>>> For that reason causing a feedback event when there is losses and
>>>> schedule them using the early algorithm may be a good choice to ensure
>>>> timely reporting of any loss.
>>>> If one uses AVP then the RTCP timing rules will give you when you
>>>> transmit RTCP feeedback and thus the parameterization becomes central
>>>> here. A clear issue is if people uses the minimal interval of 5 seconds
>>>> or the 360/Session_BW(in kbps). I would note that 5 seconds is very long
>>>> in adaptation situations.
>>> Yes.
> In the proposed algorithm, the RTCP interval adds to the system response
> time. The response time governs the bandwidth increase rate so that the step
> into over-use will have a limited delay build-up before it can be detected
> and mitigated. Thus, a long RTCP interval results in a slow adaptation, but
> it should still be stable.

I wonder how would you guarantee that such a long RTCP interval
doesn't result in instability when estimating bandwidth? Typically, a
delay-based CC algorithm can be vulnerable when timer become
inacurate. I suspect the delayed RTCP feedback can calculate available
bandwidth correctly. Why not use per-packet based feedback (using
AVPF, for example) in order not to cause any harm with this kind of

I would think that a CC mechanism, at least, should be able to
calculate and suggest right/correct rate to the upper layer's codec so
that it could determine whether it actually increase/decrease encoding
rate or not, depending upon CC's suggested rate.

Kind regards,