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).

 
PPPoE mit TCP/IP-Protokollstapel
Anwendung FTP SMTP HTTP DNS
Transport TCP UDP
Netzwerk IP IPv6
Netzzugang PPP
PPPoE
Ethernet

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.