Übersicht über die verschiedenen PPPoE-Treiber

Update: April 2005

  

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.

CPU Last
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)