PPP over Ethernet
|Internet||IP ( IPv4 , IPv6 )|
PPP over Ethernet ( PPPoE ) is the use of the network protocol Point-to-Point Protocol (PPP) over an Ethernet connection. The protocol defines two phases: PPPoE Discovery and PPP Session. In the first phase, PPPoE Discovery , the MAC address of an access concentrator is determined. Then, in the second phase, PPP session data is exchanged according to PPP.
The motivation for the development of PPPoE was to make the possibilities of PPP such as authentication and network configuration ( IP address , gateway ) available on the faster Ethernet. Also PPPoE facilitates the management of the providers, because the infrastructure for point-to-point protocol PPP for most ISPs already from the days of analog and ISDN - modems exist. Time tariffs and automatic configuration when dialing in are only possible for ADSL , SDSL etc. with PPPoE; technically these lines are dedicated lines and therefore always available. PPPoE virtually re-establishes the "dial-up connection" here.
DSL modem and access concentrator ( DSL-AC ) of the access provider communicate via the Ethernet LAN emulation of ATM ( LANE ). PPPoE is transmitted on this layer. If the modem does not have an Ethernet connection, but is an internal PCI device or is connected via USB, at least the device driver and / or the DSL modem provide an Ethernet emulation. The PPPoE client of the operating system can then establish a connection on this.
Structure of a PPPoE package
The PPPoE packet is located in the user data field of the Ethernet frame.
- Type field of the Ethernet frame
With PPPoE, this field indicates whether it is a PPPoE discovery or a PPPoE session. The type field has the following values:
- 0x8863 - PPPoE Discovery
This concerns the search for a PoP (" Point of Presence ") using Ethernet broadcast , the establishment of the connection to the PoP and its termination.
- 0x8864 - PPPoE session
This concerns the configuration and control of the connection and the assignment of, for example, IP addresses, as well as normal Internet traffic. More details in the article PPP .
Is always constant and contains the value 1. So PPPoE version 1.
Is always constant and contains the value 1. So PPPoE type 1.
The Code field is important for PPPoE discovery. It indicates the discovery frame type. During the PPPoE session the field always contains the value 0x00.
Values in hexadecimal for the 'Code' field:
- 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
Size of the user data in bytes.
- PPP protocol and user data
PPP protocol and user data have the same structure and functions as with PPP .
PPPoE Discovery (PPPoED)
PADI stands for PPPoE Active Discovery Initiation.
If an Internet user wants to dial in via DSL, his computer must first determine whether a PoP ( DSL-AC ) is available. Communication is only possible via the MAC addresses . However, since the user's computer does not know the MAC address of the PoP, it sends the PADI packet via an Ethernet broadcast (MAC: ff: ff: ff: ff: ff: ff). The PADI packet naturally contains the sender's MAC.
Example of a PADI package:
Frame 1 (44 bytes on wire, 44 bytes captured) Ethernet II, Src: 00:50: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)
Under Src. (Source) is the MAC address of the sending computer.
The Ethernet broadcast address can be seen under Dst.
Several PoPs can receive the PADI packet.
PADO stands for PPPoE Active Discovery Offer.
After the user's computer has sent the PADI packet, the PoP sends a PADO packet. This is possible because the PoP received the sender address with the PADI package. The PADO package contains the MAC address of the PoP, its name (for example LEIX11-erx for the Telekom - DSL-AC in Leipzig) and the service name. If several PoPs send a PADO packet, the user's computer selects a PoP via the name or the service.
Here we see an example of a PADO package:
Frame 2 (60 bytes on wire, 60 bytes captured) Ethernet II, Src: 00:0e:40:7b:f3:8a, Dst: 00:50: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: lpzbr001 Tag: Host-Uniq Binary Data: (16 bytes)
Under AC name → String Data we see the AC name "lpzbr001" (Arcor DSL-AC in Leipzig)
under Src. is the MAC address of the PoP.
The manufacturer of the PoP can also be determined from this MAC address (here Nortel Networks ).
PADR stands for PPPoE Active Discovery Request.
As already mentioned, the computer now has to select a PoP . This is done with the PADR packet that is sent to the MAC address of the PoP.
PADS stands for PPPoE Active Discovery Session-confirmation.
The PADR package is confirmed by the PoP with the PADS package and a session ID is assigned. The connection with the PoP is now established and can be used.
- RFC 2516 - A Method for Transmitting PPP Over Ethernet (PPPoE) (English)