PPP over Ethernet
PPP over Ethernet (PPPoE) ist die Verwendung des Netzwerkprotokolls Point-to-Point Protocol (PPP) über eine Ethernet-Verbindung. PPPoE wird heute bei ADSL-Anschlüssen in Deutschland verwendet. Österreich hingegen verwendet für ADSL-Zugänge das Point To Point Tunneling Protocol (PPTP). |
|
Motivation für die Entwicklung von PPPoE war, die Möglichkeiten von PPP wie Authentifizierung und Netzwerkkonfiguration (IP-Adresse, Gateway) auf dem schnelleren Ethernet zur Verfügung zu stellen. Auch erleichtert PPPoE den Providern die Verwaltung, da die Infrastrukturen für PPP bei den meisten ISPs schon aus den Zeiten der Analog- und ISDN-Modems bestehen. Zeittarife und automatische Konfiguration bei der Einwahl sind für ADSL, SDSL etc. erst mit PPPoE möglich, technisch sind diese Leitungen Standleitungen und daher immer verfügbar. PPPoE stellt hier die "Wählverbindung" virtuell wieder her, was nicht zuletzt auch dem Benutzer entgegenkommt: Er sieht keinen Unterschied zwischen bereits gewohnten Wählverbindungen über Analog- oder ISDN-Modem und seiner DSL-Leitung, muss sich also nicht umgewöhnen.
Ein Problem bei der Verwendung von PPPoE ist die verringerte maximale Paketgröße (Maximum Transfer Unit), die bei Ethernet grundsätzlich 1500 Byte beträgt. Bei PPPoE verringert sie sich jedoch wegen eines zusätzlichen Headers um 8 Byte auf 1492 Byte. Falls der TCP/IP-Treiber die Größe beim Senden nicht ermitteln kann, werden trotzdem 1500 Byte große Datenpakete erzeugt. Dies ist normalerweise kein Problem, da das Internet-Protokoll das Paket fragmentieren kann. Fragmentierung wird wegen des erforderlichen Aufwandes jedoch zunehmend im Internet abgeschaltet, so dass ohne besondere Maßnahmen manche Webserver nicht zugänglich erscheinen.
Aufbau eines PPPoE-Pakets
Das PPPoE-Paket befindet sich im Nutzdatenfeld des Ethernet-Frames..
Typfeld des Ethernet-Frames:
Dieses Feld gibt bei PPPoE an, ob es sich um eine PPPoE-Discovery oder eine PPPoE-Session handelt. Folgende Werte hat das Typ-Feld:
0x8863 - PPPoE Discovery
Dies betrifft die Suche eines PoP („Point
of Presence“) mittels Ethernet-Broadcast,
die Herstellung der Verbindung zum PoP und deren
Abbau.
0x8864 - PPPoE Session
Dies betrifft die Konfiguration und Kontrolle der
Verbindung und die Zuweisung von zum Beispiel
IP-Adressen, sowie der ganz normale
Internet-Verkehr. Genaueres im Artikel
PPP.
Version:
Ist immer konstant und beinhaltet den Wert 1. Also PPPoE-Version 1.
Typ:
Ist immer konstant und beinhaltet den Wert 1. Also PPPoE-Typ 1.
Code:
Ist wichtig für PPPoE-Discovery. Es zeigt die Discovery-Frame-Art an. Während der PPPoE-Session beinhaltet das Feld immer den Wert 0x00.
Werte in hexadezimal für das Feld 'Code'::
0x00 - Session Data
0x07 - PADO (PPPoE Active Discovery Offer)
0x09 - PADI (PPPoE Active Discovery Initiation)
0x19 - PADR (PPPoE Active Discovery Request)
0x65 - PADS (PPPoE Active Discovery
Session-confirmation)
0xa7 - PADT (PPPoE Active Discovery Termination)
Session-ID:
Die SessionID wird durch den PoP mit dem PADS-Frame vergeben und ist gültig für eine Verbindung. Vorher ist der Wert 0x0000.
Length:
Größe der Nutzdaten in Byte.
PPP Protocol und Nutzdaten:
PPP Protocol und Nutzdaten haben denselben Aufbau und dieselben Funktionen wie bei PPP.
PPPoE Discovery (PPPoED)
PADI
PADI steht für PPPoE Active Discovery
Initiation.
Möchte sich ein Internetnutzer über DSL einwählen so
muss sein Rechner erst einmal feststellen, ob ein
PoP (DSL-AC)
vorhanden ist. Eine Kommunikation ist nur über die
MAC-Adressen möglich. Da aber der Rechner des
Nutzers die
MAC-Adresse vom PoP nicht kennt sendet dieser
das PADI-Paket über einen Ethernet-Broadcast
(MAC: ff:ff:ff:ff:ff:ff). Das PADI-Paket enthält
natürlich die MAC des Absenders.
Beispiel für ein PADI-Paket:
Frame 1 (44 bytes on wire, 44 bytes captured) Ethernet II, Src: 00:5Q:da:42:d7:df, Dst: ff:ff:ff:ff:ff:ff PPP-over-Ethernet Discovery Version: 1 Type 1 Code Active Discovery Initiation (PADI) Session ID: 0000 Payload Length: 24 PPPoE Tags Tag: Service-Name Tag: Host-Uniq Binary Data: (16 bytes)
Unter Src. (= Quelle) steht die
MAC-Adresse des
sendenden Rechners.
Unter Dst. (= Ziel) ist die
Ethernet-Broadcast-Adresse zu erkennen.
Das PADI-Paket können mehrere PoP empfangen.
PADO
PADO steht für PPPoE Active Discovery
Offer.
Nachdem der Rechner des Nutzers das PADI-Paket
gesendet hat, schickt der PoP ein PADO-Paket. Dies
ist möglich, da der PoP die Absenderadresse mit dem
PADI-Paket bekommen hat. Das PADO-Paket beinhaltet
die
MAC-Adresse des PoP, seinen Namen (zum Beispiel
LEIX11-erx für den T-Com DSL-AC in Leipzig) sowie
die Dienstbezeichnung. Senden mehrere PoP ein
PADO-Paket, so wählt der Rechner des Nutzers einen
PoP über den Namen oder den Dienst aus.
Hier sehen wir ein Beispiel für ein PADO-Paket:
Frame 2 (60 bytes on wire, 60 bytes captured) Ethernet II, Src: 00:0e:40:7b:f3:8a, Dst: 00:5Q:da:42:d7:df PPP-over-Ethernet Discovery Version: 1 Type 1 Code Active Discovery Offer (PADO) Session ID: 0000 Payload Length: 36 PPPoE Tags Tag: Service-Name Tag: AC-Name String Data: IpzbrOOl Tag: Host-Uniq Binary Data: (16 bytes)
Unter AC-Name->String Data sehen wir den AC-Namen
"lpzbr001" (Arcor DSL-AC in Leipzig)
Unter Src. ist die
MAC-Adresse des PoP.
Aus dieser
MAC-Adresse kann man auch den Hersteller
des PoP feststellen (hier Nortel Networks).
PADR
PADR steht für PPPoE Active Discovery
Request.
Wie schon erwähnt, muss der Rechner nun einen PoP
auswählen. Dies erfolgt mit dem PADR-Paket, das an
die
MAC-Adresse des PoP gesendet wird.
PADS
PADS steht für PPPoE Active Discovery
Session-confirmation.
Das PADR-Paket wird vom PoP mit dem PADS-Paket
bestätigt sowie eine Session-ID vergeben. Die
Verbindung ist mit dem PoP nun aufgebaut.
PADT
PADT steht für PPPoE Active Discovery
Termination.
Das Paket hat die Aufgabe, die Verbindung zum PoP zu
trennen. Es kann vom Rechner des Nutzers wie auch
vom PoP gesendet werden.