PPPoE (Point-to-Point Protocol over Ethernet o protocolo punto a punto sobre Ethernet) es un protocolo de red para la encapsulación PPP sobre una capa de Ethernet. Es utilizada mayoritariamente para proveer conexión de banda ancha mediante servicios de cablemódem, DSL, y FTTH. Este ofrece las ventajas del protocoloPPP como son la autenticación, cifrado, mantenimiento y compresión.
En esencia, es un protocolo, que permite implementar una capa IP sobre una conexión entre dos puertos Ethernet, pero con las características de software del protocolo PPP, por lo que es utilizado para virtualmente "marcar" a otra máquina dentro de la red Ethernet, logrando una conexión "serial" con ella, con la que se pueden transferir paquetes IP, basado en las características del protocoloPPP.
Esto permite utilizar software tradicional basado en PPP para manejar una conexión que no puede usarse en líneas seriales sino con paquetes orientados a redes locales como Ethernet para proveer una conexión clásica con autenticación para cuentas de acceso a Internet. Además, las direcciones IP en el otro lado de la conexión sólo se asignan cuando la conexión PPPoE se abre, por lo que admite la reutilización de direcciones IP (direccionamiento dinámico).
El objetivo y funcionamiento de PPPoE es análogo al protocolo PPP sobre RTC con el que a finales de los 90 y bajo un stack tcp, se establecía un enlace ip punto a punto a través de la red telefónica conmutada (RTC), permitiendo utilizar por encima una serie de protocolos de nivel de aplicación tipo http, ftp, telnet, etc.
El protocolo PPPoE se compone de dos fases diferentes: fase de descubrimiento y fase de sesión PPP.
Fase de descubrimiento (PPPoED)
Cuando un equipo desea establecer una sesión PPPoE, debe primero efectuar una fase de descubrimiento (PPPoED) para identificar la dirección MAC del otro extremo y establecer un identificador de sesión PPPoE. En la fase de descubrimiento, un equipo cliente descubre a un servidor PPPoE, denominado habitualmente Concentrador de Acceso. Según la topología de la red, puede haber más de un Concentrador de Acceso. La fase de descubrimiento permite al cliente identificar a todos los Concentradores de Acceso y seleccionar uno de ellos.
La fase de descubrimiento se divide en cuatro partes:
PADI (PPPoE Active Discovery Initiation) El cliente envía un paquete de inicio a toda la red (paquete de broadcast), indicando los servicios que espera recibir
PADO (PPPoE Active Discovery Offer) El concentrador de acceso, si puede satisfacer los servicios requeridos, envía al cliente un paquete de oferta, indicando los servicios que ofrece
PADR (PPPoE Active Discovery Request) El cliente elige, de entre todos los Concentradores de Acceso que han enviado ofertas, aquel que mejor se ajusta a sus necesidades y envía a dicho concentrador un paquete de solicitud de establecimiento de sesión
PADS (PPPoE Active Discovery Session-confirmation) El concentrador de acceso recibe la solicitud de establecimiento de sesión y envía un paquete de confirmación de sesión , indicando el identificador de la sesión establecida. A partir de este momento comienza la fase de sesión.
Fase de sesión
Una vez que la fase de descubrimiento se ha completado correctamente, tanto el cliente como el Concentrador de Acceso tienen la información necesaria para construir su conexión punto a punto sobre Ethernet. En la fase de sesión las tramas intercambiadas entre los dos extremos corresponden a las de una sesión PPP, con la particularidad de que dichas tramas van encapsuladas sobre tramas Ethernet.
Estructura de la trama Ethernet
La trama PPPoE es básicamente una trama Ethernet, con algún encapsulado adicional de la parte de datos.[1]
Ethernet
DESTINATION ADDRESS
Dirección MAC destino del paquete. En la fase de descubrimiento, puede contener la dirección de broadcast 0xFFFFFFFFFFFF.
SOURCE ADDRESS
Dirección MAC origen del paquete.
ETHER_TYPE
Indica que la trama debe interpretarse como PPPoE. Tiene un valor igual a 0x8863 en la fase de descubrimiento y 0x8864 en la fase de sesión.
DATOS
Datos de la trama Ethernet. La estructura de estos datos para PPPoE se explica en el apartado siguiente.
CHECKSUM
Checksum de los datos de la trama Ethernet.
Formato de los datos: trama PPPoE
Los datos de la trama Ethernet para PPPoE tienen el siguiente formato:
PPPoE
VER
Campo de cuatro bits que indica la versión de PPPoE. Debe ser 0x1.
TYPE
Campo de cuatro bits que indica el tipo de PPPoE. Debe ser 0x1.
CODE
Campo de ocho bits que indica el tipo de paquete PPPoE según la siguiente tabla:
Code
Tipo de paquete PPPoE
0x09
PADI: PPPoE Active Discovery Initiation
0x07
PADO: PPPoE Active Discovery Offer
0x19
PADR: PPPoE Active Discovery Request
0x65
PADS: PPPoE Active Discovery Session-Confirmation
0xA7
PADT: PPPoE Active Discovery Terminate
0x0
Paquete en fase de sesión
SESSION_ID
Campo de dos bytes que identifica a la sesión PPPoE establecida. En la fase de descubrimiento, toma un valor igual a 0 hasta que el Concentrador de Acceso asigna un identificador a la sesión en marcha. Junto con la dirección origen y destino identifica unívocamente una sesión PPPoE.
LENGTH
Campo de dos bytes que indica el tamaño, en bytes, de la parte de datos PPPoE (payload). No incluye la cabecera Ethernet o PPPoE.
PAYLOAD
Datos del PPPoE. En la fase de sesión, son los datos del protocolo PPP propiamente dicho. En la fase de descubrimiento, el payload contiene cero o más etiquetas. Cada etiqueta está formada por dos bytes que indican el tipo de etiqueta, dos bytes que indican la longitud en bytes de la etiqueta, y el valor de la etiqueta. Las distintas etiquetas se usan para negociar las condiciones de establecimiento de la sesión PPPoE.
Notas
↑En la actualidad, las tramas PPPoE se envían por ATM. En el equipo se puede configurar si este 'bridge' se desea realizar incluyendo el campo de 'checksum' o sin incluirlo.