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:

Ethernet frame

The Ethernet payload for PPPoE is as follows:

Ethernet payload

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.