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

Sergio Garcia Murillo <> Tue, 22 October 2019 08:41 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id D76EB1200C5 for <>; Tue, 22 Oct 2019 01:41:17 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.997
X-Spam-Status: No, score=-1.997 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, URIBL_BLOCKED=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 moPEomhfpOQU for <>; Tue, 22 Oct 2019 01:41:16 -0700 (PDT)
Received: from ( [IPv6:2a00:1450:4864:20::42f]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPS id A2978120077 for <>; Tue, 22 Oct 2019 01:41:15 -0700 (PDT)
Received: by with SMTP id c2so11781407wrr.10 for <>; Tue, 22 Oct 2019 01:41:15 -0700 (PDT)
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=bfcwSdTLM4kF9Y2A+5xTwXbxJ40nHtV8iBZnCMnO1q8=; b=m0Exl0HIMjMba3GFKlJt6KojvLIufcg9VZboqG/WiPdjIggbZFYnnLOoea1Xidwkhh Z/q9jLqAnETq+t/iBsjU3Y48DErikxFYcRjkr3Xi16Q+z9xigqjhDxgmscgQPxZleZI/ Sx0zh3utvssPV1fAU3+wl8UAPfhYTM5rTKUv21Z09tMDOJedfVPup2CDcnOqKUuqJHkk wSxGOyNUGr6clagZ8mPuo0b62g4a2Th4wur3E+8lO8/3i/SJC1e2ZA4L9ahAZZOs0r64 g/AiRYf0RGQnD/ouIiUW6iCn6Wrxx5jzNkhPaPo82X21y0YrT/P1Oc4E3+EBAK7ofDCM cDjg==
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=bfcwSdTLM4kF9Y2A+5xTwXbxJ40nHtV8iBZnCMnO1q8=; b=MzutWvtezRbKtfkh/WPfP4BFDy31IshQ1MXVDT4DPwzKNT9Fv73wXyA0Rm4cT2Vaab vTAey2mKKqFmbDZq3wpxNocLv+3Nth/LxKdDMgMs8r+13oSHcreU7iSwtYzA3dEJX+oV Shb5uNHz5z2dcRH/E1aOU/Spc2jKLc+tgEyzS/yp6yIfQ3i2JfIoYyKf533e2Q7UYPOL JPKQDZs/VV3nCkrTxYpjYwVxESxBBKyBi88KHHdEWe2iF5gdqAUIdWlcH2xw3S9ESIQZ HM1T//RHLC3TlDAIC54yo8dSuuHoAwuDb5YVTi5AI48RV7Q7QIG/ZEovqY+BoX383Ypj opGw==
X-Gm-Message-State: APjAAAWZ4pN/ds/5HfpnCb3FeDZ0SGoE/cVjlsTINW810HcQClY8xB1f FcAYy6WrCoW/FKZtOBeZ15BfjzYR678=
X-Google-Smtp-Source: APXvYqyoX083r5hOOaPCrF+Bt16kq6iXLFPdCgyupfbciUK8h6mBK2nPod9+QGTj0D9Nq1qEwlzliA==
X-Received: by 2002:a5d:6b0a:: with SMTP id v10mr2221148wrw.32.1571733673691; Tue, 22 Oct 2019 01:41:13 -0700 (PDT)
Received: from [] ( []) by with ESMTPSA id z189sm21433145wmc.25.2019. for <> (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 22 Oct 2019 01:41:12 -0700 (PDT)
References: <>
From: Sergio Garcia Murillo <>
Message-ID: <>
Date: Tue, 22 Oct 2019 10:41:12 +0200
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="------------5D5C38D83C58CF3B0A71A991"
Content-Language: en-US
Archived-At: <>
Subject: Re: [rmcat] Hackathon: RMCAT (and CCFB) in Jitsi
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: Tue, 22 Oct 2019 08:41:18 -0000

Hi Jonathan,

This is cool! I recently spent a couple of months implementing sender 
side BWE support on my SFU too so would be great to share experiences 
and try to get something working together.

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 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.

The main problem when implementing the bwe was about how to test it and 
troubleshoot it. I tried to use the ns3-rmcat repo, but the differences 
in behavior with my sfu are so huge that it was not practical. I tried 
also to use the ns3 direct code execution and reuse the ns3-rmcat 
scenarios, but the ns3-dce does not work at all with latest linux versions.

I ended up testing with custom linux tc scripts, but I am not really 
sure that the ones I tested are meaningful or how to map them to the 
rmcat test scenarios. If we could create a common set of tc script 
modeling the rmcat test cases I think that would be very useful for all 
of us.

I won't be attending the Hackaton in Singapore, but Cosmo's Kite team 
will, so we could integrate those tc scripts into Kite's network 
instrumentation tests and have a run test with them for the Hackaton.

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.

Best regards
On 21/10/2019 20:34, Jonathan Lennox wrote:
> Hi, all —
> As I’m now at 8x8 working on the open-source Jitsi project 
> (, I’ve been working on modifying the Jitsi 
> Videobridge to make it easy to adapt it for alternate bandwidth 
> estimation algorithms.  I hope this could be a good environment to 
> make running-code RMCAT testing and comparisons possible.
> The API I’ve created is hopefully clean and simple, modeled on the one 
> in the ns3-rmcat repo with some changes.  The code is written in 
> Kotlin, so Kotlin and Java should work with it immediately, and native 
> (C or C++) should be able to work through JNI.
> The interface can be seen at 
> I welcome any comments, and I’d love it if people could give it a try 
> — I’d be able to help out to let people get a Jitsi meet environment 
> working.
> Furthermore, I’ll be attending the Hackathon in Singapore.  Is anyone 
> else planning to attend, in person or remotely, to work on RMCAT or 
> CCFB work?  I’d love to work with folks to try to get interop or testing.
> —
> Jonathan Lennox
> <>