(Folgeartikel zum Artikel Init7 TV7: Installation mit einem Turris Omnia-Router)
An einem Zweitstandort betreibe ich einen Ubiquiti Edgerouter X SFP (Firmware v1.10.0) mit einem offiziellen FlexOptix-Transceiver von Fiber7. Damit dieser Router IPTV-Multicast ins LAN weiterleitet, waren folgende Anpassungen an der Konfiguration nötig (hat mich 90 Minuten meines Lebens gekostet):
Firewall
Auf rudimentärem Deutsch: Lasse IGMP sowie Multicast UDP durch die Firewall gegen das Internet
... firewall { ... name WAN_IN { ... rule 4 { action accept description "Allow IGMP (max)" log disable protocol igmp } rule 5 { action accept description "Allow Multicast" destination { address 224.0.0.0/4 } log disable } } name WAN_LOCAL { ... rule 4 { action accept description "Allow IGMP" log disable protocol igmp } ... } ... } ...
IGMP Proxy
Auf rudimentärem Deutsch: Empfange IGMP-Traffic aus dem Internet und leite ihn in das LAN weiter.
... protocols { igmp-proxy { interface switch0 { alt-subnet 0.0.0.0/0 role downstream threshold 1 } interface eth5 { alt-subnet 0.0.0.0/0 role upstream threshold 1 } } ... }
Multicast-Status abfragen
Um zu überprüfen, ob Multicast grundsätzlich funktioniert, loggt man sich per SSH auf den Router ein und gibt im CLI folgende Befehle ein:
$ show ip multicast interfaces Intf BytesIn PktsIn BytesOut PktsOut Local switch0 0.00b 0 31.17MB 24316 Y.Y.Y.1 eth5 31.17MB 24316 0.00b 0 X.X.X.X
$ show ip multicast mfc Group Origin In Out Pkts Bytes Wrong 239.254.127.63 Y.Y.Y.5 eth5 switch0 1 116.00b 1 239.255.255.250 Y.Y.Y.50 eth5 switch0 56 17.61KB 56 239.77.3.21 77.109.129.16 eth5 switch0 37379 47.91MB 0
Die letzte Zeile war das Resultat, dass ich probehalber Dracula Untold auf Film 4 geschaut habe …
Nachtrag 1: Stream friert ein
Nach der Installation der TV7-App auf dem Apple TV (eigener Blog-Artikel zur App) musste ich entdecken, dass das Bild eines TV-Senders jeweils nach etwas mehr als 3 Minuten einfror (ich tippte nach mehreren Messungen auf ein Timeout von 200 Sekunden — und somit ein strukturelles Problem).
Recht schnell realisierte ich nach etwas Googlen, dass die Firewall-Regel 4 unter WLAN_LOCAL zwingend auch aktiviert werden muss. Diese hatte ich ursprünglich als überflüssig erachtet. Mein Fehler.
Meine Vermutung als IPTV-Laie: Diese (zusätzliche) Regel erlaubt ausgehende IGMP-Pakete. Wenn diese nicht an TV7 gesendet werden können (Heartbeat?), stellt TV7 den Multicast wieder ein. Sobald die Firewall-Rule aktiviert wurde, entfror sich das Bild und die Sendung lief weiter.
Nachtrag 2: Multicast flutet das Netzwerk
Obwohl die Streams nun auf dem Apple TV mit der offiziellen App problemlos laufen, habe ich einen schwerwiegenden Nachteil entdeckt, welcher bei meinem Turris Omnia nicht auftritt: Schaut man mit dem Apple TV einen TV7-Stream, wird das ganze LAN mit Multicast-Paketen geflutet. Dies beeinflusst meinen UniFi Access Point besonders, konnte ich doch einen spürbaren Lag zwischen Tastendruck und Anzeige des Buchstabens auf dem Bildschirm feststellen, wenn ich von meinem MacBook per WLAN per SSH auf einem Laptop im LAN verbunden war.
In meiner derzeitigen Konfiguration sendet der Edgerouter den eingehenden Multicast-Traffic an alle LAN-Interfaces weiter, die am switch0 hängen. Leider habe ich bis jetzt noch keine Lösung gefunden, wie man das auf einzelne Ports einschränken kann (ich brauche eigentlich nur den Apple TV- sowie den Laptop-Port, auf welchem udpxy läuft) respektive wie man IGMP-Snooping aktivieren kann, damit der Edgerouter selber realisiert, welches Gerät/welche Geräte im Netzwerk aktuell gerade Multicast-Streams abspielen möchte.
Links
- IPTV / UDP multicast Lebenswichtiger Hinweis, dass Multicast UDP-Traffic durch die Firewall durchgelassen werden muss
- EdgeRouter – Set up IGMP proxy and statistics Offizielle Anleitung des Herstellers, wie man den IGMP-Proxy installiert
- EdgeRouter X and IGMP not working. Hinweis auf restart igmp-proxy und dass man auch auf switch0 weiterleiten kann (und nicht einen spezifischen Port)
- Need help to set up IPTV/IGMP on EdgeMax Hinweis, dass man auch auf switch0 weiterleiten kann (und nicht einen spezifischen Port)
- How to restart igmp-proxy service without reboot ? Hinweis auf restart igmp-proxy
- Firewall and IGMP-Proxy
- Multicast traffic through the ERLite-3 router.