Mandraki Mandraki
Kom i gang
Tilbage til blog
webrtc sfu technical infrastructure scale

WebRTC i stor skala: Sådan håndterer Mandraki massive gruppeopkald

Hvordan Mandrakis SFU-arkitektur leverer krypterede gruppevideoopkald med lav latens — og hvordan den skalerer til hundredvis af samtidige sessioner på europæisk infrastruktur.

Mandraki Team ·

Gruppevideoopkald er en af de funktioner, der virker enkle for brugerne, men som indebærer betydelig teknisk kompleksitet under overfladen. Et en-til-en-opkald er relativt ligetil — to peers udveksler medier direkte. Men så snart man tilføjer en tredje deltager, mangedobles arkitekturbeslutningerne, og når man når halvtreds deltagere på tværs af flere samtidige sessioner, har man at gøre med et reelt hårdt distribueret systemproblem.

Dette indlæg forklarer, hvordan Mandrakis realtidsmediearkitektur er designet til massiv skala — uden at gå på kompromis med kryptering eller datasuverænitet.

Hvorfor ikke peer-to-peer

I en peer-to-peer mesh-topologi sender hver deltager sin mediestrøm direkte til hver anden deltager. For et opkald med N deltagere sender hver person N-1 strømme og modtager N-1 strømme. Det samlede antal forbindelser er N*(N-1), og hver deltagers krav til upload-båndbredde skalerer lineært med antallet af deltagere.

Dette fungerer rimeligt for tre eller fire deltagere med gode internetforbindelser. Derudover falder det fra hinanden. En deltager med en upload på 5 Mbps, der sender en 1,5 Mbps videostrøm, kan kun servicere tre peers, før uploaden mættes. CPU-forbruget til kodning af flere strømme stiger hurtigt. Og netværksforholdene mellem vilkårlige par af deltagere er uforudsigelige.

Mesh-topologi er elegant i teorien og upraktisk i stor skala.

SFU-tilgangen

En Selective Forwarding Unit (SFU) sidder i centrum af opkaldstopologien. Hver deltager sender en enkelt upload-strøm til SFU’en. SFU’en videresender derefter denne strøm til alle andre deltagere. Deltagerens upload-båndbredde er konstant uanset antallet af deltagere — de sender altid én strøm. SFU’en håndterer fan-out.

Det “selektive” element er vigtigt. SFU’en sender ikke blot hver strøm til hver deltager. Den træffer intelligente videresendelsesbeslutninger baseret på netværksforhold, deltagersynlighed og tilgængelig båndbredde. Hvis en deltagers download-forbindelse er begrænset, kan SFU’en videresende lag med lavere opløsning. Hvis en deltager ikke aktuelt er synlig i brugergrænsefladen (f.eks. i et stort opkald, hvor kun den aktive taler vises i fuld størrelse), kan SFU’en reducere eller pause videresendelsen af deres strøm.

Dette er fundamentalt forskelligt fra en Multipoint Control Unit (MCU), der afkoder alle indkommende strømme, sammensætter dem i en enkelt blandet strøm, gen-koder den og sender kompositionen til hver deltager. MCU’er er CPU-intensive, tilføjer kodningslatens og — afgørende — kræver adgang til klartekst-medierne, hvilket gør dem inkompatible med end-to-end-kryptering.

En SFU videresender krypterede pakker uden at afkode dem. Det er det, der gør SFrame-baseret end-to-end-kryptering muligt i et gruppeopkald. SFU’en router chiffertekst.

Mandrakis SFU-arkitektur

Mandraki bruger et open source SFU-bibliotek, der er integreret direkte i vores infrastruktur. I stedet for at læne os op ad en monolitisk tredjeparts-medieserver indlejrer vi SFU’en som et bibliotek i vores egen kodebase. Det giver os fuld kontrol over, hvordan den integreres med vores applikationslag, signaleringsprotokol og autentificeringssystem.

SFU’en bruger en multi-worker-arkitektur. Hver worker er en separat native proces, der håndterer den faktiske mediarouting med næsten native ydeevne. Koordineringslaget administrerer workers, transporter og grænseflader med vores applikationslogik. Denne adskillelse holder mediestien hurtig, mens kontrolstien forbliver fleksibel.

SFU’en understøtter simulcast og SVC (Scalable Video Coding), som er essentielle for båndbredde-adaptiv videresendelse. Deltagernes browsere koder deres video på flere kvalitetsniveauer samtidigt. SFU’en vælger det passende niveau for hver modtager baseret på deres tilgængelige båndbredde og UI-kontekst.

Skalering til hundredvis af sessioner

Til implementeringer i stor skala er arkitekturen designet omkring horisontal skalering med intelligent sessionsrouting.

Multi-instance SFU-implementering. Flere SFU-instanser kører på tværs af tilgængelighedszoner. Hver instans registrerer sin kapacitet hos et koordineringslag. Når et nyt opkald oprettes, vælger systemet den SFU-instans med mest tilgængelig kapacitet. Deltagere i samme opkald routes altid til den samme SFU-instans for optimal mediarouting.

Worker-niveau parallelisme. Hver SFU-proces opretter flere native workers — typisk svarende til antallet af tilgængelige CPU-kerner. Hver worker kan håndtere flere opkaldsrum uafhængigt. Det betyder, at en enkelt SFU-server med 16 kerner effektivt kan administrere snesevis af samtidige opkald, hver med op til 50 deltagere.

Båndbredde-adaptiv videresendelse. Til opkald med mange deltagere træder flere optimeringer automatisk i kraft. Aktiv talerdetektering reducerer antallet af højkvalitetsstrømme, der skal videresendes. Simulcast-lagvalg bliver mere aggressivt og favoriserer lavere lag for ikke-synlige deltagere. Audio-only-fallback er tilgængelig for deltagere med stærkt begrænset båndbredde.

Europæisk multi-zone-implementering. Mandrakis infrastruktur kører på tværs af flere tilgængelighedszoner inden for EU på europæisk hyperscale-infrastruktur. SFU-instanser implementeres tæt på brugerne, hvilket reducerer round-trip-latens for mediepakker. Al mediarouting forbliver inden for europæiske grænser — ingen medier videresendes nogensinde gennem ikke-EU-infrastruktur.

NAT-traversering

WebRTC’s største styrke — direkte peer-to-peer-forbindelse — er også dens største udfordring. De fleste enheder sidder bag NAT-firewalls (Network Address Translation), der forhindrer direkte indgående forbindelser. WebRTC bruger ICE (Interactive Connectivity Establishment) til at opdage en farbar netværkssti og prøver direkte forbindelse, STUN-medieret forbindelse og TURN-relæ i rækkefølge.

Mandraki driver dedikerede TURN-servere sammen med SFU-infrastrukturen. TURN fungerer som et relæ i sidste instans — når en deltager ikke kan etablere en direkte forbindelse til SFU’en (på grund af restriktive firewalls, symmetrisk NAT eller virksomhedsproxyservere), flyder medierne gennem TURN-serveren. Dette tilføjer noget latens, men sikrer forbindelse.

TURN-serverne understøtter både UDP og TCP, plus TLS til miljøer, der kun tillader HTTPS-trafik. Som alt andet i vores stak kører de fuldstændigt inden for EU.

End-to-end-kryptering i stor skala

SFU-arkitekturen er specifikt valgt, fordi den bevarer kompatibilitet med end-to-end-kryptering. Ved hjælp af WebRTC Encoded Transforms og SFrame-protokollen (RFC 9605) krypteres mediaframes på afsenderens enhed, før de når SFU’en. SFU’en videresender de krypterede frames til modtagerne, der dekrypterer dem lokalt.

SFU’en har aldrig adgang til klartekst-medier. Den router chiffertekst. Det betyder, at selv i stor skala — med snesevis af deltagere og flere samtidige opkald — holder krypteringsgarantierne. Ingen server i vores infrastruktur ser eller behandler nogensinde ukrypteret lyd eller video.

Dette er et grundlæggende arkitektonisk valg. Mange platforme hævder kryptering, men bruger MCU-baserede arkitekturer, der kræver serverside-afkodning. Mandrakis SFU-tilgang betyder, at kryptering ikke kun er en funktion — det er en strukturel garanti.

Overvågning og pålidelighed

WebRTC-problemer er notorisk vanskelige at diagnosticere. Vi indsamler klientside-telemetri inklusive ICE-forbindelsesstatusovergange, valgte kandidatpartyper, estimater af round-trip-tid, pakketabsrater og båndbreddeestimater. Disse metrikker grupperes og sendes til vores telemetri-endpoint til aggregering.

Serverside logger SFU’en transporthændelser, producer- og consumer-livscyklus samt båndbreddeestimering. Kombineret med klientside-telemetri giver dette et omfattende billede af opkaldskvalitet, der gør os i stand til at identificere og adressere problemer systematisk.

Realtidskommunikation i massiv skala er en dyb teknisk udfordring. Vi fortsætter med at investere i den mediainfrastruktur, der gør Mandrakis opkald pålidelige, lavlatente og end-to-end-krypterede — alt sammen inden for suveræn europæisk infrastruktur.