
La commutazione di pacchetto (in inglese packet switching), nelle telecomunicazioni, è una tecnica di accesso multiplo a divisione di tempo, specificamente concepita per il trasporto dati, utilizzata per condividere un canale di comunicazione tra più nodi in modo non deterministico, suddividendo l'informazione da trasferire in pacchetti trasmessi individualmente e in sequenza, seguendo un meccanismo di instradamento dettato da relative tabella di routing. La commutazione di pacchetto trova applicazione nelle reti di calcolatori e più in generale nelle reti di telecomunicazione. Esempi di reti fondate sulla commutazione di pacchetto sono le reti locali di calcolatori e Internet.

Storicamente la commutazione di pacchetto fu concepita nei primi anni sessanta, in un contesto di guerra fredda, come soluzione al problema di garantire la sopravvivenza di una rete di telecomunicazioni in seguito ad un attacco nucleare. L'idea di base consiste nel suddividere l'informazione in entità elementari (i pacchetti) che poi vengono trasmesse e instradate individualmente e teoricamente ognuna in modo indipendente per essere poi riassemblate nel punto di destinazione. L'instradamento dei pacchetti avviene usando in ogni nodo della rete apposite tabelle di tipo dinamico, dette tabelle di routing, che ad ogni pacchetto ricevuto su una interfaccia associano la corrispondente interfaccia di uscita verso il nodo successivo. La determinazione dell'interfaccia di uscita viene stabilita in base a meccanismi di auto-apprendimento oppure tramite appositi protocolli di routing: in questo modo, nel caso in cui determinati collegamenti o link trasmissivi diventino inoperativi o inutilizzabili, è possibile individuare un instradamento alternativo che assicuri la continuità e l'integrità della trasmissione.
Questo approccio consente anche un utilizzo più efficiente della capacità trasmissiva di una rete rispetto alla commutazione di circuito, dove la comunicazione per poter avere luogo richiede l'instauramento preliminare di un circuito fisico la cui capacità è interamente dedicata alla specifica comunicazione. Nella commutazione di pacchetto invece i circuiti fisici sono utilizzati solo per il tempo strettamente necessario alla trasmissione di un singolo pacchetto e sono subito disponibili per poter trasmettere un altro pacchetto appartenente a un segnale diverso. Ciò consente un livello di condivisione del mezzo più elevato.
Di contro, a differenza delle reti a commutazione di circuito, nelle reti a commutazione di pacchetto il ritardo di trasferimento complessivo non è fisso, ma varia a seconda del percorso seguito dal pacchetto e delle condizioni istantanee del traffico, inoltre non è del tutto predicibile a priori il percorso che seguirà il pacchetto. Oltre a ciò, data la natura non continuativa della trasmissione e l'utilizzo condiviso, insorge anche la necessità di controllare la congestione nel caso di concorrenza trasmissiva da sorgenti differenti o di richiesta elevata di banda da parte di più sorgenti contemporaneamente.
Per le sue caratteristiche, la commutazione di pacchetto pone quindi un problema nel caso sia necessaria una disponibilità garantita di banda o nelle trasmissioni real time come le comunicazioni vocali tipiche della telefonia (che richiedono ritardi molto limitati e prossimi allo zero) o quelle audio-video. Per affrontare questo aspetto viene sfruttata la possibilità, già prevista negli standard relativi, di assegnare livelli di priorità ai pacchetti, definendo in questo modo classi di qualità di servizio. Con questo meccanismo, i pacchetti a priorità più elevata hanno la precedenza nell'accesso alla banda rispetto a quelli di priorità inferiore, che vengono quindi accodati e, in situazioni estreme, scartati in caso di forte congestione. Assegnando le priorità più elevate ai pacchetti relativi alle informazioni più sensibili ai ritardi o alla perdita di banda disponibile si possono in questo modo mantenere ritardi e perdite dei pacchetti entro i limiti accettabili dalle relative applicazioni.

In una rete a commutazione di pacchetto (PBN, Packet Based Network) l'informazione da trasmettere viene suddivisa in pacchetti di dimensione abbastanza piccola; ad ognuno di essi viene aggiunta un'intestazione (header) che precede il contenuto informativo vero e proprio, detto payload. L'header contiene tutta l'informazione necessaria affinché il pacchetto possa essere identificato e inoltrato fino alla sua destinazione finale, ovvero l'indirizzo del destinatario, la sua posizione (numero di pacchetto) all'interno del flusso dell'informazione che viene trasferito più tutta una serie di informazioni aggiuntive come ad esempio il livello di priorità del singolo pacchetto, la lunghezza del campo informativo, il tipo di informazione trasportata (per distinguere per esempio i pacchetti che trasportano contenuto informativo dai pacchetti che trasportano informazioni di protocollo o di altro tipo). I pacchetti vengono inviati individualmente attraverso la rete e grazie al numero di pacchetto vengono poi riassemblati nell'ordine originale quando arrivano sul nodo destinatario.
Ad ogni pacchetto viene inoltre aggiunta, tipicamente in coda al campo informativo vero e proprio, una parola di controllo individuale, calcolata sulla sequenza di bit che compongono il pacchetto stesso sfruttando un algoritmo il cui risultato consente di evidenziare la presenza di eventuali errori trasmissivi. Il nodo ricevente elabora i bit del pacchetto usando lo stesso algoritmo per calcolare autonomamente la parola di controllo e confrontarla con quella trasmessa insieme al pacchetto: se i risultati non coincidono, il pacchetto è stato corrotto da errori trasmissivi e tipicamente viene scartato e non ritrasmesso verso il nodo successivo. La caratteristica comune a tutti gli algoritmi di controllo utilizzati è che la probabilità che la parola di controllo ricevuta in presenza di errori trasmissivi coincida con la parola di controllo ricalcolata dal nodo ricevente è praticamente nulla. Esistono alcuni algoritmi di controllo più sofisticati che oltre alla rilevazione degli errori sono in grado di correggerli, entro certi limiti: se è possibile correggerli tutti, il pacchetto viene ricostruito nella sua integrità e una volta eliminati gli errori trasmesso verso il nodo successivo. Esempi di questi algoritmi sono il Cyclic redundancy check (CRC), che è in grado di identificare la presenza di errori, e il Forward Error Correction (FEC) che è anche in grado di correggere tali errori.
Il meccanismo della trasmissione a pacchetti è ricorsivo, nel senso che il campo informativo di un pacchetto può essere a sua volta un altro pacchetto, consentendo così di realizzare una pila gerarchica a più livelli.
Quando un nodo intermedio detto commutatore di pacchetto riceve un pacchetto, esso decide qual è il percorso migliore che il pacchetto può prendere per raggiungere la sua destinazione in base alle informazioni presenti nelle tabelle di routing e ai risultati delle elaborazioni da parte dei protocolli di routing (se attivi). Questa strada può cambiare da pacchetto a pacchetto dipendentemente dalle condizioni della rete (congestione, malfunzionamento del link o del nodo, capacità massima dei link ecc.), per cui pacchetti appartenenti a uno stesso messaggio possono intraprendere anche percorsi distinti.
Un pacchetto che attraversa una rete subisce un ritardo, legato a quattro componenti fondamentali, non tutte deterministiche:
Le problematiche legate al ritardo sono sostanzialmente due:
Esistono diversi meccanismi per cercare di attenuare o rendere controllabili gli effetti del ritardo. Per esempio, per ridurre o limitare il tempo di trasmissione, si può ricorrere a tecniche di tipo store and forward, per cui all'interno del nodo si attende il completamento della ricezione e dell'elaborazione del pacchetto prima di inviarlo alla coda di trasmissione.
Il meccanismo della commutazione di pacchetto non può generalmente garantire che tutti i pacchetti inviati arrivino a destinazione. La perdita di pacchetti può avvenire in seguito a diverse condizioni:
Escludendo i casi in cui la perdita di pacchetti è un effetto desiderato, in tutti gli altri casi è necessario compensare o limitare l'effetto delle perdite di pacchetti. Nel caso di guasti di nodo o di collegamento, opportuni protocolli di routing (o con funzionalità equivalenti) possono intervenire per individuare un percorso alternativo che aggiri il punto di guasto. Nel caso di errori di trasmissione, l'uso di algoritmi di correzione di errore può riparare entro certi limiti i pacchetti corrotti, riducendo così la perdita solo ai pacchetti affetti da una quantità considerevole di errori. Nel caso delle congestioni, opportuni meccanismi di priorità possono fare in modo che il traffico più "prezioso" (a priorità più alta) venga favorito rispetto al traffico meno prioritario, concentrando lo scarto di pacchetti in eccesso su quest'ultimo. Ancora, il dimensionamento e la gestione delle code di ingresso e uscita può esser realizzata in modo da dilazionare meglio la trasmissione dei picchi di pacchetto, sfruttando i momenti di minor congestione per mantenere la trasmissione a un ritmo più costante nel tempo (traffic shaping), con effetti positivi a cascata sui nodi successivi.
La possibilità di gestire una comunicazione a pacchetti in modo gerarchico a più strati (come nel caso della pila ISO-OSI) fornisce un ulteriore strumento per la gestione delle perdite, per esempio prevedendo meccanismi di controllo dell'integrità dell'informazione e di eventuale richiesta di ritrasmissione della parte di informazione perduta (è il caso per esempio del protocollo TCP).
La tecnologia a commutazione di pacchetto rispetto alla tecnologia a commutazione di circuito presenta dei limiti per quanto riguarda il monitoraggio e il controllo della corretta funzionalità della rete. Essendo stata concepita inizialmente per il trasferimento di dati con modalità best-effort o comunque con esigenze limitate di reattività in tempo reale, non prevedeva i meccanismi di reazione rapida tipici delle reti di telefonia basate su commutazione di circuito (come per esempio la capacità di dirottare il traffico su un circuito alternativo entro 50 millisecondi dalla rilevazione di un guasto distruttivo). Con l'estensione della commutazione di pacchetto anche alle reti telefoniche, questa ridotta capacità ha richiesto la definizione di meccanismi aggiuntivi come per esempio l'utilizzo di pacchetti speciali (i cosiddetti pacchetti di Operation, Administration and Maintenance, abbreviate in OAM) che consentono, per esempio sulla base di una loro trasmissione periodica, di controllare in tempo reale lo stato della rete e dei collegamenti, di trasferire tra i nodi informazioni di malfunzionamenti, di generare sui nodi segnalazioni di guasto di rete e di stabilire percorsi alternativi (normalmente precalcolati) con tempi confrontabili con quelli delle reti telefoniche a commutazione di circuito. Questi stessi pacchetti di OAM consentono inoltre il monitoraggio in tempo reale del livello di qualità del servizio, in particolare dei servizi per cui aspetti quali ritardo di propagazione o variazioni eccessive del ritardo di propagazione possono avere effetti negativi per l'utente finale (è il caso per esempio del Voice over IP), rendendo così possibile l'impiego affidabile di tali reti anche per servizi ad elevate richieste di qualità.
| Controllo di autorità | LCCN (EN) sh85096523 · J9U (EN, HE) 987007555728305171 |
|---|