PPPoE Active Discovery Initiation
Abkürzung: PADI
Was ist PADI?
PADI steht für PPPoE Active Discovery Initiation. Es handelt sich um das erste Paket, das ein Client in der Discovery-Phase des Point-to-Point Protocol over Ethernet (PPPoE) versendet. Mit PADI sucht der Client nach einem oder mehreren Access Concentrators (ACs), also PPPoE-Servern, im lokalen Ethernet-Segment. Der Begriff Initiation beschreibt die Eröffnung des Verbindungsaufbaus. PADI wird als Broadcast auf Layer 2 gesendet und ist damit der erste Schritt auf dem Weg zu einer PPPoE-Sitzung, wie sie bei DSL-, Kabel- und Glasfaseranschlüssen verbreitet ist.
PPPoE-Discovery-Phase im Überblick
PPPoE gliedert sich in zwei Hauptphasen: die Discovery-Phase und die Session-Phase. Die Discovery-Phase dient dazu, den passenden Access Concentrator zu finden, eine Session-ID auszuhandeln und grundlegende Verbindungsparameter festzulegen. Sie besteht aus vier aufeinanderfolgenden Paketen, die jeweils spezifische Aufgaben übernehmen.
- PADI (Initiation): Der Client sendet einen Broadcast, um verfügbare Access Concentrators zu ermitteln.
- PADO (Offer): Ein oder mehrere Server antworten mit einem Unicast-Angebot.
- PADR (Request): Der Client wählt einen Server aus und fordert die Session an.
- PADS (Confirmation): Der ausgewählte Server bestätigt die Session und vergibt eine Session-ID.
Erst nach erfolgreichem Abschluss dieser Phase beginnt der PPP-Datenverkehr in der Session-Phase. Ein fünftes Paket, PADT (Terminate), beendet die Sitzung vorzeitig.
Funktionsweise von PADI
Der Client bereitet einen Ethernet-Frame vor, der an die Broadcast-Adresse FF:FF:FF:FF:FF:FF gerichtet ist. Der Ethertype wird auf 0x8863 gesetzt, was PPPoE Discovery kennzeichnet. Im PPPoE-Header erhält das Code-Feld den Wert 0x09 für PADI. Die Session-ID ist zu diesem Zeitpunkt immer 0x0000, da noch keine Sitzung besteht. Im Payload folgen ein oder mehrere Tags im Type-Length-Value-Format.
Der wichtigste Tag ist der Service-Name-Tag. Er enthält entweder einen leeren Wert, um einen beliebigen Dienst anzufragen, oder einen konkret benannten Service, etwa den Namen des Internetdienstanbieters. Weitere optionale Tags sind Host-Uniq, mit dem der Client eine zufällige Kennung mitsendet, die der Server im PADO zurückspiegelt, oder Relay-Session-Id für den Einsatz hinter PPPoE-Relays.
Der Client sendet das PADI und startet einen Timer. Jeder Access Concentrator im Broadcast-Domain, der den angefragten Service unterstützt, antwortet mit einem PADO an die Unicast-MAC-Adresse des Clients. Der Client sammelt die Angebote, wählt einen Server aus und setzt den Discovery-Prozess mit PADR fort. Bleibt die Antwort aus, wiederholt der Client das PADI in festgelegten Intervallen.
Paketaufbau im Detail
Ein PADI-Paket besteht aus einem Ethernet-Header, dem PPPoE-Header und einem variablen Tag-Bereich. Der Ethernet-Header enthält die Quell-MAC-Adresse des Clients und die Broadcast-Ziel-MAC-Adresse. Das Ethertype-Feld wird mit 0x8863 belegt.
Der PPPoE-Header ist 6 Byte lang und enthält folgende Felder: eine 4-Bit-Version (0x01), einen 4-Bit-Type (0x01 für Discovery), ein 8-Bit-Code-Feld (0x09), eine 16-Bit-Session-ID (0x0000) und ein 16-Bit-Längenfeld für die Gesamtlänge der folgenden Tags.
Die Tags beginnen mit einem 16-Bit-Type, gefolgt von einem 16-Bit-Längenfeld und den eigentlichen Daten. Der Service-Name-Tag trägt die Type-Nummer 0x0101. Der Host-Uniq-Tag verwendet 0x0110 und übermittelt einen vom Client vergebenen Wert, den der Server im PADO-Paket unverändert zurückgibt. Dies erlaubt dem Client, die Antworten verschiedenen Anfragen zuzuordnen, insbesondere wenn mehrere PADI-Requests aktiv sind oder ein Relay zwischengeschaltet ist.
PADI im praktischen Einsatz
In Deutschland und vielen anderen Ländern ist PPPoE die vorherrschende Einwahlmethode für DSL-Anschlüsse. Im Heimnetzwerk versendet der Router nach dem Start oder bei einer manuellen Verbindungsaufforderung ein PADI über das mit dem Modem verbundene Ethernet-Interface. Beim DSL-Modem endet das Ethernet-Segment physikalisch; logisch antwortet der Access Concentrator des Providers, der sich im Backbone oder in einem Broadband Access Server (BRAS) befindet. Auch bei Glasfaseranschlüssen (FTTH) mit aktiven Komponenten oder bei Kabelanschlüssen mit DOCSIS und PPPoE-Aushandlung kommt PADI zum Einsatz.
Fehlerszenarien und Diagnose
Empfängt der Client nach dem PADI kein PADO, kann die Ursache vielfältig sein. Der Access Concentrator ist möglicherweise nicht erreichbar, der Service-Name ist falsch konfiguriert, oder eine Firewall blockiert den Broadcast. In Providernetzen kann eine falsche VLAN-Konfiguration dazu führen, dass das PADI nicht am AC ankommt. Antworten mehrere Access Concentrators, muss der Client eine Auswahl treffen. In der Praxis wird häufig der erste antwortende AC genutzt oder derjenige, dessen Service-Name exakt mit der Konfiguration übereinstimmt. Eine fehlerhafte Auswahl kann zu Verbindungsabbrüchen oder Authentifizierungsfehlern in der PPP-Phase führen.
Abgrenzung zu anderen PPPoE-Paketen
PADI ist das einzige Broadcast-Paket der Discovery-Phase. Alle weiteren Pakete, PADO, PADR und PADS, werden als Unicast zwischen Client und Server ausgetauscht. PADI trägt keine Session-ID und fordert lediglich eine Liste verfügbarer Server an. Im Unterschied zur späteren PPP-Authentifizierung und -Konfiguration werden während PADI noch keine Nutzdaten übertragen. Der gesamte Discovery-Prozess einschließlich PADI ist ein reiner Kontrollmechanismus zur Herstellung einer Punkt-zu-Punkt-Verbindung über ein geteiltes Medium.