PPPoE - Point-to-Point Protocol over Ethernet ================================================ .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **What is PPPoE?** PPPoE (Point-to-Point Protocol over Ethernet) is a network protocol that encapsulates PPP frames inside Ethernet frames. It is commonly used by Internet Service Providers (ISPs) to manage broadband connections, especially DSL. PPPoE combines the features of PPP (authentication, encryption, compression) with the Ethernet protocol. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **Why is PPPoE useful?** * User Authentication – Supports PAP/CHAP for verifying user credentials before granting access. * Session Management – Establishes individual sessions for each user, enabling accounting and billing. * Encapsulation – Allows PPP features to be used over Ethernet networks. * Widely Supported – Compatible with most routers, modems, and operating systems. * Dynamic IP Assignment – Supports IP address assignment via IPCP (IP Control Protocol). .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **How it works?** * Discovery Phase – The client broadcasts a PPPoE Active Discovery Initiation (PADI) packet to find an access concentrator. * Session Establishment – The server replies with a PADO (Offer), and the client responds with PADR (Request). The server then sends a PADS (Session-confirmation). * Authentication – PPP authentication (e.g., PAP or CHAP) is performed over the established session. * IP Configuration – The client negotiates IP settings using IPCP. * Data Transfer – Once authenticated and configured, data is transmitted over the PPPoE session. * Session Termination – Either side can terminate the session using a PADT (Terminate) packet. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **Where is PPPoE used?** * DSL Internet Access – Commonly used by ISPs to manage DSL broadband connections. * Home Routers – Many consumer routers use PPPoE to connect to ISP networks. * Enterprise Networks – Used in some corporate environments for secure, authenticated access. * Billing Systems – Enables ISPs to track usage per session for billing purposes. * Virtual Private Networks (VPNs) – Sometimes used in conjunction with VPNs for added security and session control. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **Which OSI Layer does this protocol belong to?** * Data Link Layer (Layer 2) – PPPoE operates directly over Ethernet frames. * It manages logical sessions between endpoints. * It bridges PPP capabilities into Ethernet networks. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow Topics in this section, * :ref:`Learnings in this section ` * :ref:`Terminology ` * :ref:`Version Info ` * :ref:`PPPoE Version&RFC Details ` * :ref:`PPPoE Basic Setup on Ubuntu using IPv4 ` * :ref:`PPPoE Basic Setup on Ubuntu using IPv6 ` * :ref:`PPPoE Protocol Packet Details ` * :ref:`PPPoE Usecases ` * :ref:`PPPoE Basic Features ` * :ref:`PPPoE Feature : Encapsulation ` * :ref:`PPPoE Feature : Authentication ` * :ref:`PPPoE Feature : Session Establishment ` * :ref:`PPPoE Feature : Dynamic IP Assignment ` * :ref:`PPPoE Feature : Bandwidth Management ` * :ref:`PPPoE Feature : Error Detection ` * :ref:`PPPoE Feature : Support for IPv4&IPv6 ` * :ref:`PPPoE Feature : Accounting ` * :ref:`PPPoE Feature : Compatiblity ` * :ref:`PPPoE Feature : Scablity ` * :ref:`Reference links ` .. _PPPoE_step1: .. tab-set:: .. tab-item:: Learnings in this section * In this section, you are going to learn .. _PPPoE_step2: .. tab-set:: .. tab-item:: Terminology * Terminology .. _PPPoE_step3: .. tab-set:: .. tab-item:: Version Info * Version Info .. _PPPoE_step5: .. tab-set:: .. tab-item:: PPPoE Version&RFC Details .. csv-table:: :file: ./PPPoE/PPPoE_rfcdetails.csv :widths: 10,10,10,30 :header-rows: 1 .. _PPPoE_step19: .. tab-set:: .. tab-item:: PPPoE Basic Setup on Ubuntu using IPv4 * Setup .. _PPPoE_step20: .. tab-set:: .. tab-item:: MQTT Basic Setup on Ubuntu using IPv6 * Setup .. _PPPoE_step6: .. tab-set:: .. tab-item:: PPPoE Protocol Packet Details **PPPoE Discovery Packet – PADI (Initiation)** .. csv-table:: :file: ./PPPoE/PPPoE_packetdetails1.csv :widths: 10,20,30,10 :header-rows: 1 **PPPoE Discovery Packet – PADO (Offer)** .. csv-table:: :file: ./PPPoE/PPPoE_packetdetails2.csv :widths: 10,20,30,10 :header-rows: 1 **PPPoE Discovery Packet – PADR (Request)** .. csv-table:: :file: ./PPPoE/PPPoE_packetdetails3.csv :widths: 10,20,30,10 :header-rows: 1 **PPPoE Discovery Packet – PADS (Session-confirmation)** .. csv-table:: :file: ./PPPoE/PPPoE_packetdetails4.csv :widths: 10,20,30,10 :header-rows: 1 **PPPoE Discovery Packet – PADT (Terminate)** .. csv-table:: :file: ./PPPoE/PPPoE_packetdetails5.csv :widths: 10,20,30,10 :header-rows: 1 **PPPoE Session Packet** .. csv-table:: :file: ./PPPoE/PPPoE_packetdetails5.csv :widths: 10,20,30,10 :header-rows: 1 .. _PPPoE_step7: .. tab-set:: .. tab-item:: PPPoE Usecases .. csv-table:: :file: ./PPPoE/PPPoE_usecases.csv :widths: 10,20,30 :header-rows: 1 .. _PPPoE_step8: .. tab-set:: .. tab-item:: PPPoE Basic Features .. csv-table:: :file: ./PPPoE/PPPoE_basicfeatures.csv :widths: 10,10,30 :header-rows: 1 .. _PPPoE_step9: .. tab-set:: .. tab-item:: PPPoE Feature : Encapsulation **Encapsulation - Testcases** .. csv-table:: :file: ./PPPoE/PPPoE_feature1_Encapsulation.csv :widths: 10,10,30,20 :header-rows: 1 .. _PPPoE_step10: .. tab-set:: .. tab-item:: PPPoE Feature : Authentication **Authentication - Testcases** .. csv-table:: :file: ./PPPoE/PPPoE_feature2_Authentication.csv :widths: 10,10,30,20 :header-rows: 1 .. _PPPoE_step11: .. tab-set:: .. tab-item:: PPPoE Feature : Session Establishment **Session Establishment - Testcases** .. csv-table:: :file: ./PPPoE/PPPoE_feature3_Session_Establishment.csv :widths: 10,10,30,20 :header-rows: 1 .. _PPPoE_step12: .. tab-set:: .. tab-item:: PPPoE Feature : Dynamic IP Assignment **Dynamic IP Assignment - Testcases** .. csv-table:: :file: ./PPPoE/PPPoE_feature4_Dynamic_IP_Assignment.csv :widths: 10,10,30,20 :header-rows: 1 .. _PPPoE_step13: .. tab-set:: .. tab-item:: PPPoE Feature : Bandwidth Management **Bandwidth Management - Testcases** .. csv-table:: :file: ./PPPoE/PPPoE_feature5_Bandwidth_Management.csv :widths: 10,10,30,20 :header-rows: 1 .. _PPPoE_step14: .. tab-set:: .. tab-item:: PPPoE Feature : Error Detection **Error Detection - Testcases** .. csv-table:: :file: ./PPPoE/PPPoE_feature6_Error_Detection.csv :widths: 10,10,30,20 :header-rows: 1 .. _PPPoE_step15: .. tab-set:: .. tab-item:: PPPoE Feature : Support for IPv4 & IPv6 **Support for IPv4 & IPv6 - Testcases** .. csv-table:: :file: ./PPPoE/PPPoE_feature7_Support_for_IPv4_IPv6.csv :widths: 10,10,30,20 :header-rows: 1 .. _PPPoE_step16: .. tab-set:: .. tab-item:: PPPoE Feature : Accounting **Accounting - Testcases** .. csv-table:: :file: ./PPPoE/PPPoE_feature8_Accounting.csv :widths: 10,10,30,20 :header-rows: 1 .. _PPPoE_step17: .. tab-set:: .. tab-item:: PPPoE Feature : Compatiblity **Compatiblity - Testcases** .. csv-table:: :file: ./PPPoE/PPPoE_feature9_Compatiblity.csv :widths: 10,10,30,20 :header-rows: 1 .. _PPPoE_step21: .. tab-set:: .. tab-item:: PPPoE Feature : Scablity **Scablity - Testcases** .. csv-table:: :file: ./PPPoE/PPPoE_feature10_Scablity.csv :widths: 10,10,30,20 :header-rows: 1 .. _PPPoE_step18: .. tab-set:: .. tab-item:: Reference links * Reference links