events:34c3:cdn

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
events:34c3:cdn [2018/07/18 23:55] meiseevents:34c3:cdn [2026/07/26 22:17] (current) – external edit 127.0.0.1
Line 1: Line 1:
-34C3 CDN+34C3 CDN
 <bootnote important>Diese Dokumentation galt für den 34C3. Für die Zeit danach, siehe [[:cdn|]].</bootnote> <bootnote important>Diese Dokumentation galt für den 34C3. Für die Zeit danach, siehe [[:cdn|]].</bootnote>
  
-== 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 12: Line 12:
 Das Master-Encoding wird auf den lokalen (= auf dem encoder-cube laufenden) Icecast auf Port 7999 gepusht (http://encoderX.lan.c3voc.de:7999/sX). live.lan.c3voc.de pullt diesen und bietet ihn seinerseits auf http://live.lan.c3voc.de:7999/sX an. Das Master-Encoding wird auf den lokalen (= auf dem encoder-cube laufenden) Icecast auf Port 7999 gepusht (http://encoderX.lan.c3voc.de:7999/sX). live.lan.c3voc.de pullt diesen und bietet ihn seinerseits auf http://live.lan.c3voc.de:7999/sX an.
  
-=== 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 35: Line 35:
 Die Pull-Quelle und das Push-Ziel ist über Group-Vars konfigurierbar: https://github.com/voc/cm/blob/master/ansible/group_vars/transcoders Die Pull-Quelle und das Push-Ziel ist über Group-Vars konfigurierbar: https://github.com/voc/cm/blob/master/ansible/group_vars/transcoders
  
-=== 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 (="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 (="fanout").
  
Line 48: 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): https://c3voc.mazdermind.de/volatile/main-plus-slides-with-two-translations-stream.mkv Streamdump des mkv-multiformat-Streams wie ihn die encoder produzieren werden (mit 2 Video und 3 Audiospuren): https://c3voc.mazdermind.de/volatile/main-plus-slides-with-two-translations-stream.mkv
  
Line 57: Line 57:
  
 Alle bereitgestellten Test-URLs lauten: Alle bereitgestellten Test-URLs lauten:
-=== VPx-HD:+### VPx-HD:
 * http://cdn.c3voc.de/sX_native_hd.webm * http://cdn.c3voc.de/sX_native_hd.webm
 * http://cdn.c3voc.de/sX_translated_hd.webm * http://cdn.c3voc.de/sX_translated_hd.webm
 * http://cdn.c3voc.de/sX_translated-2_hd.webm * http://cdn.c3voc.de/sX_translated-2_hd.webm
  
-=== VPx-SD:+### VPx-SD:
 * http://cdn.c3voc.de/sX_native_sd.webm * http://cdn.c3voc.de/sX_native_sd.webm
 * http://cdn.c3voc.de/sX_translated_sd.webm * http://cdn.c3voc.de/sX_translated_sd.webm
 * http://cdn.c3voc.de/sX_translated-2_sd.webm * http://cdn.c3voc.de/sX_translated-2_sd.webm
  
-=== VPx-Slides:+### VPx-Slides:
 * http://cdn.c3voc.de/sX_native_slides.webm * http://cdn.c3voc.de/sX_native_slides.webm
 * http://cdn.c3voc.de/sX_translated_slides.webm * http://cdn.c3voc.de/sX_translated_slides.webm
 * http://cdn.c3voc.de/sX_translated-2_slides.webm * http://cdn.c3voc.de/sX_translated-2_slides.webm
  
-=== h264-HD:+### h264-HD:
 * http://cdn.c3voc.de/hls/sX_native_hd.m3u8 * http://cdn.c3voc.de/hls/sX_native_hd.m3u8
 * http://cdn.c3voc.de/hls/sX_translated_hd.m3u8 * http://cdn.c3voc.de/hls/sX_translated_hd.m3u8
 * http://cdn.c3voc.de/hls/sX_translated-2_hd.m3u8 * http://cdn.c3voc.de/hls/sX_translated-2_hd.m3u8
  
-=== h264-SD:+### h264-SD:
 * http://cdn.c3voc.de/hls/sX_native_sd.m3u8 * http://cdn.c3voc.de/hls/sX_native_sd.m3u8
 * http://cdn.c3voc.de/hls/sX_translated_sd.m3u8 * http://cdn.c3voc.de/hls/sX_translated_sd.m3u8
 * http://cdn.c3voc.de/hls/sX_translated-2_sd.m3u8 * http://cdn.c3voc.de/hls/sX_translated-2_sd.m3u8
  
-=== h264-Slides:+### h264-Slides:
 * http://cdn.c3voc.de/hls/sX_native_slides.m3u8 * http://cdn.c3voc.de/hls/sX_native_slides.m3u8
 * http://cdn.c3voc.de/hls/sX_translated_slides.m3u8 * http://cdn.c3voc.de/hls/sX_translated_slides.m3u8
 * http://cdn.c3voc.de/hls/sX_translated-2_slides.m3u8 * http://cdn.c3voc.de/hls/sX_translated-2_slides.m3u8
  
-=== h264-Multi-Qualits:+### h264-Multi-Qualits:
 * http://cdn.c3voc.de/hls/sX_native.m3u8 * http://cdn.c3voc.de/hls/sX_native.m3u8
 * http://cdn.c3voc.de/hls/sX_translated.m3u8 * http://cdn.c3voc.de/hls/sX_translated.m3u8
 * http://cdn.c3voc.de/hls/sX_translated-2.m3u8 * http://cdn.c3voc.de/hls/sX_translated-2.m3u8
  
-=== WebM Multi-Qualität + Multi-Lang+### WebM Multi-Qualität + Multi-Lang
 * http://cdn.c3voc.de/dash/sX/manifest.mpd * http://cdn.c3voc.de/dash/sX/manifest.mpd
  
-=== Audio-MP3:+### Audio-MP3:
 * http://cdn.c3voc.de/sX_native.mp3 * http://cdn.c3voc.de/sX_native.mp3
 * http://cdn.c3voc.de/sX_translated.mp3 * http://cdn.c3voc.de/sX_translated.mp3
 * http://cdn.c3voc.de/sX_translated-2.mp3 * http://cdn.c3voc.de/sX_translated-2.mp3
  
-=== Audio-Opus:+### Audio-Opus:
 * http://cdn.c3voc.de/sX_native.opus * http://cdn.c3voc.de/sX_native.opus
 * http://cdn.c3voc.de/sX_translated.opus * http://cdn.c3voc.de/sX_translated.opus
Line 125: Line 125:
  
  
-== TLS+## TLS
 Die Zertifikate für TLS auf allen Hosts kommt von //Let's Encrypt// ("LE"). Damit wir aber nicht von der Verfügbarkeit von LE abhängig sind oder in Rate Limits laufen, generieren wir die benötigten Zertifikate vorher und speichern diese im KeePass, von woher sie via Ansible ausgerollt werden. Nach dem Congress schalten wir zurück auf selbst Verwaltete LE-Zertifikate. Die Zertifikate für TLS auf allen Hosts kommt von //Let's Encrypt// ("LE"). Damit wir aber nicht von der Verfügbarkeit von LE abhängig sind oder in Rate Limits laufen, generieren wir die benötigten Zertifikate vorher und speichern diese im KeePass, von woher sie via Ansible ausgerollt werden. Nach dem Congress schalten wir zurück auf selbst Verwaltete LE-Zertifikate.
  
Line 135: Line 135:
 </code> </code>
  
-== Relay-Register+## Relay-Register
 Das Relay-Register ist hier zu finden: https://c3voc.de/relayregister/ - Der Login liegt im KeePass vor (gleicher Login wie beim 32C3) Das Relay-Register ist hier zu finden: https://c3voc.de/relayregister/ - Der Login liegt im KeePass vor (gleicher Login wie beim 32C3)
  
 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/icecast-Config umgesetzt werden. 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/icecast-Config umgesetzt werden.
  
-== Externe Quellen+## Externe Quellen
 Die Streams der Externe Quellen werden komplett über eine eigene Kiste angewickelt (''dawaschtel.lan.c3voc.de''). Dieser Server übernimmt dann sowohl das ingesting als auch transcoding, fanout und ist user-facing relay. Der Server verfügt über eine 10GE-Anbindung an das Congessnetz und ausreichend CPU-Kapazität. Die Streams der Externe Quellen werden komplett über eine eigene Kiste angewickelt (''dawaschtel.lan.c3voc.de''). Dieser Server übernimmt dann sowohl das ingesting als auch transcoding, fanout und ist user-facing relay. Der Server verfügt über eine 10GE-Anbindung an das Congessnetz und ausreichend CPU-Kapazität.
  
Line 150: Line 150:
 * InterneDokumentation der Abstimmung mit den Betreibern: https://c3voc.de/wiki/intern:events:34c3:cdn:external-sources * InterneDokumentation der Abstimmung mit den Betreibern: https://c3voc.de/wiki/intern:events:34c3:cdn:external-sources
  
-== 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:
  • events/34c3/cdn.1531958154.txt.gz
  • Last modified: 2018/07/18 23:55
  • by meise