Con il nome Asynchronous transfer mode (abbreviato in ATM in gergo tecnico) si individua una suite di protocolli di rete sviluppata a partire dagli anni '90 e definita come standard dall'ANSI (acronimo di American National Standards Institute, “Istituto nazionale statunitense per gli standard”) e dall'Itu (acronimo per Internation Telecommunication Union, “Unione internazionale per le telecomunicazioni” in italiano). ATM, in particolare, nasce per dare risposta alle esigenze di creare protocolli di rete in grado di offrire un servizio telecomunicativo unico integrato, capace di unificare i servizi voce (banalmente, le chiamate telefoniche) con servizi dati di vario genere (navigazione, file sharing, streaming multimediale e altro). Con il passare del tempo, però, l'ATM è stato soppiantato da altre tecnologie e altri protocolli di rete più moderni, come ad esempio il TCP/IP.
Modello ibrido
Il modello sviluppato nel tempo per l'ATM ricalca, grossomodo, gli ultimi tre livelli del modello ISO/OSI delle reti di calcolatori: il livello fisico, il livello collegamento e il livello rete. L'Asynchronous transfer mode offre funzionalità appartenenti sia alla rete a commutazione di pacchetto sia alla rete a commutazione di circuito. Nella tecnologia ATM, infatti, i circuiti di comunicazione attraverso i quali far transitare i dati sono precostituiti e predeterminati, esattamente come accade per le reti a commutazione di circuito, i dati, invece, sono raggruppati in pacchetti di dimensione fissa da 53 bytes chiamati celle, simulando così il comportamento delle reti a commutazione di pacchetto . Ciò rende l'ATM un modello orientato alla connessione: prima che lo scambio dei dati tra due nodi possa prendere il via, è necessario che si costituisca un circuito virtuale ben determinato attraverso il quale far passare le celle. Per tutta la durata della comunicazione tra i due nodi, le celle utilizzeranno lo stesso cammino individuato all’atto dell’instaurazione della connessione. Il circuito virtuale così creato può essere sia permanente (ad esempio connessioni dedicate preconfigurate dall'amministratore del sistema) sia temporaneo (basato su servizi “a chiamata” e scartato non appena lo scambio di dati tra i nodi coinvolti termina).
Un modello di questo genere è ideale per garantire e gestire canali di comunicazione sincrona (SDH) e servizi di rete basati su pacchetti o celle. In questo, l'ATM si mostra capace di gestire servizi con differenti livelli di qualità del servizio e offre ottime capacità in termini di flessibilità ed efficienza nell'uso delle risorse trasmissive ed elaborative.
La struttura della cella
Una cella, come detto, è costituita da 53 byte suddivisi in due tronconi: un header da 5 byte e un payload (corpo dati utile) da 48 byte. La scelta di un carico dati utile di 48 byte è frutto di un compromesso tra due esigenze contrastanti: da un lato la necessità di ridurre il più possibile il tempo di “assemblaggio” delle celle da parte delle sorgenti a basso bitrate di emissione (ad esempio le chiamate vocali) e quella di mantenere la percentuale di overhead entro limiti accettabili. L'header, invece, partecipa alla definizione di due formati di cella differenti: l'interfaccia utente-rete (UNI, User-Network Interface), dove quattro bit sono dedicati al controllo di flusso, e l'interfaccia rete-rete (NNI, Network-Network Interface), dove gli stessi quattro bit del controllo di flusso sono invece dedicati al virtual path identifier (vedremo tra poco a cosa serve).
L’header di una cella ATM è così composto da cinque o sei campi, a seconda se la cella è UNI o NNI.
Generic Flow Control (GFC, Controllo di Flusso Generico). Composto da quattro bit, il campo GFC è presente esclusivamente nella celle con interfaccia rete-utente (UNI). Ha lo scopo di controllare l'accesso all'interfaccia utente-rete, che serve a definire le procedure ed i protocolli che regolano l’interazione tra una postazione d'utente ATM ad un nodo ATM. Nel caso in cui nessun protocollo d'accesso sia utilizzato, il valore di default è "0000"
Virtual Path Identifier (VPI, Identificatore di Percorso Virtuale). Di lunghezza variabile tra 8 bit (nell'interfaccia UNI) e 12 bit (nell'interfaccia NNI) serve per identificare il percorso virtuale attraverso il quale la cella stessa deve transitare per arrivare dal nodo sorgente a quello di destinazione
Virtual Channel Identifier (VCI, Identificatore di Canale Virtuale). Occuperà sempre 2 byte (16 bit) indifferentemente se si ha a che fare con una cella UNI o una cella NNI e identifica il canale sul quale la cella stessa sarà multiplata nel corso del trasferimento dei dati tra i due nodi. Questo serve perché lungo un medesimo percorso virtuale che congiunge due nodi della rete possono intercorrere contemporaneamente più comunicazioni: grazie al VCI, su ogni percorso virtuale possono coesistere due elevato alla sedicesima (ovvero 65536) diversi canali di comunicazione
Payload Type (PT, Tipologia di Carico). Campo di 3 bit, serve a codificare la tipologia di informazioni presenti nel payload (il “carico” di informazioni trasportato dalla cella): informazioni dell'utente, informazioni di gestione e/o informazioni di controllo traffico
Cell Loss Priority (CLP, Priorità di Perdita della Cella). Composto da un solo bit, indica la priorità di scarto della cella in caso di congestione della rete e quindi, in soldoni, l’importanza associata alle informazioni trasportate dalla cella stessa
Header Error Control (HEC, Controllo Errori dell’Intestazione). È un campo di 8 bit utilizzato per rivelare e possibilmente correggere eventuali errori presenti nell'header (intestazione) della cella
Come funziona l'ATM
Un circuito ATM trova nella cella (equivalente del pacchetto dati in una rete a commutazione di pacchetto) la sua unità base “costitutiva”. Le dimensioni fisse e ridotte della cella (53 byte, come già detto) permettono di contenere gli eventuali ritardi di elaborazione, a tutto vantaggio della velocità di trasmissione dei dati. Prima che la trasmissione possa avere inizio, però, i nodi interessati allo scambio dati devono costituire il circuito virtuale attraverso il quale far viaggiare le celle: tutto ha inizio con l'invio di un pacchetto “esplorativo”, detto di handshake, grazie al quale si definisce il percorso da seguire e quali protocolli di rete e quali modalità di trasmissione verranno utilizzate per la comunicazione. Nella creazione del percorso, il pacchetto di handshake attraversa diversi switch ATM, che hanno il compito di stabilire l'instradamento, di assegnare un marcatore identificativo del pacchetto (label o etichetta) e riservare risorse per la connessione. Stabilita la connessione, tutte le restanti celle seguiranno lo stesso percorso e saranno trasmesse con una multiplazione temporale asincrona che sfrutta canali differenti per ogni connessione.
Gli switch, per instradare correttamente le celle verso il loro circuito faranno affidamento all'etichetta assegnata in fase di apertura del circuito stesso. L'etichetta, presente nelll'header del pacchetto, è composta da due valori: il Virtual Path Identifier (VPI) e il Virtual Channel Identifier (VCI). Il primo serve a identificare il percorso seguito dalle celle per spostarsi tra i due nodi, mentre il secondo il canale, tra i tanti disponibili, assegnato alla cella nella comunicazione a multiplazione asincrona. In particolare, il VCI e il VPI sono utilizzati per stabilire quale sia lo switch successivo da raggiungere e quindi quale il percorso da seguire. Consultando una particolare tabella di assegnazione (un elenco all’interno del quale lo switch registra i pacchetti che transitano nei suoi circuiti con porta di ingresso, porta di uscita e destinazione), indicizzata in base a porta di ingresso ed etichetta assegnata, gli switch saranno in grado di ricavare la porta di uscita dalla quale far transitare le celle e la nuova etichetta da assegnare loro.
All'interno dei protocolli di rete ATM è assente una policy di gestione che si occupi di “rimettere in ordine” le celle una volta arrivate a destinazione. I pacchetti, infatti, viaggiano sequenzialmente, assicurando in questo modo la consegna nel medesimo ordine di invio. Non è assicurata, però, l'integrità informativa: a causa di possibili “code di consegna” all'uscita degli switch può capitare che qualche pacchetto vada perso.
Gestione del traffico
Come detto, una rete ATM è caratterizzata dalla capacità di gestire e controllare sorgenti traffico di diverse tipologie: dal traffico voce, allo scambio di dati massivo, allo streaming multimediale. Affinché ciò sia possibile, i due nodi stabiliranno l'esatta modalità di trasporto per la particolare tipologia di traffico prima che lo scambio di celle abbia inizio e sigleranno un “Contratto di traffico” che specifichi i parametri del traffico (come la banda di picco, la banda media e la banda minima da garantire e il ritardo tollerato nell'invio delle celle) e la qualità di servizio richiesti. Valori che la rete ATM, una volta stabiliti, si impegna a garantire per tutto il tempo della connessione.
Affinché ciò sia possibile, le reti ATM integrano nella suite di protocolli di rete un meccanismo – il Call admission control (“Controllo di Ammissione Chiamata”)– che ha il compito di verificare la disponibilità delle risorse hardware nei nodi di transito (in particolare la disponibilità di banda e la saturazione dei canali e dei percorsi). A verifica effettuata, le risorse sono destinate alla connessione dei due nodi sino a quando lo scambio di dati non sarà concluso.
Le reti ATM supportano due tipologie di traffico: constant bitrate (abbreviato in CBT) e variable bitrate (abbreviato in VBT). Nella prima tipologia la sorgente trasmette a velocità costante (ad esempio la fonia, che necessita un flusso dati costante per assicurare la comunicazione vocale in tempo reale) mentre nella seconda tipologia la sorgente dati trasmette a velocità variabile (ad esempio la connettività Internet o lo streaming audiovideo, che massimizzano, istante per istante, la banda disponibile).