# Circuito virtuale

Nelle reti di computer, e più in generale nelle telecomunicazioni, un circuito virtuale (o virtual circuit, abbreviato VC) rappresenta una connessione virtuale o un canale virtuale. Un VC è normalmente un servizio orientato alla connessione cioè con una modalità di trasferimento a circuito fisso dedicato tra due nodi, per il quale però il trasporto informativo consiste non in flusso continuo di dati oppure suddivisi in slot e frame (TDM), ma nel trasferimento di una sequenza di pacchetti di dati (in formato tipicamente digitale) a richiesta o domanda dell'utente.
La commutazione di circuito provvede a mantenere una latenza costante e bit rate, mentre possono variare determinati servizi, a causa dei seguenti fattori:
* variazione della lunghezza della coda in un nodo della rete
* variazione della bit rate generata dall'applicazione
* variazione del carico da altri utenti che condividono le stesse risorse nella rete
Molti protocolli, legati ai circuiti virtuali, provvedono all'instaurazione di un servizio di comunicazione affidabile attraverso la ritrasmissione di dati in seguito all'individuazione di un errore o all'ARQ.

## Descrizione

Questa connessione logica è costruita in maniera tale che più connessioni logiche o canali virtuali possano condividere la stessa connessione fisica attraverso una forma di multiplazione asincrona. La connessione fisica può essere ad esempio una connessione via cavo, ma anche un ponte via onde radio. All'interno della connessione fisica, la capacità trasmissiva totale (banda passante) viene quindi divisa in canali virtuali separati mediante il protocollo che gestisce il trasporto dei dati in pacchetti. Il termine virtuale indica che il canale, oltre che logico, non è stabilmente allocato ad un utente o un servizio, ma è offerto su domanda o richiesta di servizio al bisogno com'è tipico di una rete a pacchetto.
Perché il trasporto avvenga in modo corretto, i pacchetti vengono etichettati, dal sistema che li invia, con un identificativo (label) (detto VCI) associato al canale logico di appartenenza. Quindi vengono trasmessi tutti tramite lo stesso canale fisico in ordine. Alla ricezione i pacchetti vengono divisi dall'apparato di ricezione, che riconosce le etichette associate ai differenti canali, e smista opportunamente i dati. Alla fine i dati vengono recapitati ai debiti destinatari.
I protocolli basati su canali virtuali abilitano la comunicazione molti a molti (multi-multicast) a lunga distanza su un gruppo di cavi inferiore (anche uno solo) al numero totale di partner delle comunicazioni totali. Per questo la tecnologia è considerata un'evoluzione astratta del funzionamento del permutatore in uso nelle centrali telefoniche. L'apparato hardware che esegue l'effettiva permutazione si chiama switch.

## Vantaggi

Il circuito virtuale identifica quindi un modo di trasferimento alternativo alla classica commutazione di circuito e alla commutazione di pacchetto realizzando un compromesso ottimale tra i due suddetti modi: viene infatti preservato il link statico tipico della commutazione di circuito, ma il flusso informativo anziché continuo viene pacchettizzato e quindi il canale statico è utilizzato solo su domanda cioè senza preassegnazione: il primo aspetto consente di limitare i problemi di qualità di servizio in termini di variabilità di ritardo nelle comunicazioni real-time come la fonia tipici delle reti a commutazione di pacchetto, il secondo aspetto consente invece di evitare sprechi di risorse trasmissive garantendo una maggiore efficienza dell'utilizzazione del mezzo trasmissivo che è invece tipicamente bassa nelle reti a commutazione di circuito come la rete telefonica. Per questi motivi il modo di trasferimento a circuito virtuale, già implementato nei protocolli X.25, Frame Relay e ATM, rappresenta il compromesso (trade off) ottimale per la realizzazione di reti integrate nei servizi (fonia e dati) ad alta velocità di trasmissione come ad esempio la B-ISDN e le Next Generation Networking.

## Circuito Virtuale layer 4

I protocolli destinati al trasporto di pacchetti, come TCP, possono contare sul protocollo di instradamento come l'IP, dove differenti pacchetti possono essere indirizzati su differenti percorsi, così l'invio può essere fatto in modo disordinato; ciò è possibile solamente quando si utilizza il TCP come circuito virtuale, perché numera ogni pacchetto e questo permette il loro riordino da parte del ricevitore.

## Circuito Virtuale layer 2/3

I protocolli del livello di collegamento e del livello di rete sono basati su commutatori di pacchetti in ordine; questo significa che ogni dato è sempre trasportato sullo stesso percorso all'interno della rete, cioè passa sempre per gli stessi nodi; I vantaggi di questa tecnologia di commutazione di pacchetto sono:
* Banda riservata durante l'intera connessione, che garantisce la migliore Qualità di Servizio (QoS) possibile.
* È necessario minor overhead, poiché i pacchetti non devono essere direzionati individualmente e le informazioni legate al indirizzamento di ogni singolo pacchetto non sono fornite dall'header ad esso corrispondente; per ogni pacchetto è richiesto solamente il VCI (Virtual Circuit Identifier); Le informazioni riguardanti l'instradamento sono trasferite solamente ai nodi della rete durante la fase di connessione.
* I nodi della rete sono più veloci e hanno una migliore capacità, poiché sono switch che instradano solamente durante la fase di connessione, mentre i nodi della rete sono router che instradano ogni singolo pacchetto. La commutazione si occupa solamente di guardare il VCI nella tabella piuttosto che analizzare l'indirizzo completo. Gli interruttori possono essere facilmente implementati in ASIC, mentre l'istradamento risulta molto complesso e richiede un'implementazione software. A causa della grande richiesta di IP Router e a causa dell'avanzato supporto legato allo switch dei router, attualmente, i nuovi IP router possono essere più veloci degli switch per protocolli connection oriented.

## Esempi di protocollo a livello di trasporto forniti ad un circuito virtuale

Esempi di protocollo a livello di trasporto forniti ad un circuito virtuale:
* Transmission Control Protocol (TCP), dove viene instaurato un circuito virtuale affidabile all'inizio di un inaffidabile protocollo IP senza connessione. Il circuito virtuale è identificato dalla coppia d'indirizzi di provenienza (source) e di destinazione (destination) della socket, cioè l'indirizzo ip del mittente (sender) e del ricevitore (receiver) e dalla corrispondente porta. Il QoS garantito non è previsto.
* Stream Control Transmission Protocol (SCTP), dove viene instaurato un circuito virtuale all'inizio del protocollo IP o del protocollo UDP.
Esempio di protocollo di circuito virtuale a livello di rete e a livello datalink, dove i dati vengono inviati utilizzando sempre lo stesso percorso:
* X.25, dove il circuito virtuale è identificato da il Virtual Channel Identifier (VCI). X.25, che fornisce una comunicazione nodo a nodo (node-to-node) affidabile e un QoS garantito.
* Frame relay, dove il circuito virtuale è identificato da un Data Link Connection Idenfier (DLCI). Frame relay è inaffidabile, ma potrebbe fornire un QoS garantito.
* Asynchronous Transfer Mode (ATM), dove il circuito virtuale è identificato dalla coppia Virtual Path Identifier (VPI) e Virtual Circuit Identifier (VCI). Il livello dell'ATM fornisce un circuito virtuale inaffidabile, ma il protocollo ATM fornisce affidabilità attraverso l'utilizzo dell'ATM Adaptation Layer (AAL) e Service Specific Convergence Sublayer (SSCS) (più corretto il termine “assicurato” e non “assicurato” piuttosto che “affidabile” e “non affidabile”).
* General Packet Radio Service (GPRS)
* Multiprotocol label switching (MPLS), il quale può essere usato come IP over virtual circuit. Ogni circuito è identificato da un'etichetta. MPLS è inaffidabile, ma fornisce otto differenti classi QoS.

## Circuiti virtuali permanenti e variabili nel ATM, Frame Relay e X.25

Switched virtual circuits (SVCs) sono generalmente settati durante la preparazione di una chiamata e disconnessi quando la chiamata è terminata; però, un Permanent Virtual Circuit (PVC) può essere stabilito come un'opzione che fornisce un collegamento ad un circuito dedicato attraverso due servizi. La configurazione PVC solitamente è preconfigurata dal service provider. A differenza del SVCs, PVC sono raramente rotti/disconnessi.
Il Switched Virtual Circuit (SVC) è un circuito virtuale che viene instaurato dinamicamente a fronte di una richiesta ed è rimosso quando la trasmissione è completa, per esempio dopo una chiamata telefonica o il download di un file. SVCs sono solitamente utilizzati nelle situazioni in cui la trasmissione dei dati è sporadica e/o non sempre entrambe le parti hanno lo stesso Data Terminal Equipment (DTE).
Un Permantent Virtual Circuit (PVC) è un circuito virtuale instaurato per le ripetizioni o per la continuazione dell'uso dello stesso DTE. In un PVC, l'associazione a lungo termine è identica alla fase di trasferimento dei dati in una chiamata virtuale.
* Frame Relay è tipicamente usato per fornire PVC.
* Asynchronous Transfer Mode fornisce sia connessione virtuali che possono commutate, sia connessioni virtuali permanenti, come vengono chiamate nella terminologia ATM.
* X.25 fornisce chiamate virtuali e PVC, sebbene non tutti i servizi del X.25 le forniscano o l'implementazione del DTE supporta PVC come il loro uso è meno comune dei SVC.