Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| events:34c3:cdn [2017/12/22 18:51] – minion-muc: s4 mazdermind | events:34c3:cdn [2026/07/26 22:17] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | = 34C3 CDN | + | # 34C3 CDN |
| - | == Architektur | + | < |
| + | |||
| + | ## Architektur | ||
| Die CDN-Kaskade hat 4 Stufen | Die CDN-Kaskade hat 4 Stufen | ||
| - | === 1. Master-Encoder | + | ### 1. Master-Encoder |
| Das Master-Encoding entsteht auf dem encoder-cube im Saal aus dem Ausgabesignal des Voctomix. Das Master-Encoding enthält den Mix als 1080p25 in h264 sowie die Slides als 1080p5 in h264 sowie aac von allen 3 Audiospuren. Alle Spuren werden in einem Matroska-Container verpackt. | Das Master-Encoding entsteht auf dem encoder-cube im Saal aus dem Ausgabesignal des Voctomix. Das Master-Encoding enthält den Mix als 1080p25 in h264 sowie die Slides als 1080p5 in h264 sowie aac von allen 3 Audiospuren. Alle Spuren werden in einem Matroska-Container verpackt. | ||
| Line 10: | Line 12: | ||
| Das Master-Encoding wird auf den lokalen (= auf dem encoder-cube laufenden) Icecast auf Port 7999 gepusht (http:// | Das Master-Encoding wird auf den lokalen (= auf dem encoder-cube laufenden) Icecast auf Port 7999 gepusht (http:// | ||
| - | === 2. Transcoder | + | ### 2. Transcoder |
| Das Transcoding läuft im CCL auf den Minions 1, 5 und 6 (die Minions der neusten Generation). Dabei sind die Räume wie folgt auf die Minions verteilt: | Das Transcoding läuft im CCL auf den Minions 1, 5 und 6 (die Minions der neusten Generation). Dabei sind die Räume wie folgt auf die Minions verteilt: | ||
| * minion1: s1 | * minion1: s1 | ||
| Line 33: | Line 35: | ||
| Die Pull-Quelle und das Push-Ziel ist über Group-Vars konfigurierbar: | Die Pull-Quelle und das Push-Ziel ist über Group-Vars konfigurierbar: | ||
| - | === 3. Fanout | + | ### 3. Fanout |
| Diese 3 Format-Streams je Raum werden von der nächsten Stufe auf live.lan.c3voc.de in die finalen Streams in allen für Endnutzer angebotenen Kombinationen auseinander gemuxt (=" | Diese 3 Format-Streams je Raum werden von der nächsten Stufe auf live.lan.c3voc.de in die finalen Streams in allen für Endnutzer angebotenen Kombinationen auseinander gemuxt (=" | ||
| Line 46: | Line 48: | ||
| Zu dne Aufgaben der fanout-Scripte gehört auch das übermitteln des h264-Videostroms zu Youtube. Die Stream-Keys dazu kommen aus dem KeePass, die Scripte aus dem oben verlinkten Git-Repo. | Zu dne Aufgaben der fanout-Scripte gehört auch das übermitteln des h264-Videostroms zu Youtube. Die Stream-Keys dazu kommen aus dem KeePass, die Scripte aus dem oben verlinkten Git-Repo. | ||
| - | === 4. Transport- und Edge-Nodes | + | ### 4. Transport- und Edge-Nodes |
| Die (Non-Public) Transport-Nodes ziehen alle Daten via Icecast oder nginx-Proxy-Konfiguration von live.lan.c3voc.de. Die (Public) Edge-Nodes ziehen ihre Daten von den jeweiligen Transport-Nodes. | Die (Non-Public) Transport-Nodes ziehen alle Daten via Icecast oder nginx-Proxy-Konfiguration von live.lan.c3voc.de. Die (Public) Edge-Nodes ziehen ihre Daten von den jeweiligen Transport-Nodes. | ||
| - | == Testdaten | + | ## Testdaten |
| Streamdump des mkv-multiformat-Streams wie ihn die encoder produzieren werden (mit 2 Video und 3 Audiospuren): | Streamdump des mkv-multiformat-Streams wie ihn die encoder produzieren werden (mit 2 Video und 3 Audiospuren): | ||
| Line 55: | Line 57: | ||
| Alle bereitgestellten Test-URLs lauten: | Alle bereitgestellten Test-URLs lauten: | ||
| - | === VPx-HD: | + | ### VPx-HD: |
| * http:// | * http:// | ||
| * http:// | * http:// | ||
| * http:// | * http:// | ||
| - | === VPx-SD: | + | ### VPx-SD: |
| * http:// | * http:// | ||
| * http:// | * http:// | ||
| * http:// | * http:// | ||
| - | === VPx-Slides: | + | ### VPx-Slides: |
| * http:// | * http:// | ||
| * http:// | * http:// | ||
| * http:// | * http:// | ||
| - | === h264-HD: | + | ### h264-HD: |
| * http:// | * http:// | ||
| * http:// | * http:// | ||
| * http:// | * http:// | ||
| - | === h264-SD: | + | ### h264-SD: |
| * http:// | * http:// | ||
| * http:// | * http:// | ||
| * http:// | * http:// | ||
| - | === h264-Slides: | + | ### h264-Slides: |
| * http:// | * http:// | ||
| * http:// | * http:// | ||
| * http:// | * http:// | ||
| - | === h264-Multi-Qualits: | + | ### h264-Multi-Qualits: |
| * http:// | * http:// | ||
| * http:// | * http:// | ||
| * http:// | * http:// | ||
| - | === Audio-MP3: | + | ### WebM Multi-Qualität + Multi-Lang |
| + | * http:// | ||
| + | |||
| + | ### Audio-MP3: | ||
| * http:// | * http:// | ||
| * http:// | * http:// | ||
| * http:// | * http:// | ||
| - | === Audio-Opus: | + | ### Audio-Opus: |
| * http:// | * http:// | ||
| * http:// | * http:// | ||
| Line 120: | Line 125: | ||
| - | == TLS | + | ## TLS |
| Die Zertifikate für TLS auf allen Hosts kommt von // | Die Zertifikate für TLS auf allen Hosts kommt von // | ||
| Line 130: | Line 135: | ||
| </ | </ | ||
| - | == Relay-Register | + | ## Relay-Register |
| - | Das Relay-Register ist hier zu finden: https:// | + | Das Relay-Register ist hier zu finden: https:// |
| Alle Relays melden sich (bzw. werden via Script) beim Relay-Register angemeldet. Dort kann ihnen ein Platz in der Relay-Kaskade zugewiesen werden (z.B. welcher Host ihr Upstream ist) und ob sie nur ICecast, nur HLS oder beide anbieten sollen. Aus dem Relay-Register werden Konfigurationsdateien erzeugt, die von Ansible gelesen und in haproxy/ | Alle Relays melden sich (bzw. werden via Script) beim Relay-Register angemeldet. Dort kann ihnen ein Platz in der Relay-Kaskade zugewiesen werden (z.B. welcher Host ihr Upstream ist) und ob sie nur ICecast, nur HLS oder beide anbieten sollen. Aus dem Relay-Register werden Konfigurationsdateien erzeugt, die von Ansible gelesen und in haproxy/ | ||
| - | == Externe Quellen | + | ## Externe Quellen |
| - | Die Streams der Externe Quellen werden komplett über eine eigene Kiste angewickelt ('' | + | Die Streams der Externe Quellen werden komplett über eine eigene Kiste angewickelt ('' |
| - | Die Scripte dazu sind größtenteils unabhängig von denen der Hauptstreams, da die Externen Quellen weder mehrere | + | Die Scripte dazu werden aus den gleichen Templates wie die der Haupträume erstellt, aber mit weniger |
| - | Alle Fanout und Transcoding-Scripte werden per cm angelegt, das ingesting | + | Alle Fanout und Transcoding-Scripte werden per cm angelegt. Zusätzlich |
| Folgende weiterführende Dokumentation im Wiki: | Folgende weiterführende Dokumentation im Wiki: | ||
| Line 145: | Line 150: | ||
| * InterneDokumentation der Abstimmung mit den Betreibern: https:// | * InterneDokumentation der Abstimmung mit den Betreibern: https:// | ||
| - | == Unerwartet geschlossene Verbindungen auf *.alb.c3voc.de | + | ## Unerwartet geschlossene Verbindungen auf *.alb.c3voc.de |
| Es gibt ein Problem mit dem Router (Juniper?) im Alboin, welches **dellinger.alb.c3voc.de** und dessen VMs, insbesondere **live.alb.c3voc.de** und **lb.alb.c3voc.de** betrifft. | Es gibt ein Problem mit dem Router (Juniper?) im Alboin, welches **dellinger.alb.c3voc.de** und dessen VMs, insbesondere **live.alb.c3voc.de** und **lb.alb.c3voc.de** betrifft. | ||
| Dagegen hilft die erratischen ICMP-Messages mit iptables zu unterdrücken: | Dagegen hilft die erratischen ICMP-Messages mit iptables zu unterdrücken: | ||