From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mail.toke.dk; spf=pass (mailfrom) smtp.mailfrom=irif.fr (client-ip=2001:660:3301:8000::1:2; helo=korolev.univ-paris7.fr; envelope-from=jch@irif.fr; receiver=) Received: from korolev.univ-paris7.fr (korolev.univ-paris7.fr [IPv6:2001:660:3301:8000::1:2]) by mail.toke.dk (Postfix) with ESMTPS id 173738FEFF0 for ; Fri, 17 Dec 2021 13:14:33 +0100 (CET) Received: from mailhub.math.univ-paris-diderot.fr (mailhub.math.univ-paris-diderot.fr [81.194.30.253]) by korolev.univ-paris7.fr (8.14.4/8.14.4/relay1/82085) with ESMTP id 1BHCEQnd025162; Fri, 17 Dec 2021 13:14:26 +0100 Received: from mailhub.math.univ-paris-diderot.fr (localhost [127.0.0.1]) by mailhub.math.univ-paris-diderot.fr (Postfix) with ESMTP id F3D021049DC; Fri, 17 Dec 2021 13:14:25 +0100 (CET) X-Virus-Scanned: amavisd-new at math.univ-paris-diderot.fr Received: from mailhub.math.univ-paris-diderot.fr ([127.0.0.1]) by mailhub.math.univ-paris-diderot.fr (mailhub.math.univ-paris-diderot.fr [127.0.0.1]) (amavisd-new, port 10023) with ESMTP id 0LrqGErS6kkq; Fri, 17 Dec 2021 13:14:23 +0100 (CET) Received: from pirx.irif.fr (unknown [78.194.40.74]) (Authenticated sender: jch) by mailhub.math.univ-paris-diderot.fr (Postfix) with ESMTPSA id A2E0F1049D9; Fri, 17 Dec 2021 13:14:23 +0100 (CET) Date: Fri, 17 Dec 2021 13:14:23 +0100 Message-ID: <87o85fl97k.wl-jch@irif.fr> From: Juliusz Chroboczek To: "Gabriel Kerneis" In-Reply-To: References: User-Agent: Wanderlust/2.15.9 (Almost Unreal) Emacs/27.1 Mule/6.0 MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Content-Type: text/plain; charset=US-ASCII X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.7 (korolev.univ-paris7.fr [194.254.61.138]); Fri, 17 Dec 2021 13:14:26 +0100 (CET) X-Miltered: at korolev with ID 61BC7F22.000 by Joe's j-chkmail (http : // j-chkmail dot ensmp dot fr)! X-j-chkmail-Enveloppe: 61BC7F22.000 from mailhub.math.univ-paris-diderot.fr/mailhub.math.univ-paris-diderot.fr/null/mailhub.math.univ-paris-diderot.fr/ X-j-chkmail-Score: MSGID : 61BC7F22.000 on korolev.univ-paris7.fr : j-chkmail score : . : R=. U=. O=. B=0.000 -> S=0.000 X-j-chkmail-Status: Ham Message-ID-Hash: ORC36XGUEKT4L6PACXP5B46WUWI5YFQA X-Message-ID-Hash: ORC36XGUEKT4L6PACXP5B46WUWI5YFQA X-MailFrom: jch@irif.fr X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: galene@lists.galene.org X-Mailman-Version: 3.3.5 Precedence: list Subject: [Galene] Re: =?iso-8859-1?q?Gal=E8ne?= and Signal List-Id: =?utf-8?q?Gal=C3=A8ne_videoconferencing_server_discussion_list?= Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: > https://signal.org/blog/how-to-build-encrypted-group-calls/ Thanks a lot, Gabriel, that's an interesting link. > TL;DR: Signal needed an SFU with good congestion control and scaling > properties. Uh-huh. > They evaluated a number, found that only jitsi and mediasoup had good > enough congestion control at the time (it was over a year ago), Yes, that's a known limitation of Galene: Galene is pretty good at handling congestion in the server->client direction, but only does loss-based congestion control in the client->server direction: if the sender's link is bufferbloated, then the feedback loop has a too large time constant, and delay increases. This is not much of a problem during lectures, since Galene is designed for lecturing, and the bottleneck link tends to be the one between the server and the students (receivers). On the other hand, it's sometimes an issue when the student is the sender: I've just done three days of oral examinations over Galene, and in two cases I've needed to ask the student to manually reduce their video rate in order to get a stream of acceptable quality. I'm quite impressed by Signal's code, it looks like they did manage to pull it off. The bit of the code that is missing in Galene is here: https://github.com/signalapp/Signal-Calling-Service/blob/main/src/googcc.rs#L152 > picked one but it used too much CPU so they wrote their own in Rust. Yeah, I'm unfortunately not surprised. Jitsi and mediasoup are currently the SFUs with the best set of features, but they are not necessarily the most parsimonious ones. There are some other interesting bits in their code that I might be able to learn from. For example, they do include a metrics server, which will be useful to me since I have no experience whatsoever with metrics, and the patches I received to add metrics to Galene did not appear to be useful to me (they were apparently written by someone who had been ordered to add metrics to Galene, but didn't stop to think about which metrics are likely to be useful). If anyone is good at reading Rust code, please find out which metrics they provide, and send a summary to the list. Plenty of stuff to do on Galene, and I'll hopefully have some time after the exam session ends (on 14 January). -- Juliusz