Aktualisierter Ausschnitt aus dem Artikel "DSL mit Linux: Mit PPPoE ins Internet", Linux
Magazin 12/2001, von Michael Schlenstedt
Mittlerweile haben Linuxer nicht nur bei ihrem ADSL-Provider die freie Wahl,
auch bei der Treiber-Wahl herrscht Artenvielfalt unter dem freien
Betriebssystem.
Kommt Zeit, kommt Rat
Seit dem letzten ADSL-Artikel im Linuxmagazin genau vor einem Jahr (Ausgabe
11/2000) hat sich in der ADSL-Landschaft in Deutschland einiges
getan. So ist man mittlerweile nicht mehr zwangsweise bei der Provider- bzw.
Anschlusswahl auf die Deutsche Telekom festgelegt. Wer eine Alternative zum
Rosa-Riesen sucht, wird unter
http://www.adsl4linux.de/anbieter fündig. Aufgenommen wurden alle für
Privatkunden interessanten ADSL-Zugänge und -Anschlüsse. Es fehlen
Businesstarife und Zugänge über andere DSL-Varianten, wie z.B. SDSL.
Die meisten deutschen Provider verwenden das standardisierte Zugangsprotokoll
PPPoE (Point-To-Point-Over-Ethernet), um den Zugang zu ihren
Diensten zu ermöglichen. Oder aber sie verzichten gänzlich auf eine
Software-Lösung und liefern dem Kunden einen Hardware-Router mit, welcher das
heimische Netz via DHCP (Dynamic Host Configuration Protocol) direkt mit dem
Provider verbindet. Diese Lösung ist vollkommen betriebssystemunabhängig
(DHCP-Unterstützung vorausgesetzt) und über die Konfigurationstools aller
gängigen Distributionen sehr einfach zu konfigurieren. Verwendet der Provider
hingegen PPPoE, so benötigt man neben der Hardware auch noch einen
entsprechenden PPPoE-Treiber für sein Betriebssystem.
Wer die Wahl hat...
Auch die PPPoE-Treiber-Entwicklung unter dem Pinguin ist im letzten Jahr mit
rasanten Sprüngen vorangeschritten. So stehen dem Anwender mittlerweile 3
größere, stabile Treibervarianten zur Verfügung: RP-PPPoE
(Roaring-Penguin-Treiber) und die beiden Kernel basierenden PPPoE-Treiber
jeweils für Kernel 2.2.x und 2.4.x.
Wir führen jedes Jahr auf adsl4linux.de eine Umfrage über die
Verbreitung der PPPoE-Treiber durch. Im Jahr 2001 nahmen an dieser Umfrage
1181, 2002 sogar 1793 User teil. Deutlich ist, dass 2001 alle 3 Treiber noch
fast gleich stark verwendet wurden (siehe Abbildung 1). Mittlerweile hat der Kerneltreiber
für 2.4.x nochmals stark zugelegt, da ja bekanntlich alle großen
Distributionen (und demnächst auch Debian) auf Kernel 2.4.x umgestellt haben.
Er dominiert mit fast 50% die PPPoE-Landschaft. Der alte Kerneltreiber für
Linux-Kernel 2.2.x ist mittlerweile so gut wie bedeutungslos.
Vergleicht man Kernel- gegen Userspace-Treiber (rp-pppoe), so liegen
die Kerneltreiber sowohl 2001 als auch 2002 mit zusammen knapp über 60% sogar
weit vor dem Roaring-Penguin-Treiber, der vor einem Jahr noch die einzige
wirklich stabil laufende Möglichkeit der PPPoE-Implementierung unter Linux
darstellte.
 |
 |
| Abbildung 1: Verbreitung der PPPoE-Treiber |
Aber welche Vor- und Nachteile haben die einzelnen Treiber nun für den
Endanwender? Oder ist es gar egal, für welchen Treiber man sich im Endeffekt
entscheidet? Nunja, die Antwort fällt nicht leicht und tendiert sogar eher zu
letzterem Punkt. Wie immer sollte man sich als Linuxuser zunächst klar werden,
welchen Anwendungszweck man abdecken muss bzw. möchte.
Als wichtigsten Unterschied der einzelnen Treiber sind vor allen anderen Punkten
das Userspace und Kernel basierende Konzept zu nennen. Während die
Kernel-Treiber direkt im Linux-Kernel implementiert sind bzw. als Module
nachgeladen werden können, arbeitet der RP-PPPoE im Userspace, d.h. er läuft als
externes Programm komplett außerhalb des Kernels. Das hat den entscheidenden
Nachteil, dass alle Daten zuerst umständlich zwischen Userspace und Kernel
umkopiert werden müssen. Zudem kann der Scheduler dem PPPoE-Prozess auch die
Prozessorzeit entziehen, wenn gerade hohe Last auf dem Rechner herrscht. Das
würde ein Einbrechen der Bandbreite bedeuten. Gerade wer einen
leistungsschwachen, älteren Rechner als Router für ein kleineres Netz einsetzt
(etwa einen P75 oder 486'er), sollte sehr stark auf die Performance bzw. die
verursachte CPU-Last des Treibers achten. Allerdings kann die CPU-Last des
RP-PPPoE-Treibers durch das Hinzuladen des Kernelmoduls "HDLC Line Discipline"
und das Aktivieren der synchronen Datenübertragung nahezu auf das Niveau der
Kernel-Treiber reduziert werden. Abbildung 2 zeigt die CPU-Last beim Download
einer 10MB großen Testdatei auf einem P75-System mit 32 MB Hauptspeicher und
einem Durchsatz von 85 KB/s. Man sieht deutlich, dass bei synchroner
Datenübertragung die CPU-Last auf unter 5% sinkt, was in etwa soviel entspricht
wie bei den Kerneltreibern (2-3%). Wer hingegen einen aktuellen PC als Router
oder Zugangsrechner einsetzt, kann zwar mit einem Tool wie xosview oder
top sicherheitshalber die CPU-Auslastung nochmals kontrollieren, wird sich
aber diesbezüglich keinerlei Gedanken mehr machen müssen, da aktuelle
Prozessoren genug Leistungsreserven zur Verfügung stellen.
 |
| Abbildung 2: Verursachte CPU-Last des RP-PPPoE-Treibers auf einem P75-System |
Dieser Aspekt alleine stellt also noch kein ultimatives
Entscheidungskriterium dar. Aber wie sieht es mit der Stabilität der Treiber
aus? Pinguine geben sich ja bekanntlich nicht mit abstürzenden Rechnern
zufrieden. Hier hat ganz klar der RP-PPPoE-Treiber die Nase vorn. Er liegt
mittlerweile in der Version 3.4 vor und ist seit langer Zeit sehr erprobt,
wohingegen der PPPoED für Kernel 2.2.x kaum noch weiterentwickelt wird und der
PPPoE-Treiber des 2.4.x-Kernels sich noch mitten im Entwicklungsstadium
befindet. Gerade letzteres macht sich auch schon einmal in
nicht-funktionierenden Patches und auch Kernelabstürzen (Kernel Panic)
bemerkbar. Allerdings ist der PPPoE-Code nun bereits vollständig im CVS-Tree
des pppd integriert, sodass er in naher Zukunft wohl als stable eingestuft werden wird.
Zwar sollten Abstürze des Systems mit den letzten Kernelversionen damit der
Vergangenheit angehören, aber wer die PPPoE-Verbindung in einem
unternehmenskritischen Umfeld einsetzt, sollte zur Zeit noch auf den
Kerneltreiber verzichten.
Aber auch wer Dial On Demand auf seinem System einsetzen möchte, muss bei der
Treiberauswahl aufmerksam sein. So unterstützen zwar alle Treiber mittlerweile
auch das automatische Aufbauen einer Verbindung bei Bedarf, aber durch einen Bug
im ppp-Daemon (pppd) funktioniert Dial On Demand nur bei asynchroner
Datenübertragung. Zwar existiert ein Patch für den synchronen Modus des pppd
(siehe unter
ftp://adsl4linux.de/pub/misc/pppd_patch/), dieser wird aber vom Autor
höchstens als "Workaround" bezeichnet und sollte daher auch nicht im absolut
kritischen Umfeld eingesetzt werden. Somit fallen der RP-PPPoE-Treiber im
synchronen, lastreduzierten Modus und auch der Kernel-Treiber für 2.2.x unter
den Tisch, da auch dieser Treiber zwangsweise auf die synchrone
Datenübertragung angewiesen ist.
Die verwendete Kernelversion spielt natürlich ebenfalls eine Rolle, so
funktioniert der Roaring-Penguin-Treiber bei allen Kernelversionen ab Kernel
2.0.x (die "Null" in der Mitte ist kein Schreibfehler ;-)), die drei Kerneltreiber natürlich nur jeweils für Kernel 2.2.x bzw. 2.4.x.
und 2.6.x
Tabelle 1 listet übersichtlich nochmals alle Vor- und Nachteile der
einzelnen PPPoE-Treiber auf.
| Tabelle 1: Übersicht PPPoE-Treiber |
|
CPU-Last |
DialOnDemand |
Installation |
Stabilität |
Kernel |
| RP-PPPoE m. sync. [1] |
gering |
Nein [2] |
Einfach |
Hoch |
ab 2.0.36 |
| RP-PPPoE o. sync. |
Mittel |
Ja |
Sehr einfach |
Hoch |
ab 2.0.36 |
| pppoed 2.2.x |
gering |
Nein [2] |
Einfach |
Mäßig bis Hoch |
nur 2.2.x |
| PPPoE 2.4.x |
gering |
Ja |
Aufwendig |
Hoch |
nur 2.4.x |
| PPPoE
2.6.x |
gering |
Ja |
Einfach |
Hoch |
nur
2.6.x |
| [1] Mit Sync-Option und
Kernelmodul HDLC Line Discipline |
| [2] Nur mit Patch oder Diald (siehe Text) |
|
|