# PPPoE

PPPoE e TCP/IP :
| Applicazione | FTP | SMTP | HTTP | … | DNS | … |
| Trasporto | TCP | TCP | TCP | TCP | UDP | UDP |
| Rete | IP | IP | IP | IPv6 | IPv6 | IPv6 |
| Link | PPP | PPP | PPP | PPP | PPP | PPP |
| PPPoE ||||||
| Ethernet ||||||
In telecomunicazioni e reti informatiche PPPoE ("Point-to-Point Protocol over Ethernet" ovvero un "protocollo punto a punto operante su Ethernet") è un acronimo utilizzato per indicare un protocollo di rete che rappresenta una nuova alternativa per le connessioni Internet ad alta velocità di trasmissione usato soprattutto per servizi DSL. Sebbene non sia uno standard Internet, il PPPoE è descritto nell'informativo RFC 2516.

## Caratteristiche e descrizione

È un protocollo che permette di incapsulare frame PPP in frame Ethernet, fornendo le caratteristiche standard tipiche di un protocollo PPP come le funzionalità di autenticazione, cifratura e compressione. Adotta un MTU minore di quello standard Ethernet e questo comporta qualche problema in presenza di firewall mal configurati.
Il PPPoE è un protocollo di tunneling che permette di incapsulare il livello IP su una connessione tra due porte Ethernet pur mantenendo le caratteristiche di un collegamento PPP, per questo motivo è utilizzato per "comporre il numero" virtualmente di un altro computer dotato di connessione Ethernet e stabilire una connessione punto-punto con esso (da cui il nome del protocollo), su questa connessione vengono poi trasportati i pacchetti IP in base alle caratteristiche del PPP.
È possibile utilizzare i normali programmi basati sul PPP per gestire una connessione che utilizza una rete orientata al pacchetto come Ethernet invece che una linea seriale e fornire una classica connessione con login e password per accedere ad Internet. L'indirizzo IP all'altro capo della linea è assegnato solamente quando la connessione è aperta quindi questo protocollo permette di usare gli indirizzi IP in modo dinamico.
Il PPPoE è stato sviluppato da UUNET, Redback Networks e RouterWare, le specifiche son contenute nell'RFC 2516.
Alcuni fornitori (come Cisco) si riferiscono a questo protocollo col nome PPPoEoE (PPPoE over Ethernet) per distinguerlo dal PPPoEoA (PPPoE over ATM).

## Struttura di un pacchetto PPPoE

Il pacchetto PPPoE è incapsulato nell'area dati di un frame Ethernet:
EtherType: In presenza di un pacchetto PPPoE questo campo indica se esso è di tipo PPoE-Discovery o PPPoE-Session. Può assumere i seguenti valori:
0x8863 – PPPoE Discovery Questa tipologia di pacchetto PPPoE serve per effettuare la ricerca di un PoP (point of presence) utilizzando il broadcast ethernet, la creazione di una connessione con esso e l'interruzione della connessione.
0x8864 - PPPoE Session Questa tipologia di pacchetto PPPoE serve invece per configurare e controllare la connessione e per assegnare gli indirizzi IP oltre al normale traffico internet. Consultare la voce Point-to-Point Protocol per maggiori dettagli.
Version: Assume sempre il valore 1.
Type: Assume sempre il valore 1.
Code: È utilizzato nei pacchetti PPPoE-Discovery. Indica il tipo di un frame di discovery, è posto al valore 0x00 per pacchetti di tipo PPPoE-Session.
I valori possibili, espressi con notazione esadecimale, sono: 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: Il Session-ID è fornito dal PoP mediante un PADS-frame ed è valido per una connessione. Prima dell'arrivo del PADS-frame assume valore 0x0000.
Protocollo PPP e payload: Il protocollo PPP ed i dati hanno lo stesso formato del PPP.

## Instaurazione della connessione
### PPPoE Discovery (PPPoED)
#### PADI

PADI significa PPPoE Active Discovery Initiation (PPPoE inizio della ricerca attiva). Se un utente vuole connettersi ad internet mediante il DSL, il suo computer deve verificare prima di tutto se esiste un PoP (DSL-AC). La comunicazione è possibile solo attraverso gli indirizzi MAC. Poiché il computer non conosce l'indirizzo MAC del PoP, invia un pacchetto PADI via il broadcast ethernet (MAC: ff:ff:ff:ff:ff:ff). Questo pacchetto PADI contiene l'indirizzo MAC del computer dal quale è stato inviato.
Esempio di un pacchetto PADI:
Src. (=sorgente) contiene l'indirizzo MAC del computer che ha inviato il pacchetto PADI. DST. (=destinazione) è l'indirizzo ethernet di broadcast. Un pacchetto PADI può essere ricevuto da più di un PoP.

### PADO

PADO significa PPPoE Active Discovery Offer (PPPoE offerta di scoperta attiva). Una volta che il computer dell'utente ha inviato il pacchetto PADI, il PoP risponde con un pacchetto PADO utilizzando l'indirizzo MAC contenuto nel pacchetto PADI ricevuto. Il pacchetto PADO contiene l'indirizzo MAC del PoP, il suo nome (per esempio LEIX11-erx per il DSL-AC della T-Com di Lipsia) ed il nome del servizio. Se risponde più di un PoP con un pacchetto PADI, il computer dell'utente seleziona il PoP mediante il nome del servizio indicato.
Questo è un esempio di un pacchetto PADO:
AC-Name -> String data contiene il nome dell'AC, in questo caso "lpzbr001" (il DSL-AC Arcor a Lipsia) Src. contiene l'indirizzo MAC del PoP. L'indirizzo MAC del PoP permette di capire quale sia il costruttore del PoP stesso (in questo caso Nortel Networks).

#### PADR

PADR significa PPPoE Active Discovery Request (PPPoE richiesta di scoperta attiva.) Come detto precedentemente, il computer deve selezionare un PoP – lo fa mediante un pacchetto PADR che viene inviato all'indirizzo MAC del PoP selezionato.

#### PADS

PADS significa PPPoE Active Discovery Session-confirmation (PPPoE conferma della sessione di scoperta attiva). Un pacchetto PADR riceve conferma dal PoP mediante un pacchetto PADS mediante il quale viene inviato un Session-ID. Con questo pacchetto la sessione è completamente attivata.

#### PADT

PADT significa PPPoE Active Discovery Termination (PPPoE terminazione della scoperta attiva). Mediante questo pacchetto viene terminata una connessione con il PoP. Può essere inviato sia dal computer dell'utente che dal PoP.

## Connessione diretta

In un ambito di LAN connessa a internet attraverso un apparato modem router, un dispositivo potrebbe avere la necessità di affacciarsi direttamente a internet tramite un IP dinamico pubblico, diverso quindi da quello principale del modem. Questo può essere raggiunto impiegando una connessione PPPoE eseguita dal sistema operativo del dispositivo in questione: in questo modo l'IP pubblico sarà attestato in linea retta sull'interfaccia del dispositivo, aggirando quindi il servizio NAT effettuato dall'apparato (router, in particolare). Medesimo procedimento è utilizzato quando un dispositivo è connesso direttamente all'ISP senza utilizzare un router con funzionalità di gateway, ma bensì con solo modem; un altro impiego di questo procedimento è quando il dispositivo si connette (ad esempio via wireless) al router ma c'è un errore di connessione a internet: il collegamento PPPoE diretto all'ISP dovrebbe aggirare l'ostacolo.
In pratica, si ottiene il medesimo risultato di quando nel passato si agiva sulla connessione temporanea ai vecchi modem analogici oppure quando si utilizza una VPN.