Blog

Wie Sie Nutzer über Regionen hinweg verbinden: Anrufe, die jedem nah bleiben

· Andrij Tkachenko · 7 Min. Lesezeit

Zwei weit voneinander entfernte Server-Stapel, neben jedem zwei App-Fenster, verbunden durch einen langen Bogen, auf dem Daten entlanglaufen

Ein Videoanruf, der im Test gut funktioniert, kann sich anders anfühlen, sobald Ihre Nutzer über die Welt verteilt sind. Zwei Personen in Singapur fallen sich gegenseitig ins Wort, ein Gruppenanruf mit jemandem in Kanada friert nur bei dieser Person ein, und ein Livestream puffert für Zuschauer auf der anderen Seite eines Ozeans. Der Code ist für alle derselbe. Was sich unterscheidet, ist die Entfernung zwischen jeder Person und dem Server, über den der Anruf läuft.

Dieser Beitrag erklärt, warum Entfernung in einem Anruf zählt, was es braucht, damit jede Person nah an einem Server bleibt, bei Anrufen zwischen zwei Personen, Gruppenanrufen und Livestreams, und was an einem Ort bleiben kann.

Warum Entfernung in einem Anruf zählt

Licht legt in einer Glasfaser etwa 200 Kilometer pro Millisekunde zurück, und echte Leitungswege sind länger als eine gerade Linie. Ein Paket von Singapur nach Frankfurt und zurück braucht rund 160 Millisekunden, von Sydney nach Frankfurt und zurück rund 280.

Ein Gespräch reagiert empfindlich darauf. Braucht das Gesagte mehr als etwa 150 Millisekunden bis zum Ohr der anderen Person, fallen sich die Leute ins Wort und warten auf Antworten, die schon unterwegs sind. Kodierung, Netzwerk und der Jitter-Puffer auf jedem Gerät steuern ihren eigenen Anteil bei, bevor die Entfernung überhaupt etwas hinzufügt.

Ein Anruf, der über einen Server läuft, hat zwei Teilstrecken: von der ersten Person zum Server, dann vom Server zur zweiten. Steht der Server in Frankfurt, schicken zwei Personen in Singapur alles nach Europa und zurück, sodass das Gesagte weit jenseits dieser angenehmen Grenze ankommt, obwohl beide in derselben Stadt leben. Steht der Server in Singapur, braucht derselbe Anruf ein paar Millisekunden.

Für jede App mit Nutzern in mehr als einer Region lautet die Frage also, über welchen Server jeder Anruf läuft und wie nah er an den Personen darin ist.

Anrufe zwischen zwei Personen

Ein Anruf zwischen zwei Personen läuft, wenn möglich, direkt zwischen ihren Geräten, ohne Server dazwischen. Die Entfernung zwischen den beiden ist dann die einzige Verzögerung, und nichts verkürzt sie.

Blockiert eine Firewall den direkten Weg, läuft der Anruf über ein TURN-Relay (warum, erklärt STUN- und TURN-Server). Mit einem einzigen Relay in einer Region läuft jeder Anruf über ein Relay dorthin, sodass zwei Personen in Asien, deren Netzwerke ein Relay brauchen, über Europa miteinander sprechen.

Der Ausweg ist ein Relay in jeder Region, in der Ihre Nutzer sind, wobei jedes Gerät das nächstgelegene nutzt:

  • Ein Name, je nach Region beantwortet. Der Name des Relays wird für jedes Gerät zur nächstgelegenen Region aufgelöst, nach Latenz oder danach, woher die Anfrage kommt. Das Gerät braucht keine Einstellung, und eine neue Region bedient ihre Nutzer, sobald ihre Relays auf diesen Namen antworten.
  • Zugangsdaten, die jede Region annimmt. Relay-Zugangsdaten erzeugt meist Ihr Server aus einem Secret, das er mit den Relays teilt. Jede Region prüft sie auf dieselbe Weise, sodass ein Gerät jedes Relay nutzen kann, das es erreicht.
  • Die Ports des Webs in jeder Region. Port 3478 über UDP für die meisten Netzwerke und 443 mit TLS für Netzwerke, die nur Web-Traffic erlauben, mit einem Zertifikat für jeden Namen.

Mit einem Relay in der Nähe jedes Geräts ist ein Anruf über ein Relay kaum langsamer als ein direkter, egal welche zwei Länder er verbindet.

Gruppenanrufe: ein Medienserver oder einer pro Region

Ein Gruppenanruf läuft auf einem Medienserver: Jede Person sendet ihre Stimme und ihr Bild einmal dorthin, und er leitet sie an alle anderen weiter, in der Qualität, in der jeder Bildschirm sie zeigt (wie Gruppen-Videoanrufe funktionieren erklärt das). Der einfache Weg ist ein Server pro Anruf: Der Anruf beginnt auf einem Server in der Region der Person, die zuerst beigetreten ist, und alle treten diesem Server bei.

Das funktioniert, solange alle im Anruf im selben Teil der Welt sind. Mit Personen auf zwei Kontinenten ist eine davon weit vom Server entfernt, und jede Stimme und jedes Bild, das sie sendet und empfängt, nimmt den langen Weg.

Der Ausweg ist, einen Anruf über Server in mehreren Regionen zu verteilen:

  • Jede Person tritt einem Server in ihrer eigenen Region bei, dem nächstgelegenen, und sendet ihre Stimme und ihr Bild einmal dorthin.
  • Die Server reichen jeden Track untereinander weiter. Ein Bild wechselt einmal für jeden Server, der es braucht, zwischen den Regionen, nicht einmal für jede Person, die zuschaut, und erreicht alle über den Server ihrer eigenen Region.
  • Nur was angeschaut wird, reist. Ein Track, den in einer Region niemand anschaut, wechselt nicht dorthin, und jede Region bekommt nur die Qualität, in der ihre Personen ihn zeigen.
  • Die Server halten einen gemeinsamen Anruf. Wer darin ist, wer spricht, wer einen Bildschirm teilt und wann er endet, ist auf jedem Server gleich, sodass die Personen darin einen Anruf sehen, nicht mehrere, die aneinandergehängt sind.
  • Verbindungen zwischen Regionen, die halten. Die Tracks zwischen den Regionen laufen über private Leitungen oder verschlüsselte Tunnel, und verlorene Pakete werden über sie erneut angefordert, sodass eine Verbindung zwischen Kontinenten nicht zu eingefrorenen Bildern führt.

Zwei Personen in Warschau und zwei in Montreal sprechen dann jeweils über einen Server in ihrer Nähe, und nur eine Kopie jedes Tracks überquert den Atlantik.

Livestreams

Ein Livestream ist dasselbe Problem mit einem Sender und vielen Empfängern. Der Host sendet das Bild an einen Server in seiner Nähe, und jeder Zuschauer schaut über einen Server in seiner eigenen Region, der den Stream einmal vom Server des Hosts bekommt und alle bedient, die dort zuschauen. Ein Publikum, das über viele Länder verteilt ist, wird so nah an jedem Zuschauer bedient, und in keiner Region warten die Zuschauer auf einen Server am anderen Ende der Welt.

Was in einer Region bleiben kann

Nicht alles muss nah sein. Chatnachrichten, Präsenz, Tippanzeigen und die anderen Events einer App sind klein, und eine Nachricht, die 100 Millisekunden später ankommt, als sie könnte, fällt niemandem auf. Bleiben sie in einer Region, bleiben ihre Reihenfolge und ihr Verlauf einfach, und das zählt mehr als die Millisekunden.

Die übliche Aufteilung ist also: Medien nah an jeder Person, Events an einem Ort.

Wie Sie Nutzer über Regionen hinweg verbinden: eine Checkliste

  1. Sehen Sie nach, wo Ihre Nutzer sind. Die Länder, aus denen sie anrufen, zeigen Ihnen, welche Regionen Sie zuerst brauchen.
  2. Stellen Sie Relays in jede dieser Regionen, hinter einen Namen, der je nach Region beantwortet wird, mit Zugangsdaten, die jede Region annimmt, auf Port 443 ebenso wie auf 3478.
  3. Verteilen Sie jeden Gruppenanruf und jeden Livestream über Regionen, mit jeder Person auf einem Server in ihrer Nähe und jedem Track, der einmal zwischen Regionen wechselt, und nur, solange er angeschaut wird.
  4. Halten Sie Anrufe am Laufen, während Server wechseln. Ein Server, der für eine Wartung vom Netz geht, verlegt seine Anrufe vorher auf einen anderen, sodass niemand auflegt.
  5. Halten Sie Events in einer Region, es sei denn, Ihre App hat einen Grund dagegen.

Keine dieser Aufgaben ist klein: Jede Region bedeutet Server, die betrieben, aktualisiert, überwacht und erweitert werden wollen, und die Verbindungen zwischen ihnen sind ein eigenes Netzwerk.

Wie WordPlus Cloud Ihre Nutzer verbindet

WordPlus Cloud betreibt all das, sodass Ihre App nie eine Region wählt:

  • Unsere Relays und Medienserver für Anrufe laufen in Deutschland, Frankreich, dem Vereinigten Königreich, Polen, Kanada und Singapur, als Nächstes kommen die Vereinigten Staaten, Australien, Indien und Italien. Die Seite So verbinden wir Ihre Nutzer zeigt sie auf einer Karte.
  • Jedes Gerät erreicht die Region, die ihm am nächsten liegt, über einen Namen, der nach Latenz beantwortet wird. Ein Anruf zwischen zwei Personen läuft direkt zwischen den Geräten, wenn das möglich ist, über das Relay, das jeder Person am nächsten ist, wenn eine Firewall das blockiert, und über unsere Medienserver, wenn selbst die Relays ihn nicht erreichen, ohne aufzulegen.
  • Jede Person in einem Gruppenanruf oder Livestream tritt einem Medienserver ihrer eigenen Region bei, und unsere Server reichen jeden Track über private Leitungen zwischen den Regionen weiter, einmal für jeden Server, der ihn braucht, und nur, solange dort jemand zuschaut.
  • Ein Server, der für eine Wartung vom Netz geht, verlegt seine Anrufe vorher auf einen anderen, und die Personen darin sprechen weiter.
  • Nachrichten und Events laufen über unsere Echtzeit-Server in Deutschland, die mit dem Traffic wachsen. Edge-Server in weiteren Regionen folgen und bringen auch die Events näher an Ihre Nutzer.

Anrufe zwischen zwei Personen sind auf jedem Weg Ende-zu-Ende-verschlüsselt, und Ihr Server entscheidet weiterhin, wer wen anrufen darf. Das funktioniert genauso in Better Messages auf WordPress und in Ihren eigenen Apps auf Next.js, Laravel, Django und anderen Stacks, über unsere SDKs. Videoanrufe und Gruppenanrufe für Ihre App zeigt, was Ihnen die SDKs bieten.