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.