Tomato und VDSL

Update! Ich war mal so frei und hab eine selbststaendig laufende Loesung aufgeschrieben. Schaut’s euch hier an: Klick!

Dieser Artikel handelt von einer technischen Umsetzung, die so wirklich nur in Deutschland bislang Anwendung findet – daher verfasse ich diesen Artikel auf deutsch.

Seit knapp zwei Jahren bietet unsere allseits heissgeliebte Telekom unter dem Namen T-Home ihre Entertain-Tarife an, die wahlweise mit VDSL (25/5 oder 50/10 MBit) geschaltet werden koennen. Da, wie der Name bereits verraet, ein IPTV-Paket dabei ist, verwendet die Telekom das sogenannte VLAN-Tagging, um die gewoehnliche Internetleitung (Surfen, Email, P2P, etc) von der Leitung zu trennen, die die IPTV-Inhalte an die mitgelieferte Settop-Box zuliefert.

Die derzeit standardmaessig von der Telekom ausgelieferte Modem-Router-Loesung Speedport w721v beherrscht dieses VLAN-Tagging sowie die Aufspaltung der beiden Netze auch problemlos. Waere ja dreist wenn anders. Allerdings ist sie gravierenderweise nicht in der Lage, die vollen 50 MBit an Durchsatz zu erreichen. Nichtmal im PPPoE-Passthrough Modus; d.h. wenn man den Speedport als reines Modem verwendet und das Routen eine andere Kiste – beispielsweise einen WRT54G(L/S) uebernehmen laesst. Das einzig praktische an diesem Speedport ist, dass er im Modem-Modus das VLAN-tagging uebernimmt. Somit funktionierte bislang VDSL mit meinem WRT54GL mit Tomato-Firmware ganz prima – mit dem Abstrich der etwas traurigen Downstream-Leistung.

Da es allerdings den Speedport 300HS, der frueher durch die Telekom fuer VDSL als Modem-Loesung vor einem Router-only Speedport w700v eingesetzt wurde, auf eBay fuer 10 Euro inklusive Versand gibt, denkt man sich doch, dass man seine Situation eventuell doch verbessern koennte. Noch dazu gibt es genuegend Meldungen, dass der 300HS die volle 50MBit-Bandbreite schafft.

Da Tomato eine Funktion fuer’s VLAN-Tagging, das wie zuvor erwaehnt fuer den Aufbau der PPPoE-Verbindung noetig ist, ab Werk nicht beherrscht (DD-WRT tut das z.B. in den neuesten Releases, aber wer mag schon DD-WRT ; ), ist der Weg dahin nun Inhalt dieses Beitrags.

Zunaechst ein paar Details:

Das Modem verbindet per Telefonleitung den Router mit dem DSLAM. Fuer eine Einwahl ueber das PPPoE-Protokoll durch den Router wird ein VLAN-Tag mit der VID7 (VLAN-ID) erwartet. Sonst passiert erstmal gar nichts.

WRT54G(L/S)s bestehen aus drei (fuer diese Erklaerung relevanten) Komponenten: dem WLAN-Modul, dem Switch und der CPU. Switch und WLAN-Modul sind mit der CPU verbunden, die beispielsweise NAT, QoS, Port Forwarding und sonst auch groesstenteils alles, was algorithmische Rechenleistung verlangt, uebernimmt. Das WLAN-Modul koennen wir fuer dieses Tutorial ausser acht lassen, da unrelevant. Das interessante ist nun der Switch. Rein physisch handelt es sich dabei um einen 6-Port Switch. Dieser unterteilt sich in vier LAN-Ports, einen WAN-Port, an den das Modem angeschlossen wird, und einen internen Port, der direkt mit der CPU verloetet ist. Um die Sicherheit, die der Natur eines NAT-betreibenden Routers inne liegt zu gewaehrleisten, sind besagte LAN-Ports und der WAN Port von einander durch schon erwaehnte VLANs getrennt. Dabei handelt es sich grob gesagt um eine Softwareloesung, um in einem physikalisch zusammenhaengenden Netzwerk mehrere, von einander getrennte virtuelle Netzwerke zu erschaffen. Die meisten WRT54G(L/S)-Firmwares loesen dies ueber abspalten verschiedener Ports. Standardmaessig sind dabei die LAN-Ports in einem VLAN (vlan0) zusammen mit dem internen, zur CPU verbindenden Switch-Port, und ein weiteres virtuelles Netzwerk (vlan1) wird durch die Verbindung zwischen WAN-Port und dem internen Switch-Port aufgespannt. Damit man nun aus dem LAN ein Paket ins Internet schicken kann, wird ein eben solches Paket zwischen den beiden VLANs geforwarded. Gut, soviel dazu.

Tomato’s VLAN1 wird standardmaessig zum Einwaehlen verwendet. Wenn man sowas auf einem Desktop-Linux wie beispielsweise Ubuntu macht, verwendet man ueblicherweise eth0 oder Aehnliches, eben ein Netzwerkinterface, an dem das Modem angeschlossen ist, aber hier ist das eben anders. Soviel nur am Rande.

Tomato selbst beherrscht VLAN-Tagging. Allerdings ist eine fuer die T-Home VDSL Leitungen noetige Konfiguration weder im Web-Interface (WebIF) vorhanden, noch laesst sie sich ueber selbiges erreichen. Somit wird alles VLAN-relevante in diesem Artikel ueber die Kommandozeile – also ueber SSH oder Telnet erfolgen. Beide koennt ihr im WebIF unter Administration -> Admin Access einschalten. Fuer die Terminalverbindung eignet sich nun unter Windows PuTTY am besten. Linux-Benutzer werden sich in Sachen Terminalclients sicher auch auskennen.

Gut, legen wir los.

Zunaechst mal sollte PPPoE-technisch alles im WebIF vorkonfiguriert sein; sprich die Einwahldaten sollten korrekt angegeben sein.

Als naechstes loggen wir uns per SSH oder Telnet auf den Router ein. Dort schauen wir uns zunaechst mal die aktuelle VLAN1-Verteilung an:

# nvram get vlan1ports
4 5

So beispielsweise koennte die Ausgabe aussehen. Port Nummer 5 wird auf jeden Fall als zweiter Port dort stehen, die erste Portnummer ist je nach WRT54G(L/S)-Revision unterschiedlich. Wie das bei anderen von Tomato unterstuetzten Geraeten, bspw. den Buffalo- oder Asus-Routern aussieht, weiss ich leider nicht.

Wir erstellen jetzt jedenfalls zwei neue VLAN-NVRAM-Variablen, die den WRT beim Neustart dann dazu veranlassen, ein neues VLAN zu erstellen. Analog zur obigen Ausgabe:

# nvram set vlan7hwname=et0
# nvram set vlan7ports=”4t 5″
# nvram set manual_boot_nv=1
# nvram commit
Commit… done.
#

Zeilenweise erklaert: Dem VLAN mit der VID7 wird das et0-Device (der Switch) zugeordnet; danach werden der WAN- und der interne CPU-Switchport dem VLAN zugewiesen. Dabei wird der WAN-Port als “tagged” deklariert; ihn verlassen die Pakete getaggt – eben so wie es der VDSL-DSLAM erwartet. Zeile drei dient dazu, das Init-Script der Firmware davon abzuhalten, die VLAN-Konfiguration zu aendern. Laut diversen Foreneintraegen ist das nur ab Revision 4.0 des WRT54G und bei den WRT54GLs noetig, aber selbst bei meinem WRT54GL war das unnoetig, da es nach Reboots dahingehend keine Probleme gab. Kann also testweise mal rausgelassen werden. Zeile vier speichert das Ganze dann in den Flashspeicher.

Nach einem Reboot koennen wir dann wieder durchs Terminal nachschauen, ob das vlan7-interface angelegt wurde:

# cat /proc/net/vlan/vlan7

Alternativ:

# ifconfig vlan7

tritt bei einem der Befehle ein Fehler auf, geht nochmal einen Schritt zurueck und ueberprueft, was ihr vorher getippt habt. Bekommt ihr eine passende Ausgabe, dann stimmt soweit alles.

Als naechstes, und das wird zur aktuellen Firmware-Revision 1.23 nach jedem Reboot noetig sein, aktivieren wir das vlan-interface und tragen es als wan-interface ein.

# ifconfig vlan7 up
# nvram set wan_ifname=vlan7

Danach reicht ein simples

# service wan restart

und der Router verhaelt sich, als waeren wir an einer gewoehnlichen PPPoE-Verbindung. Alles fertig.

Abschliessende Worte

Die WRT54G(L/S) erreichen bei Speedtests mit der hier beschriebenen Methode zwar einen durchaus hoeheren Durchsatz als der w721v alleine, schaffen aber leider nicht den vollen Durchsatz von 50Mbit/s im Downstream. Dazu bietet sich an, den Router zu uebertakten. Das Ganze laesst sich wie beispielsweise hier beschrieben durchfuehren – als Testwerte kann man mal bei 216Mhz anfangen und sich dann langsam aufwaerts bis 250Mhz wagen – mehr wuerde ich ohne Kuehlmodifikation nicht versuchen.

Mit erwaehnten 250Mhz hatte zumindest mein WRT54GL v1.1 dann einen Durchsatz von 5,6Mbyte/s, was auch so ziemlich dem Maximum entspricht. Mit aktiviertem QoS fiel der Wert leider um 1Mbyte/s geringer aus, ein Router mit schnellerer CPU waere also durchaus eine Anschaffung wert. Leider gibt es derzeit keine signifikant leistungsstaerkeren CPUs in Routern, die von Tomato unterstuetzt werden. Somit erachte ich diese Loesung einfach mal als die bestmoegliche.

Als letzte Notiz moechte ich noch hinzufuegen, dass ich diesen Artikel in praegnanterer Kurzform (ist ja ein halbes Buch geworden…) neu erstellen werde, sobald Tomato 1.24 released wurde. Momentan arbeite ich mit einer Beta der 1.24-Firmware, in welcher sich die Umstellung der NVRAM-Variable nach jedem Bootvorgang des Routers sparen laesst – weil sich naemlich dort die wan_ifname-Variable nicht jedesmal auf vlan1 zuruecksetzt (oder man dies zumindest umgehen kann). Vielen Dank hierfuer geht an Jonathan Zarate, Urheber und Entwickler der auf HyperWRT basierenden Tomato-Firmware.

Vielleicht kriege ich bis dahin auch die IPTV-Scheisse hin.

3 responses to “Tomato und VDSL

  1. Hallo,
    erstmal danke für die Anleitung, hat super geklappt.
    wollte mal fragen, ob du es schon hinbekommen hast mit dem IP-TV Kram, damit ich meinen 701v endlich ausrangieren kann, das Ding raubt einem noch den letzten Nerv *g*

    MfG
    Stephan

  2. Danke für die ausführlichen Informationen … manchmal sind lange
    Erklärungen 1000mal besser als die “praegnantere Kurzform” …
    besonders dann, wenn der Leser von nichts Ahnung hat 🙂

Leave a reply to Stephan Cancel reply