Passa al contenuto principale

3. Protocol Overview (Panoramica del protocollo)

L2TP utilizza due tipi di messaggi: messaggi di controllo (control messages) e messaggi dati (data messages). I messaggi di controllo vengono utilizzati nell'instaurazione, manutenzione e chiusura di tunnel e chiamate. I messaggi dati vengono utilizzati per incapsulare i frame PPP trasportati sul tunnel. I messaggi di controllo utilizzano un canale di controllo affidabile (reliable Control Channel) all'interno di L2TP per garantire la consegna (vedere la sezione 5.1 per i dettagli). I messaggi dati non vengono ritrasmessi quando si verifica una perdita di pacchetti.

+-------------------+
| PPP Frames |
+-------------------+ +-----------------------+
| L2TP Data Messages| | L2TP Control Messages |
+-------------------+ +-----------------------+
| L2TP Data Channel | | L2TP Control Channel |
| (unreliable) | | (reliable) |
+------------------------------------------------+
| Packet Transport (UDP, FR, ATM, etc.) |
+------------------------------------------------+

Figura 3.0 Struttura del protocollo L2TP

La figura 3.0 raffigura la relazione tra i frame PPP e i messaggi di controllo sui canali di controllo e dati L2TP. I frame PPP vengono trasmessi su un canale dati non affidabile incapsulati prima da un'intestazione L2TP e poi da un trasporto di pacchetti come UDP, Frame Relay, ATM, ecc. I messaggi di controllo vengono inviati su un canale di controllo L2TP affidabile che trasmette pacchetti in-band sullo stesso trasporto di pacchetti.

I numeri di sequenza devono (MUST) essere presenti in tutti i messaggi di controllo e vengono utilizzati per fornire una consegna affidabile sul canale di controllo. I messaggi dati possono (MAY) utilizzare numeri di sequenza per riordinare i pacchetti e rilevare pacchetti persi.

Tutti i valori vengono inseriti nei rispettivi campi e inviati in ordine di rete (ottetti di ordine superiore per primi).

3.1 L2TP Header Format (Formato dell'intestazione L2TP)

I pacchetti L2TP per il canale di controllo e il canale dati condividono un formato di intestazione comune. In ogni caso in cui un campo è opzionale, il suo spazio non esiste nel messaggio se il campo è contrassegnato come non presente. Si noti che, sebbene opzionali nei messaggi dati, i campi Length, Ns e Nr contrassegnati come opzionali di seguito devono (MUST) essere presenti in tutti i messaggi di controllo.

Questa intestazione è formattata come segue:

 0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|T|L|x|x|S|x|O|P|x|x|x|x| Ver | Length (opt) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Tunnel ID | Session ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Ns (opt) | Nr (opt) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Offset Size (opt) | Offset pad... (opt)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figura 3.1 Intestazione del messaggio L2TP

Il bit Type (T) indica il tipo di messaggio. È impostato a 0 per un messaggio dati e a 1 per un messaggio di controllo.

Se il bit Length (L) è 1, il campo Length è presente. Questo bit deve (MUST) essere impostato a 1 per i messaggi di controllo.

I bit x sono riservati per estensioni future. Tutti i bit riservati devono (MUST) essere impostati a 0 nei messaggi in uscita e ignorati nei messaggi in entrata.

Se il bit Sequence (S) è impostato a 1, i campi Ns e Nr sono presenti. Il bit S deve (MUST) essere impostato a 1 per i messaggi di controllo.

Se il bit Offset (O) è 1, il campo Offset Size è presente. Il bit O deve (MUST) essere impostato a 0 (zero) per i messaggi di controllo.

Se il bit Priority (P) è 1, questo messaggio dati dovrebbe (SHOULD) ricevere un trattamento preferenziale nell'accodamento e nella trasmissione locali. Le richieste echo LCP utilizzate come keepalive per il collegamento, ad esempio, dovrebbero (SHOULD) generalmente essere inviate con questo bit impostato a 1. Senza di esso, un intervallo temporaneo di congestione locale potrebbe causare interferenze con i messaggi keepalive e una perdita inutile del collegamento. Questa funzionalità è solo per l'uso con messaggi dati. Il bit P deve (MUST) essere impostato a 0 per tutti i messaggi di controllo.

Ver deve (MUST) essere 2, indicando la versione dell'intestazione del messaggio dati L2TP descritta in questo documento. Il valore 1 è riservato per consentire il rilevamento di pacchetti L2F [RFC2341] qualora arrivino mescolati con pacchetti L2TP. I pacchetti ricevuti con un campo Ver sconosciuto devono (MUST) essere scartati.

Il campo Length indica la lunghezza totale del messaggio in ottetti.

Tunnel ID indica l'identificatore per la connessione di controllo. I tunnel L2TP sono nominati da identificatori che hanno significato solo locale. Cioè, lo stesso tunnel riceverà Tunnel ID diversi a ciascuna estremità del tunnel. Il Tunnel ID in ciascun messaggio è quello del destinatario previsto, non del mittente. I Tunnel ID vengono selezionati e scambiati come AVP Assigned Tunnel ID durante la creazione di un tunnel.

Session ID indica l'identificatore per una sessione all'interno di un tunnel. Le sessioni L2TP sono nominate da identificatori che hanno significato solo locale. Cioè, la stessa sessione riceverà Session ID diversi a ciascuna estremità della sessione. Il Session ID in ciascun messaggio è quello del destinatario previsto, non del mittente. I Session ID vengono selezionati e scambiati come AVP Assigned Session ID durante la creazione di una sessione.

Ns indica il numero di sequenza per questo messaggio dati o di controllo, iniziando da zero e incrementando di uno (modulo 2**16) per ogni messaggio inviato. Vedere le sezioni 5.8 e 5.4 per maggiori informazioni sull'utilizzo di questo campo.

Nr indica il numero di sequenza previsto nel prossimo messaggio di controllo da ricevere. Pertanto, Nr è impostato sul Ns dell'ultimo messaggio ricevuto in ordine più uno (modulo 2**16). Nei messaggi dati, Nr è riservato e, se presente (come indicato dal bit S), deve (MUST) essere ignorato alla ricezione. Vedere la sezione 5.8 per maggiori informazioni sull'utilizzo di questo campo nei messaggi di controllo.

Il campo Offset Size, se presente, specifica il numero di ottetti dopo l'intestazione L2TP in cui si prevede che inizino i dati del payload. I dati effettivi all'interno del padding di offset non sono definiti. Se il campo offset è presente, l'intestazione L2TP termina dopo l'ultimo ottetto del padding di offset.

3.2 Control Message Types (Tipi di messaggi di controllo)

L'AVP Message Type (vedere la sezione 4.4.1) definisce il tipo specifico di messaggio di controllo inviato. Ricordare dalla sezione 3.1 che questo riguarda solo i messaggi di controllo, cioè i messaggi con il bit T impostato a 1.

Questo documento definisce i seguenti tipi di messaggi di controllo (vedere le sezioni da 6.1 a 6.14 per i dettagli sulla costruzione e l'uso di ciascun messaggio):

Gestione della connessione di controllo (Control Connection Management)

  • 0 (reserved) riservato
  • 1 (SCCRQ) Start-Control-Connection-Request
  • 2 (SCCRP) Start-Control-Connection-Reply
  • 3 (SCCCN) Start-Control-Connection-Connected
  • 4 (StopCCN) Stop-Control-Connection-Notification
  • 5 (reserved) riservato
  • 6 (HELLO) Hello

Gestione delle chiamate (Call Management)

  • 7 (OCRQ) Outgoing-Call-Request
  • 8 (OCRP) Outgoing-Call-Reply
  • 9 (OCCN) Outgoing-Call-Connected
  • 10 (ICRQ) Incoming-Call-Request
  • 11 (ICRP) Incoming-Call-Reply
  • 12 (ICCN) Incoming-Call-Connected
  • 13 (reserved) riservato
  • 14 (CDN) Call-Disconnect-Notify

Segnalazione errori (Error Reporting)

  • 15 (WEN) WAN-Error-Notify

Controllo di sessione PPP (PPP Session Control)

  • 16 (SLI) Set-Link-Info