Spreed-High-Performance-Backend funktioniert nicht bei Videokonferenz mit mehr als ca. 20 Teilnehmern

Mittlerweile gibt es ja so einige Beschreibungen im Web, wie man den Struktur-AG-Signaling-Server selbst aufsetzen kann. Auch ich habe mich an so einer - an Schulen und Schulträger gerichtete - Beschreibung versucht: https://schulnetzkonzept.de/spreed.

Leider muss ich feststellen, dass der Signaling-Server bei Videokonferenzen mit mehr als 20 Teilnehmern nicht brauchbar funktioniert. Dabei ist die Auslastung am Signaling-Server (4 Cores, 16 GB RAM, 1 Gbit/s up und down, SSD) relativ gering.

Da die Videokonferenz-Teilnehmer selbst von einer hohen CPU-Last bei den Endgeräten berichten und chrome://webrtc-internals während der Konferenz so viele WebRTC-Verbindungen wie Teilnehmer zeigt (bei Google Meet oder Jitsi sieht man nur eine einzige WebRTC-Verbindung - auch bei mehreren Teilnehmern), vermute ich hier das Problem. Konkret denke ich, dass das Video-Room-Plugin von Janus nicht wirklich als SFU (Selective Forwarding Unit) agiert.

Unter https://github.com/mozilla/janus-plugin-sfu gibt es ein zusätzliches Janus-SFU-Plugin. Dieses ist aber nicht mit den aktuelleren Janus-Versionen kompatibel. Ggf. wäre dies aber erforderlich?

Könnte hier jemand Licht ins Dunkel bringen? Ich wäre sehr dankbar!

2 Likes

Wichtig zu wissen wäre ob der Janus-Server aus den Paketquellen installiert wurde oder ob dieser selbst mit entsprechendem repository kompiliert wurde.

Bei meinem HPB hat sich gezeigt, dass mindestens 8 CPU kerne erforderlich sind um die Belastung zu tragen. Serverintern f√ľr jeden Client eine Peer-to-Peer verbindung zu erzeugen um E2E verschl√ľsselung zu erm√∂glichen scheint wohl doch CPU lastiger zu sein als erwartet.

Bei meiner letzten Installation habe ich den Janus Server und erforderliche Pakete (Libnice, Libsrtp, Usrsctp, Libwebsockets) via make (bzw. ninja f√ľr Libnice) installiert (s. dazu auch die oben von mir erw√§hnte Beschreibung). Ich hatte Janus aber auch √ľber apt und diverse Repositories installiert.

In beiden F√§llen h√§lt wie oben beschrieben jeder Teilnehmer so viele WebRTC-Verbindungen zum HPB wie Teilnehmer in der Konferenz anwesend sind. In meinen Augen m√ľsste es aber so sein, dass jeder Teilnehmer nur eine WebRTC-Verbindung aufbaut und die Aufbereitung der Teilnehmervideos auf dem HPB erfolgt. Da dies in meinen Augen bei meinem Setup nicht der Fall ist, sind ab einer gewissen Teilnehmeranzahl die Clients mit den vielen WebRTC-Verbindungen √ľberfordert, und die Konferenz bricht zusammen.

Die Last des HPB ist bei mir wie gesagt bisher relativ gering.

Die Dienste Janus, Coturn und Signaling laufen laut Log ohne Fehler.