WebRTC i stor skala: Hur Mandraki hanterar massiva gruppvideosamtal
Hur Mandrakias SFU-arkitektur levererar låglatens, krypterade gruppvideosamtal — och hur den skalar till hundratals samtidiga sessioner över europeisk infrastruktur.
Gruppvideosamtal är en av de funktioner som verkar enkla för användare men kräver betydande teknisk komplexitet under ytan. Ett samtal mellan två personer är relativt enkelt — två parter utbyter media direkt. Men så snart du lägger till en tredje deltagare, ökar arkitekturbesluten, och när du når femtio deltagare över flera samtidiga sessioner, hanterar du ett genuint svårt distribuerat systemproblem.
Den här artikeln förklarar hur Mandrakias realtidsmediearkitektur är utformad för massiv skala — utan att kompromissa med kryptering eller datasuveränitet.
Varför inte peer-to-peer
I en peer-to-peer-mesh-topologi skickar varje deltagare sin medieström direkt till varje annan deltagare. För ett samtal med N deltagare skickar varje person N-1 strömmar och tar emot N-1 strömmar. Det totala antalet anslutningar är N*(N-1), och varje deltagares uppladdningsbandbreddskrav skalar linjärt med antalet deltagare.
Detta fungerar tillräckligt bra för tre eller fyra deltagare med bra internetanslutningar. Utanför det fungerar det inte. En deltagare med en uppladdningshastighet på 5 Mbps som skickar en videostream på 1,5 Mbps kan bara betjäna tre peer innan uppladdningshastigheten mättas. CPU-användningen för att koda flera strömmar ökar snabbt. Och nätverksförhållandena mellan godtyckliga par av deltagare är oförutsägbara.
Mesh-topologi är elegant i teorin och opraktisk i stor skala.
SFU-ansatsen
En Selective Forwarding Unit (SFU) sitter i mitten av samtals-topologin. Varje deltagare skickar en enda uppladdningsström till SFU. SFU vidarebefordrar sedan den strömmen till alla andra deltagare. Deltagarens uppladdningsbandbredd är konstant oavsett antalet deltagare — de skickar alltid en ström. SFU hanterar utbredningen.
Den “selektiva” delen är viktig. SFU vidarebefordrar inte enkelt varje ström till varje deltagare. Det fattar intelligenta vidarebefordringsbeslut baserat på nätverksförhållanden, deltagarsynlighet och tillgänglig bandbredd. Om en deltagares nedladdningsanslutning är begränsad, kan SFU vidarebefordra lägre upplösningslager. Om en deltagare inte för närvarande är synlig i användargränssnittet (t.ex. i ett stort samtal där endast den aktiva talaren visas i full storlek), kan SFU reducera eller pausa vidarebefordran av deras ström.
Detta är grundläggande annorlunda än en Multipoint Control Unit (MCU), som avkodar alla inkommande strömmar, komponerar dem till en enda blandad ström, omkodar den och skickar den sammansatta strömmen till varje deltagare. MCUs är CPU-intensiva, lägger till kodningsfördröjning och — kritiskt — kräver åtkomst till klartextmediet, vilket gör dem oförenliga med end-to-end-kryptering.
En SFU vidarebefordrar krypterade paket utan att avkoda dem. Det är detta som gör SFrame-baserad end-to-end-kryptering möjlig i ett gruppsamtal. SFU dirigerar krypterad text.
Mandrakias SFU-arkitektur
Mandraki använder en öppen källkods-SFU-bibliotek som integreras direkt i vår infrastruktur. Istället för att förlita sig på en monolitisk tredjepartsmediaserver, integrerar vi SFU som ett bibliotek inom vår egen kodbas. Detta ger oss full kontroll över hur det integreras med vår applikationslager, signalprotokoll och autentiseringssystem.
SFU använder en multi-arbetare-arkitektur. Varje arbetare är en separat nativ process som hanterar den faktiska medieroutningen nära native-prestanda. Koordineringslagret hanterar arbetare, transporter och gränssnitt med vår applikationslogik. Denna separation håller mediabanorna snabba medan kontrollbanan förblir flexibel.
SFU stöder simulcast och SVC (skalbar videokodning), som är avgörande för bandbreddsadaptiv vidarebefordran. Deltagarnas webbläsare kodar sin video i flera kvalitetsnivåer samtidigt. SFU väljer den lämpligaste nivån för varje mottagare baserat på deras tillgängliga bandbredd och användargränssnittssammanhang.
Skalning till hundratals sessioner
För stora distributionsmiljöer är arkitekturen utformad kring horisontell skalning med intelligent sessionsdirigering.
Multi-instans-SFU-distribution. Flera SFU-instanser körs över tillgänglighetszoner. Varje instans registrerar sin kapacitet med ett koordineringslager. När ett nytt samtal skapas, väljer systemet SFU-instansen med den mest tillgängliga kapaciteten. Deltagare i samma samtal dirigeras alltid till samma SFU-instans för optimal medieroutning.
Arbetar-nivå-parallellism. Varje SFU-process genererar flera nativa arbetare — vanligtvis matchande antalet tillgängliga CPU-kärnor. Varje arbetare kan hantera flera samtalssalar oberoende. Detta innebär att en enda SFU-server med 16 kärnor kan effektivt hantera dussintals samtidiga samtal, var och en med upp till 50 deltagare.
Bandbreddsadaptiv vidarebefordran. För samtal med många deltagare, kickar flera optimeringar in automatiskt. Aktiv talardetektering reducerar antalet högkvalitetsströmmar som behöver vidarebefordras. Simulcast-lagerval selektivitet blir mer aggressiv, föredrar lägre lager för osynliga deltagare. Endast ljud-återställning är tillgänglig för deltagare med kraftigt begränsad bandbredd.
Europeisk multi-zon-distribution. Mandrakis infrastruktur körs över flera tillgänglighetszoner inom EU på europeisk hyperscale-infrastruktur. SFU-instanser distribueras nära användarna, vilket reducerar rundtur-fördröjningen för mediapaket. All medieroutning stannar inom europeiska gränser — inga medier dirigeras genom icke-EU-infrastruktur.
NAT-traversal
WebRTC:s största styrka — direkt peer-to-peer-anslutning — är också dess största utmaning. De flesta enheter sitter bakom NAT (Network Address Translation)-brandväggar som förhindrar direkt inkommande anslutningar. WebRTC använder ICE (Interactive Connectivity Establishment) för att upptäcka en fungerande nätverksväg, prova direkt anslutning, STUN-medierad anslutning och TURN-relä i sekvens.
Mandraki kör dedikerade TURN-servrar bredvid SFU-infrastrukturen. TURN fungerar som en relä av sista hand — när en deltagare inte kan etablera en direkt anslutning till SFU (på grund av restriktiva brandväggar, symmetrisk NAT eller företagsproxyservrar), flödar mediet genom TURN-servern. Detta lägger till någon fördröjning men säkerställer anslutning.
TURN-servrarna stöder både UDP och TCP, plus TLS för miljöer som endast tillåter HTTPS-trafik. Liksom allt annat i vår stack, körs de helt inom EU.
End-to-end-kryptering i stor skala
SFU-arkitekturen är specifikt vald för att den bevarar end-to-end-krypteringskompatibilitet. Med hjälp av WebRTC Encoded Transforms och SFrame-protokollet (RFC 9605), krypteras media-ramar på avsändarens enhet innan de når SFU. SFU vidarebefordrar de krypterade ramarna till mottagarna, som dekrypterar dem lokalt.
SFU har aldrig åtkomst till klartextmedia. Det dirigerar krypterad text. Detta innebär att även i stor skala — med dussintals deltagare och flera samtidiga samtal — kvarstår krypteringsgarantierna. Inga servrar i vår infrastruktur ser eller bearbetar odkrypterat ljud eller video.
Detta är ett grundläggande arkitekturval. Många plattformar hävdar kryptering men använder MCU-baserad arkitektur som kräver server-sidig avkodning. Mandrakias SFU-ansats innebär att kryptering inte bara är en funktion — det är en strukturell garanti.
Övervakning och tillförlitlighet
WebRTC-problem är notoriskt svåra att diagnostisera. Vi samlar in klient-sidans telemetri, inklusive ICE-anslutningstillståndsövergångar, valda kandidatparstyper, rundtur-fördröjningsuppskattningar, paketförlustfrekvenser och bandbreddsuppskattningar. Dessa mått batchas och skickas till vår telemetri-slutpunkt för aggregering.
På serversidan loggar SFU transport-händelser, producent- och konsument-livscykel och bandbredds-uppskattning. Kombinerat med klient-sidans telemetri, ger detta en omfattande vy av samtalskvalitet som tillåter oss att identifiera och åtgärda problem systematiskt.
Realtidskommunikation i stor skala är en djup teknisk utmaning. Vi fortsätter att investera i media-infrastrukturen som gör Mandrakias samtal tillförlitliga, låglatenta och krypterade från slut till slut — allt inom suverän europeisk infrastruktur.