Re: [rmcat] Hackathon: RMCAT (and CCFB) in Jitsi (fwd)

Sergio Garcia Murillo <> Mon, 04 November 2019 11:00 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 5F2761200FE for <>; Mon, 4 Nov 2019 03:00:43 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.998
X-Spam-Status: No, score=-1.998 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, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (2048-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id E_2m2LOINrWs for <>; Mon, 4 Nov 2019 03:00:41 -0800 (PST)
Received: from ( [IPv6:2a00:1450:4864:20::442]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPS id E18751200E6 for <>; Mon, 4 Nov 2019 03:00:40 -0800 (PST)
Received: by with SMTP id a11so16494509wra.6 for <>; Mon, 04 Nov 2019 03:00:40 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20161025; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-language; bh=UFc2OTvHnx5t86Agyw2Vf97935YbeeGSDzCDicNUj/4=; b=C0MfH/v0hiNUSgq1ltsdMQMN94wpfDoyiypx1LptzxyToIhiVbVWg0eyGf8f2uRGEy A9vpTXVx5hmY2wUkfgXI1Rmn1LypTNomdeR6goWc5uOzgiZBF624WLqpznKLZOIFyvcp xYko45SKqnXkI/HTdOXLr3+xndBAE+xCeUGmavxFbdBQqJQYMHk6Y2Kxy5G4vnN9FoZ2 Jl7O2lLMpJHaAvo5V1yFIBB4X1XZOCP6vR3ZYftdpJpzamAXIGxE8QnNDfMIq+MEeqZh vruDQCeZVCta7JOAhy6F9bo5SGlJz4ERzDFrYojj3cqk1uzQ4oey4CMypaqx6sPRenan P3nw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language; bh=UFc2OTvHnx5t86Agyw2Vf97935YbeeGSDzCDicNUj/4=; b=nGba6l0QRFZFt9Rj7ANcilRmj7eSzl2zKgVWN228V4Tzl9IElPzEpn/hNkoPFZu0qX wDe6D0+9KRgXJLFKDecxlqVHEglIX1nXfE00zYzL3PXNi7LHswXpOqz8p9EOfZpRFVPv Wq/yoKw4leUDSWgjFLUCxLqXkkAIH/Rr9VoQ1l1a86y/3hvexrZ0EPAgZefkuAiqa96S Hf1XsS2/1kw06LQVvtuq2nkNnAu52Ujg879nKCZWwEgkvJFZlvRbFg5shnHFBjaYY6OT GrF3FMmLlUQGdZCvtLwPCdmzdH1+1C3tVKxmQewry9zci3/Tsf42B0/OXUmcfHPdcg3Z 3CRw==
X-Gm-Message-State: APjAAAVussM842An8tv1/KJRNjYt5sPlYbPTjL6mIgP4JtjOqDqGJMq2 chQ650GKWhMkL8Vy+++9cby2/1wSKzA=
X-Google-Smtp-Source: APXvYqzfo1xG96n4lkVxXZ/t3+JZ/vjlgMCT3bfEBV9HDT+7N/NEw0Hl33eD9XHhB1+38USnTyIBLQ==
X-Received: by 2002:adf:dd12:: with SMTP id a18mr12900244wrm.123.1572865239172; Mon, 04 Nov 2019 03:00:39 -0800 (PST)
Received: from [] ( []) by with ESMTPSA id y6sm7912367wrw.6.2019. for <> (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 04 Nov 2019 03:00:38 -0800 (PST)
References: <> <>
From: Sergio Garcia Murillo <>
Message-ID: <>
Date: Mon, 4 Nov 2019 12:00:44 +0100
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.9.0
MIME-Version: 1.0
In-Reply-To: <>
Content-Type: multipart/alternative; boundary="------------C049631AE1B235073BBE6EDE"
Content-Language: en-US
Archived-At: <>
Subject: Re: [rmcat] Hackathon: RMCAT (and CCFB) in Jitsi (fwd)
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "RTP Media Congestion Avoidance Techniques \(RMCAT\) Working Group discussion list." <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Mon, 04 Nov 2019 11:00:43 -0000

On 01/11/2019 21:32, Jonathan Lennox wrote:
>> On Oct 22, 2019, at 10:37 AM,Sergio Garcia Murillo 
>> < 
>> <>> wrote:
>> Hi Jonathan,
>> My C++ interface is slightly different, although I have it 
>> implemented for google's transport wide feedback message:
>> Main difference is that I have split your packet arrival processing 
>> in two calls, one for notifying when one rtp packet is sent and one 
>> to notify when a feedback packet is received with a map of the 
>> received stats. If you prefer to have an individual call per 
>> feedbacked rtp packet, I think it would be important to notify when 
>> the last packet of the feedback has been received as for example I do 
>> the final bwe calculations there.
> I had a single call in hopes of using the same algorithm interface to 
> implement REMB (receiver-side) feedback with the abs-send-time 
> extension; in that case you only have information at the time of 
> packet receipt, not packet transmission, and each piece of “feedback” 
> information comes in separately.

I tried that, but mixing REMB and transport wide cc feedback on same API 
didn't worked for me.

> I agree that some ability to tell the algorithm which feedback came in 
> at once would be useful.
>> I miss also to be able to control the congestion control part of the 
>> SFU, in my implementation which is based on BBR, I rely heavily on 
>> continuously sending RTX as probing bitrate as described on Varum's 
>> FRACTAL algorithm.
> How tightly coupled do you think probing needs to be with the 
> algorithm?  I’ve generally considered probing to be a separable piece 
> — the prober’s responsibility is to consume the output of the bwe 
> algorithm, and to generate traffic when appropriate (i.e. when the 
> overall application has some larger discrete quantum of bandwidth that 
> it wants to be able to start sending).

Most probably is a requirement given my design choices. As I said 
before, my implementation is a delay based algorithm inspired on BBR and 
I always send RTX as probing bitrate when not sending the upper layer 
available on the SFU. So when I detect a increase on the delay when the 
bloat bitrate is hit, I update the bwe estimation, but set the probing 
bitrate to a proportionate amount lower than the bloat bitrate to 
decrease the delay back to best case scenario


>> Last topic is troubleshooting, I have created a tool for viewing bwe 
>> stats dumps from my SFU:
>> If we can agree on a common format for the logs, we could enhance it 
>> and use it for troubleshooting and comparing behaviors.
> That does look useful.  Do you have documentation for the log format 
> you’re using?

I have updated the readme with that file 
Basically it is a csv file with a per packet stats (so should be quite 
easy to add with your API

Best regards