Chapter 1 - Introduction to Azure RTOS NetX PPPoE Client
PPP over Ethernet (PPPoE) allows hosts to connect to PPP server via Ethernet instead of the traditional character-based serial line communication. The technical details of PPPoE are described in RFC 2516: A Method for Transmitting PPP over Ethernet (PPPoE). This document focuses on the details of Azure RTOS NetX PPPoE module.
To provide a point-to-point connection over Ethernet, each PPP session must learn the Ethernet address of the remote peer, as well as establish a unique session identifier.
According to RFC 2516, PPPoE consists of two stages: the Discovery stage, and PPPoE Session stage. When a host (client) wishes to start a PPP session, it must first perform Discovery to find PPPoE server. This step also allows the server and the client to identify each other’s Ethernet MAC address and SESSION_ID, which will be used for the rest of the PPP session.
An Ethernet frame is as follows:

The Ethernet payload for PPPoE is as follows:

PPPoE Discovery Stage
The PPPoE Discovery stage allows clients to select a server from all available servers on the network, effectively to create a session prior to PPP frames being exchanged. At the end of the discovery stage, both the client and the server shall agree on a unique session ID, and both sides need to know peer’s MAC address.
| Discovery Message | Code | Direction |
|---|---|---|
| PPPoE Active Discovery Initiation (PADI) | 0x09 | From Client to broadcast |
| PPPoE Active Discovery Offer (PADO) | 0x07 | From Server to Client |
| PPPoE Active Discovery Request (PADR) | 0x19 | From Client to Server |
| PPPOE Active Discovery Session-confirmation (PADS) | 0x65 | From Server to Client |
| PPPoE Active Discovery Terminate (PADT) | 0xa7 | Can be initiated from either server or client |
All Discovery Ethernet frames have the ETHER_TYPE field set to the value 0x8863.
PPPoE Session Message
After the client and the server create a session, PPP frames can be transferred as PPPoE Session messages. During a session, the SESSION_ID must not change and must be the value the server assigned during the Discovery stage.
All PPPoE Session Ethernet frames have the ETHER_TYPE field set to the value 0x8864.