Fl4il Paket
OPT_IGMP
Version
1.0.2/ 19.04.2009
Mit Ergänzungen für T-Home (VDSL) unter fli4l mit vlan id7/id8 [9]
OPT_IGMP
ist ein IGMP-PROXY [1] Paket für fli4l, welches erlaubt, T-Home IPTV (andere wurden
derzeit noch nicht getestet) mit fli4l als Router statt dem mitgelieferten
Router Speedport W700/701 zu verwenden
Fli4l package by JKL2020@web.de (support by many others – siehe Danke)
Inhalt
E VLAN-Konfiguration (Optional für
VDSL)
F Konfiguration einer zusätzlichen
NIC für IPTV
I Änderungen in anderen
Config-Dateien
J Verweis auf Quellen zum Thema VLAN
und IPTV
Die Deutsche Telekom AG bietet
derzeit VDSL25/VDSL50 - Entertain Comfort/Plus VDSL - mit Bandbreiten von bis
zu 25/50 Mbit/s an.
Mit dem Paket kommt die Möglichkeit,
IPTV zu empfangen. Mitgeliefert wird ein WLAN-Router (Speedport W700V/W701V), der
etwas enthält was viele Router heute noch nicht können, nämlich IGMP (Internet
Group Management Protocol) Routing. Zweck eines IGMP-Proxies ist, den
Multicast-Traffic (verwendet bei IPTV) zwischen Netzen weiterzuleiten.
Wer fli4l für IPTV statt
Speedport-Router nutzen will, braucht einen IGMP-Proxy auf dem fli4l.
OPT_IGMP stellt einen simplen
dynamischen Multicast Routing Daemon als IGMP-Proxy auf dem fli4l zur
Verfügung, womit ITPV auch hinter einem fli4l-Router ermöglicht wird.
OPT_IGMP ist eine Zusammenfassung
aus Informationen aus der NewsGroup [7].
Die
Dokumentation zum OPT_IGMP Paket beschreibt, wie der fli4l konfiguriert werden muss,
um VDSL und T-Home IPTV mit der mitgelieferten Set-Top-Box (STB) X300T/X301T
hinter einem fli4l-Router zu betreiben.
Für die
Konfiguration wird eine zusätzliche NIC (Network Interface Card = LAN- bzw.
Ethernet-Karte) im fli4l verwendet, um die Set-Top-Box (STB) direkt (ohne Switches, Hubs, etc.) mit dem fli4l
zu verbinden.
Hardware:
Software:
Anpassungen
der folgenden Konfigurationsdateien:
Um eine
IPTV STB nutzen zu können, müssen alle Netzwerk-Knoten (Hub, Switch, Bridge,
Gateway, Router) zwischen der IPTV Box und dem Streaming Server multicastfähig
sein. Ist das nicht der Fall und ist kein IGMP-Proxy im Netz, dann ‚frieren’
Bild und Ton nach wenigen Sekunden ein.
Deshalb sollte
man vorsichtig sein, falls man zwischen STB und fli4l-Router billige
Netzwerk-Knoten (im Home-Netzwerk sind das i.d.R. SHO Switches) einzusetzen möchte, denn die meisten
unterstützen kein Multicast, außer es werden Switches eingebaut, die über
IGMP-Snooping oder EBTables verfügen.
Bei der
Verwendung von WLAN und OpenVPN-Bridges für IPTV kommt es zu Problemen, weil
die Multicastpakete als Broadcasts im LAN landen.
Hier wird
die Konfiguration mit 3 NIC’s beschrieben, mit einem getrennten Subnetz für
IPTV, um alle o.g. Probleme auszuschließen. Trotzdem geht das ganze natürlich
auch mit einem einzelnen NIC an dem gleichzeitig PCs und die IPTV STB hängen.
Wer die ‚Single’ NIC-Methode bevorzugt sollte selbst wissen was er tut (das
wird hier nicht weiter beschrieben).
3 Karten-Konfiguration
Der
einfachste Weg, eine IPTV STB zu nutzen, ist eine zusätzliche NIC im fli4l zu
installieren, die VLAN (falls T-Home) unterstützt. Leider sind derzeit nicht
alle NIC’s VLAN tauglich.
Getestete
NIC’s die für IPTV/VLAN funktionieren sind derzeit 3Com 905c und Intel Pro/100.
Es gibt darüber hinaus sicherlich noch viele andere, jedoch nicht von mir
getestet. Bekannte NIC’S die Probleme bereiten können sind: Intel Gigabit NICs
mit 82540EM Chipsatz.
Anbei ein
Diagramm, wie im genannten Beispiel der fli4l Router vom Standard-Router zum
Router mit 3 NIC’s migriert wird:
VDSL-Modem Fli4l-Router
LAN-Schnittstelle
Fli4l-Router
VDSL-Modem IPTV-Schnittstelle
zur STB
LAN-Schnittstelle
Eines vorweg:
Der IGMP-Proxy – OPT_IGMP - ist nicht auf VLAN angewiesen. Vielmehr wird VLAN
derzeit für T-Home/VDSL verwendet und muss dafür vom Router unterstützt werden,
der eingesetzt wird. Ob VLAN für den Internet-Betrieb auch bei anderen
Providern (Arcor, Alice, etc…) benötigt wird, entzieht sich meinen derzeitigen
Kenntnissen.
Um also VDSL25/50
von T-Home für den Internet-Betrieb zum Laufen zu bringen, muss der NIC zum
VDSL-Modem zwingend als VLAN-Interface
konfiguriert werden - siehe auch [8]. VLAN hat also nichts mit IGMP und IPTV zu
tun, wird aber hier beschrieben, weil es Voraussetzung für Betrieb des fl4il am
VDSL-Anschluß von T-Home mit einem VDSL-Modem (kein ‚normales’ DSL-Modem).
An alle die
nur das ‚normale DSL’ der Telekom, also ADSL, ADSL2, ADSL2+ haben: VLAN wird
nur von VDSL benötigt, nicht aber vom ‚normalen DSL’. Die VLAN-Konfiguration
wird deshalb mit dem ‚normalen DSL’ nicht funktionieren.
Für VLAN
ist folgende Konfiguration erforderlich:
(NICs wie im Kapitel D Hardware-Setup Standard-Konfiguration angegeben)
advanced_networking.txt:
VLAN_DEV_N='1'
VLAN_DEV_1_DEV='eth1’ # interface of
VDSL-Modem; example: eth1
# In unserem Beispiel geht
'eth1' zum VDSL-Modem
VLAN_DEV_1_VID='7’ #
ID7 to support VLAN
Optional:
Falls die verwendete NIC mit der MTU-Größe Probleme hat, muss der MTU-Wert über
den Parameter DEV_MTU angepasst werden. Im Test zeigte die Intel Pro/100 (e100)
und auch meine 3-Com-Karte keine Probleme, andere User berichten, dass bei der
3Com ‚3c59x’ der MTU-Wert auf 1496 angepasst werden muss.
DEV_MTU_1='' # Adjust MTU size of NIC on VDSL-Modem
# Example: DEV_MTU_1='eth1
1496'
dsl.txt:
PPPOE_ETH='eth1.7' # eth<nummer der karte zum
vdsl-modem>.7'
# Bsp 'eth1.7'
Mit der
beschriebenen VLAN-Konfiguration sollte der fli4l als Router für VDSL25/30 von
T-Home ohne Probleme arbeiten, sofern die eingesetzte HW leistungsfähig genug
ist.
Ergänzung vom 19.04.2009: T-Home
/VDSL mit vlan id7/id8:
Neue Einstellungen dazu wie folgt:
OPT_VLAN_DEV='yes'
# activate VLAN 802.1Q
VLAN_DEV_N='2'
VLAN_DEV_1_DEV='eth1'
VLAN_DEV_1_VID='7'
VLAN_DEV_2_DEV='eth1'
VLAN_DEV_2_VID='8'
Zusätzlich
wird das Modul dhcp_client benötigt mit folgenden Einstellungen:
OPT_DHCP_CLIENT='yes'
DHCP_CLIENT_TYPE='dhcpcd'
DHCP_CLIENT_INTERFACES='eth1.8' # listen on
interfaces
DHCP_CLIENT_USEPEERDNS='no'
DHCP_CLIENT_EXEC_IPUPDOWN='no'
DHCP_CLIENT_HOSTNAME=''
Nachdem die
zusätzliche NIC in den fli4l eingebaut ist, muss in base.txt die Konfiguration
für diese zweite NIC angegeben werden.
Für die
Anzahl der NIC’s steht normalerweise (Standard-Konfiguration) eine 1 (die
DSL-Karte wird nicht mitgezählt). Hier wird jetzt eine 2 eingetragen, da wir 2
NIC’s benutzen (siehe Erweiterte Konfiguration mit zusätzlichem IPTV NIC)
NET_DRV_N='2'
NET_DRV_1='via-rhine' # 1. NIC für als LAN-Schnittstelle
NET_DRV_2='3c59x' # 2. NIC – hier 3Com für IPTV
SetTopBox
Jetzt
müssen wir den Adressraum für die zweite NIC festlegen. Ich verwende im LAN
192.168.2.0/24 und habe die zweite NIC mit dem Adressraum 192.168.3.0/24
versehen.
IP_NET_N='2'
IP_NET_1='192.168.2.0/24' # LAN
IP_NET_1_DEV='eth0' # LAN
IP_NET_2='192.168.3.0/24' # IPTV
IP_NET_2_DEV='eth2' # IPTV
Damit es später
auch mit der DHCP-Adressierung klappt und ich die SetTop-Box mit ‚Namen’
ansprechen kann, habe ich noch folgende Einstellungen vorgenommen.
HOST_24_NAME='iptv' #
beliebig waehlbar
HOST_24_IP='192.168.3.4' # beliebig waehlbar
HOST_24_MAC='00:D0:E0:93:19:04'
# T-Home X300T
DNSDHCP_RANGE_2_START='192.168.3.10' # beliebig waehlbar
DNSDHCP_RANGE_2_END='192.168.3.20' # beliebig waehlbar
DNSDHCP_RANGE_2_DNS_SERVER=''
DNSDHCP_RANGE_2_NTP_SERVER=''
DNSDHCP_RANGE_2_GATEWAY=''
Die neue
NIC muss natürlich bezüglich Zugriff zum Internet genauso funktionieren, wie
die erste NIC. Dazu sind weitere
Einstellungen in base.txt notwendig.
PF_INPUT_1='IP_NET_1
ACCEPT'
PF_INPUT_2='IP_NET_2 ACCEPT'
.
.
PF_FORWARD_5='IP_NET_1 ACCEPT' # accept everything else
PF_FORWARD_6='IP_NET_2 ACCEPT' # accept everything else
Am Besten
ist es nach der Konfiguration der neuen NIC an diese erst mal seinen PC zu
hängen, um zu sehen, ob man über die neue NIC auch ins Internet kommt. Ist der
Test erfolgreich, sollte die neue zweite NIC richtig konfiguriert sein
Beim Booten des fli4l-Routers werden die Parameter
der config-Datei igmp.txt in die Konfigurationsdatei /etc/igmpproxy.conf
geschrieben, welche beim Start des Programms igmpproxy eingelesen werden.
Sobald der
Router sich mit dem Internet verbindet, startet das Script ip-up499.igmp den
IGMP-Proxy, falls igmpproxy.conf vorhanden ist. Beim Trennen (Hang-up) wird der
Prozess von igmpproxy gestoppt und beim erneuten Verbinden wieder gestartet.
Im
laufenden Betrieb hat igmpproxy derzeit noch eine unschöne Angewohnheit: Auf
dem Terminal werden viele Debug-Meldungen ausgegeben. Das ist zwar lästig, wenn
man im Terminal etwas nachsehen will, kann aber vernachlässigt werden. Ob sich
dass ändert, hängt von einer nächsten (?) Version des igmpproxy Binaries ab.
Hier wird
der IGMP-Proxy aktiviert bzw. deaktiviert:
OPT_IGMP_PROXY='yes' #
IGMP Proxy installieren: yes or no
Mit
Quickleave kann die Last im Upstream-Link gesenkt werden. Falls der Parameter
‚Quickleave’ mit ‚yes’ eingeschaltet wird, führt das dazu, dass der Multicast
nach einem Kanalwechsel schneller abbestellt und so die Last im Downstream
gesenkt wird, indem sich der IGMP-Proxy wie ein Receiver verhält.
Gibt es 2 STB’s
und sehen diese dasselbe Programm, dann kann es (mit Quickleave = yes)
passieren, dass beim Umschalten des Programms von einer STB bei der zweiten STB
das Programm unterbrochen wird.
Beim
Einsatz von nur einer STB kann Quickleave gefahrlos eingeschaltet werden (yes).
IGMP_PROXY_QUICKLEAVE_ON='yes' # Quickleave-Modus einschalten
# yes or no; Default: yes
Für den
IPTV-Betrieb benötigt der IGMP-Proxy ein Upstream- und ein Downstream-Interface.
Das Upstream-Interface ist die Schnittstelle mit der NIC, an dem das VDSL-Modem hängt. Diese sollte i.d.R. immer
gleich bleiben.
IGMP_PROXY_UPLOAD_DEV='eth1.8' # Upstream Interface; Default: ppp0
# eth1.8 für T-Home/VDSL mit
id7/id8
Die
Schnittstelle des Downstream-Interfaces (NIC zur IPTV SetTop-Box) ist hier
abhängig von der HW-Konfiguration einzutragen. Für fli4l mit zweiter NIC – wie
in diesem Dokument beschrieben - ist eth2 das Interface zur SetTop-Box.
IGMP_PROXY_DOWNLOAD_DEV='eth2' # Downstream Interface
Alle anderen
Schnittstellen, außer dem eben festgelegten Downstream-Interface, die nicht für
IPTV benutzen werden, müssen unbedingt ausgeschaltet werden. Insbesondere gilt
dieses für das Interface zum VDSL-Modem (in unserem Beispiel eth1 bzw. eth1.7).
Das erledigt OPT_IGMP ab V1.0 allerdings von selbst.
Mit dem
Parameter ALT_NET werden Adressbereiche für Multicast-Traffic festgelegt, welche
Ihren Ursprung außerhalb des Heim-Netzwerks haben, sowie der lokale Adressbereich,
an der die STB hängt.
IGMP_PROXY_ALT_N='4' # Anzahl der Multicast Sourcen
IGMP_PROXY_ALT_NET_1='239.35.0.0/16' # IPTV streams - immer benoetigt
IGMP_PROXY_ALT_NET_2='217.0.119.0/24' # Erforderlich fuer T-Home
IGMP_PROXY_ALT_NET_3='193.158.35.0/24' # Erforderlich fuer T-Home
IGMP_PROXY_ALT_NET_4='192.168.3.0/24' # Adressraum der IPTV SetTop-Box
Damit der
Multicast-Traffic von außen auch in das Heimnetz und zur STB kommt, sind noch folgende
Änderungen in base.txt vorzunehmen.
.
.
PF_INPUT_3='any 224.0.0.0/4 ACCEPT'
.
.
PF_FORWARD_3='any 224.0.0.0/4 ACCEPT'
.
.
Hinweis:
Wer glaubt, diese Einträge lassen sich sparen, kann hier gerne experimentieren.
Ich bin zum Ergebnis gekommen, dass diese Adressen notwendig sind.
Hier noch
mal zusammengefasst die Quellen, welche mir und anderen geholfen haben, einen
igmpproxy zu konfigurieren.
[1] T-Home IPTV without speedport W 700V
http://man-wiki.net/index.php/T-Home_IPTV_without_speedport_W_700V
[2]
Multicast-Adressen im DSL-Netz
http://www.ard-digital.de/index.php?id=14029&languageid=1
[3] Wikipedia - Multicast
http://de.wikipedia.org/wiki/Multicast
[4]
VDSL-Modem unter Linux
http://www.pro-linux.de/berichte/vdsl.html
[5]
T-Home IPTV ohne Speedport unter
Linux (VDSL)
http://wiki.freakempire.de/doku.php/linux/thome_iptv_ohne_speedport_unter_linux_vdsl
[6] Sourceforge.net igmpproxy zum Downloaden
http://sourceforge.net/projects/igmpproxy
[7] spline.eisfair.dev –
VDSL – fli4l+Speedport 300HS + IPTV
[8] [fli4l] Fli4l mit VDSL
und T-Home
http://lists.spline.inf.fu-berlin.de/mailman/htdig/fli4l/2007-February/198220.html
[9] T-Home (VDSL) unter
Debian Linux einrichten (vlan id7 und 8)
http://claus.freakempire.de/2009/02/17/t-home-vdsl-unter-debian-linux-einrichten-vlan-id-7-und-8/
|
OPT_IGMP |
22.08.2007 |
|
22.09.2007 |
|
1.10.2007 |
|
2.10.2007 |
|
26.03.2008 |
|
19.04.2009 |
|
Einige
haben den IGMP-Proxy [6]bereits vor mir zum Laufen gebracht und mir die
notwendigen Tipps gegeben, damit es auch bei mir klappt und haben mir später
geholfen dieses Paket zu schreiben und die Dokumentation inhaltlich zu
verbessern. Besonders nennen möchte ich hier Nico Dummer, Jim Meba und Jean
Walter. Für alle anderen, die mir geholfen haben, bitte verzeiht mir, wenn ich
euch vergessen habe zu erwähnen.