Passa al contenuto principale

1. Introduzione (Introduction)

PPTP consente di separare le funzioni esistenti del server di accesso alla rete (Network Access Server, NAS) utilizzando un'architettura client-server. Tradizionalmente, le seguenti funzioni sono implementate da un NAS:

  1. Interfaccia fisica nativa con PSTN o ISDN e controllo di modem esterni o adattatori terminali

    Un NAS può interfacciarsi direttamente con un circuito analogico o digitale di telecomunicazione o connettersi tramite un modem esterno o un adattatore terminale. Il controllo di una connessione a commutazione di circuito viene realizzato tramite il controllo del modem o i protocolli di controllo delle chiamate DSS1 ISDN.

    Il NAS, in combinazione con il modem o gli adattatori terminali, può eseguire l'adattamento della velocità, la conversione da analogico a digitale, la conversione da sincrono ad asincrono o numerose altre modifiche ai flussi di dati.

  2. Terminazione logica di una sessione Link Control Protocol (LCP) del Point-to-Point Protocol (PPP)

  3. Partecipazione ai protocolli di autenticazione PPP [3,9,10]

  4. Aggregazione dei canali e gestione dei bundle per il PPP Multilink Protocol

  5. Terminazione logica di vari protocolli di controllo di rete (Network Control Protocol, NCP) PPP

  6. Routing multiprotocollo e bridging tra le interfacce NAS

PPTP divide queste funzioni tra PAC e PNS. Il PAC è responsabile delle funzioni 1, 2 e possibilmente 3. Il PNS può essere responsabile della funzione 3 ed è responsabile delle funzioni 4, 5 e 6. Il protocollo utilizzato per trasportare le unità dati del protocollo (Protocol Data Units, PDU) PPP tra PAC e PNS, nonché il controllo e la gestione delle chiamate, è gestito da PPTP.

Il disaccoppiamento delle funzioni NAS offre questi vantaggi:

Gestione flessibile degli indirizzi IP. Gli utenti dial-in possono mantenere un singolo indirizzo IP quando si connettono a diversi PAC, purché siano serviti da un PNS comune. Se una rete aziendale utilizza indirizzi non registrati, un PNS associato all'azienda assegna indirizzi significativi per la rete privata.

Supporto di protocolli non-IP per reti dial-up dietro reti IP. Questo consente, ad esempio, di creare tunnel per AppleTalk e IPX attraverso un provider solo IP. Il PAC non deve essere in grado di elaborare questi protocolli.

Soluzione al problema dello "splitting del gruppo di caccia multilink". Il PPP multilink (Multilink PPP), tipicamente utilizzato per aggregare i canali B ISDN, richiede che tutti i canali che compongono un bundle multilink siano raggruppati su un singolo NAS. Poiché un bundle PPP multilink può essere gestito da un singolo PNS, i canali che compongono il bundle possono essere distribuiti su più PAC.

1.1. Obiettivi e ipotesi del protocollo (Protocol Goals and Assumptions)

Il protocollo PPTP è implementato solo dal PAC e dal PNS. Nessun altro sistema deve essere a conoscenza di PPTP. Le reti dial-up possono essere connesse a un PAC senza essere a conoscenza di PPTP. Il software client PPP standard dovrebbe (SHOULD) continuare a funzionare su collegamenti PPP veicolati tramite tunnel.

PPTP può anche essere utilizzato per veicolare una sessione PPP attraverso una rete IP. In questa configurazione, il tunnel PPTP e la sessione PPP vengono eseguiti tra le stesse due macchine, con il chiamante che agisce come PNS.

Si prevede che ci sarà una relazione molti-a-molti tra PAC e PNS. Un PAC può fornire servizi a molti PNS. Ad esempio, un provider di servizi Internet può scegliere di supportare PPTP per un numero di client di rete privata e creare VPN per loro. Ogni rete privata può gestire uno o più PNS. Un singolo PNS può associarsi a molti PAC per concentrare il traffico proveniente da un gran numero di siti geograficamente dispersi.

PPTP utilizza una versione estesa di GRE per trasportare i pacchetti PPP degli utenti. Questi miglioramenti consentono di fornire un controllo di flusso e congestione a basso livello sui tunnel utilizzati per trasportare i dati utente tra PAC e PNS. Questo meccanismo consente un uso efficiente della larghezza di banda disponibile per i tunnel ed evita ritrasmissioni non necessarie e overflow del buffer. PPTP non detta gli algoritmi particolari da utilizzare per questo controllo a basso livello, ma definisce i parametri che devono essere comunicati per consentire il funzionamento di tali algoritmi. Gli algoritmi suggeriti sono inclusi nella sezione 4.


1.2. Terminologia (Terminology)

Canale analogico (Analog Channel)
Un percorso di comunicazione a commutazione di circuito destinato a trasportare audio a 3,1 kHz in ciascuna direzione.

Canale digitale (Digital Channel)
Un percorso di comunicazione a commutazione di circuito destinato a trasportare informazioni digitali in ciascuna direzione.

Chiamata (Call)
Una connessione o tentativo di connessione tra due endpoint terminali su una PSTN o ISDN, ad esempio una chiamata telefonica tra due modem.

Connessione di controllo (Control Connection)
Viene creata una connessione di controllo per ogni coppia PAC-PNS e opera su TCP. La connessione di controllo gestisce gli aspetti del tunnel e delle sessioni assegnate al tunnel.

Utente dial-up (Dial User)
Un sistema terminale o router collegato a una PSTN o ISDN su richiesta, che è l'iniziatore o il destinatario di una chiamata.

Server di accesso alla rete (Network Access Server, NAS)
Un dispositivo che fornisce accesso di rete temporaneo e su richiesta agli utenti. Questo accesso è punto a punto utilizzando linee PSTN o ISDN.

Concentratore di accesso PPTP (PPTP Access Concentrator, PAC)
Un dispositivo collegato a una o più linee PSTN o ISDN capace di operazioni PPP e di gestione del protocollo PPTP. Il PAC deve implementare solo TCP/IP per passare il traffico a uno o più PNS. Può anche creare tunnel per protocolli non-IP.

Server di rete PPTP (PPTP Network Server, PNS)
Un PNS è progettato per funzionare su piattaforme di calcolo/server generiche. Il PNS gestisce il lato server del protocollo PPTP. Poiché PPTP si basa completamente su TCP/IP ed è indipendente dall'hardware di interfaccia, il PNS può utilizzare qualsiasi combinazione di hardware di interfaccia IP, inclusi dispositivi LAN e WAN.

Sessione (Session)
PPTP è orientato alla connessione. Il PNS e il PAC mantengono lo stato per ogni utente connesso a un PAC. Una sessione viene creata quando viene tentata una connessione PPP end-to-end tra un utente dial-up e il PNS. I datagrammi relativi a una sessione vengono inviati attraverso il tunnel tra il PAC e il PNS.

Tunnel
Un tunnel è definito da una coppia PNS-PAC. Il protocollo tunnel è definito da una versione modificata di GRE. Il tunnel trasporta i datagrammi PPP tra il PAC e il PNS. Più sessioni sono multiplexate su un singolo tunnel. Una connessione di controllo operante su TCP controlla l'instaurazione, il rilascio e la manutenzione delle sessioni e del tunnel stesso.

1.3. Panoramica del protocollo (Protocol Overview)

PPTP ha due componenti paralleli: 1) una connessione di controllo tra ogni coppia PAC-PNS che opera su TCP e 2) un tunnel IP che opera tra la stessa coppia PAC-PNS, utilizzato per trasportare pacchetti PPP incapsulati in GRE per le sessioni utente tra la coppia.

1.3.1. Panoramica della connessione di controllo (Control Connection Overview)

Prima che possa avvenire il tunneling PPP tra un PAC e un PNS, deve essere stabilita una connessione di controllo tra di loro. La connessione di controllo è una sessione TCP standard attraverso la quale vengono trasmesse le informazioni di controllo e gestione delle chiamate PPTP. La sessione di controllo è logicamente associata, ma separata, dalle sessioni che vengono veicolate attraverso un tunnel PPTP. Per ogni coppia PAC-PNS esistono sia un tunnel che una connessione di controllo. La connessione di controllo è responsabile dell'instaurazione, gestione e rilascio delle sessioni trasportate attraverso il tunnel. È il mezzo attraverso cui un PNS viene notificato di una chiamata in arrivo presso un PAC associato, nonché il mezzo attraverso cui un PAC riceve istruzioni per effettuare una chiamata in uscita.

Una connessione di controllo può essere stabilita sia dal PNS che dal PAC. Dopo l'instaurazione della connessione TCP richiesta, il PNS e il PAC stabiliscono la connessione di controllo utilizzando i messaggi Start-Control-Connection-Request e -Reply. Questi messaggi vengono utilizzati anche per scambiare informazioni sulle capacità operative di base del PAC e del PNS. Una volta stabilita la connessione di controllo, il PAC o il PNS può avviare sessioni richiedendo chiamate in uscita o rispondendo a richieste in arrivo. La connessione di controllo può comunicare cambiamenti nelle caratteristiche operative di una sessione utente individuale con un messaggio Set-Link-Info. Le sessioni individuali possono essere rilasciate sia dal PAC che dal PNS, anche tramite messaggi di connessione di controllo.

La connessione di controllo stessa viene mantenuta tramite messaggi echo keep-alive. Ciò garantisce che un guasto di connettività tra il PNS e il PAC possa essere rilevato in modo tempestivo. Altri guasti possono essere segnalati tramite il messaggio Wan-Error-Notify, anch'esso sulla connessione di controllo.

È previsto che la connessione di controllo trasporterà anche messaggi relativi alla gestione in futuro, come un messaggio che consente al PNS di richiedere lo stato di un determinato PAC; questi tipi di messaggi non sono ancora stati definiti.

1.3.2. Panoramica del protocollo tunnel (Tunnel Protocol Overview)

PPTP richiede l'instaurazione di un tunnel per ogni coppia PNS-PAC comunicante. Questo tunnel viene utilizzato per trasportare tutti i pacchetti PPP di sessione utente per le sessioni che coinvolgono una determinata coppia PNS-PAC. Una chiave presente nell'intestazione GRE indica a quale sessione appartiene un particolare pacchetto PPP.

In questo modo, i pacchetti PPP vengono multiplexati e demultiplexati su un singolo tunnel tra una determinata coppia PNS-PAC. Il valore da utilizzare nel campo chiave viene stabilito dalla procedura di instaurazione della chiamata che avviene sulla connessione di controllo.

L'intestazione GRE contiene anche informazioni di acknowledgment e sequenziamento utilizzate per eseguire un certo livello di controllo della congestione e rilevamento degli errori sul tunnel. Ancora una volta, la connessione di controllo viene utilizzata per determinare i parametri di velocità e buffering che vengono utilizzati per regolare il flusso di pacchetti PPP per una particolare sessione sul tunnel. PPTP non specifica gli algoritmi particolari da utilizzare per il controllo della congestione e il controllo del flusso. Gli algoritmi suggeriti per la determinazione dei timeout adattativi per recuperare da dati persi o acknowledgment sul tunnel sono inclusi nella sezione 4.4 di questo documento.

1.4. Formato dei messaggi ed estensibilità del protocollo (Message Format and Protocol Extensibility)

PPTP definisce un insieme di messaggi inviati come dati TCP sulla connessione di controllo tra un PNS e un dato PAC. La sessione TCP per la connessione di controllo viene stabilita avviando una connessione TCP alla porta 1723. La porta di origine è assegnata a qualsiasi numero di porta non utilizzato.

Ogni messaggio di connessione di controllo PPTP inizia con una porzione di intestazione fissa di 8 ottetti. Questa intestazione fissa contiene quanto segue: la lunghezza totale del messaggio, l'indicatore del tipo di messaggio PPTP e un "Magic Cookie".

Due tipi di messaggi di connessione di controllo sono indicati dal campo Tipo di messaggio PPTP:

  • 1 - Messaggio di controllo (Control Message)
  • 2 - Messaggio di gestione (Management Message)

I messaggi di gestione non sono attualmente definiti.

Il Magic Cookie viene sempre inviato come la costante 0x1A2B3C4D. Il suo scopo fondamentale è consentire al ricevitore di assicurarsi di essere correttamente sincronizzato con il flusso di dati TCP. Non dovrebbe (SHOULD NOT) essere utilizzato come mezzo per risincronizzare il flusso di dati TCP nel caso in cui un trasmettitore emetta un messaggio formattato in modo errato. La perdita di sincronizzazione deve (MUST) comportare la chiusura immediata della sessione TCP della connessione di controllo.

Per chiarezza, tutti i modelli di messaggi di connessione di controllo nella sezione successiva includono l'intestazione completa del messaggio di connessione di controllo PPTP. I numeri preceduti da 0x sono valori esadecimali.

I messaggi di controllo attualmente definiti, raggruppati per funzione, sono:

Gestione della connessione di controllo (Control Connection Management)

  • Start-Control-Connection-Request (1)
  • Start-Control-Connection-Reply (2)
  • Stop-Control-Connection-Request (3)
  • Stop-Control-Connection-Reply (4)
  • Echo-Request (5)
  • Echo-Reply (6)

Gestione delle chiamate (Call Management)

  • Outgoing-Call-Request (7)
  • Outgoing-Call-Reply (8)
  • Incoming-Call-Request (9)
  • Incoming-Call-Reply (10)
  • Incoming-Call-Connected (11)
  • Call-Clear-Request (12)
  • Call-Disconnect-Notify (13)

Segnalazione errori (Error Reporting)

  • WAN-Error-Notify (14)

Controllo di sessione PPP (PPP Session Control)

  • Set-Link-Info (15)

I messaggi Start-Control-Connection-Request e -Reply determinano quale versione del protocollo di connessione di controllo verrà utilizzata. Il campo del numero di versione trasportato in questi messaggi è costituito da un numero di versione nell'ottetto superiore e un numero di revisione nell'ottetto inferiore. La gestione delle versioni è descritta nella sezione 2. Il valore corrente del campo del numero di versione è 0x0100 per la versione 1, revisione 0.

L'uso dell'intestazione di tipo GRE per l'incapsulamento dei pacchetti utente PPP è specificato nella sezione 4.1.

L'MTU per i pacchetti dati utente incapsulati in GRE è di 1532 ottetti, senza includere le intestazioni IP e GRE.