# Asynchronous Transfer Mode

In telecomunicazioni Asynchronous Transfer Mode o ATM è un'architettura e non un protocollo. ATM implementa un modo di trasferimento a commutazione di circuito virtuale e trasmissione di cella, incapsulando i dati in unità, dette celle, di lunghezza fissa (53 byte) anziché in pacchetti a lunghezza variabile come avviene invece nelle reti a commutazione di pacchetto (ad esempio con IPv4). Le reti di telecomunicazioni che implementano il protocollo ATM vengono dette reti ATM.

## Introduzione

ATM è stato progettato agli inizi degli anni novanta e lanciato con una fortissima spinta dai grandi operatori di telecomunicazioni (i centri di ricerca di telecomunicazioni, tuttavia, ne studiavano le prime applicazioni sin dagli anni Settanta: AT&T negli USA, il CNET francese in Europa - mentre l'italiano CSELT ha iniziato nel 1983) in quanto avrebbe dovuto soddisfare le esigenze di networking unificando varie tipologie di traffico o servizi (voce, dati, TV via cavo, telex, ecc.), all'interno di un sistema unico integrato. In particolare ATM è stato pensato per fornire uno standard unificato di rete per supportare canali sincroni (SDH) e reti basate su pacchetti (IP, Frame Relay, ecc.) e in grado di garantire e gestire contemporaneamente livelli multipli di qualità del servizio a supporto dei vari tipi di traffico dimostrando così ottime capacità in termini di flessibilità ed efficienza nell'uso delle risorse trasmissive ed elaborative.
Tale sistema avrebbe dovuto dar luogo alla cosiddetta rete Broadband-ISDN (B-ISDN), estensione o sviluppo della classica rete N-ISDN a banda stretta (Narrow ISDN) che supportasse appunto tutta questa serie di servizi offerti all'utente e con una velocità di trasmissione di 155 Mbit/s grazie all'utilizzo della fibra ottica come mezzo trasmissivo fino all'utente finale cioè nella rete di accesso. Tali tecnologie in Italia sono state sperimentate dal centro di ricerca di Telecom Italia CSELT, di cui ha anche pubblicato una collana di volumi in Italiano. A oggi però questa tipologia di rete non è mai stata realizzata a livello di servizio commerciale, anche per l'assenza della fibra ottica fino all'utente finale.
ATM nella sua interezza non ha quindi ottenuto il successo sperato in termini di diffusione, tuttavia è stato parzialmente adottato nella rete telefonica dove il suo utilizzo è tuttora in espansione come protocollo di trasporto nella rete di accesso (ADSL, UMTS) e soprattutto nelle reti di trasporto. Anche se l'ATM sta andando lentamente in disuso in favore di tecnologie di rete più efficienti come MPLS, essa ha costituito indubbiamente una tappa intermedia o evoluzione all'interno dello sviluppo delle reti di telecomunicazioni. In particolare la B-ISDN nelle sue finalità ultime risulta oggi parzialmente realizzata con la tecnologia delle Next Generation Networking.

## Funzionamento

L'unità di trasmissione dei dati di ATM è detta cella, e ha una dimensione fissa di 53 byte, di cui 48 di payload (corpo di dati utili) e 5 di header. La lunghezza fissa e piccola della cella favorisce ritardi di elaborazione costanti e limitati durante la commutazione nei nodi nonché maggiori velocità di trasmissione estremamente vantaggiosi per il supporto alle varie tipologie di traffico.
ATM utilizza una tecnica di commutazione a circuito virtuale che lo rende appetibile per reti integrate nei servizi ad alta velocità di trasmissione: prima di inviare i dati si invia un pacchetto di handshake per configurare la connessione. Man mano che questo pacchetto attraversa gli switch ATM, questi calcolano l'instradamento, attribuiscono un identificatore (label) ai pacchetti di questa connessione e riservano risorse per la connessione stessa. A questo punto tutti i successivi pacchetti della connessione seguiranno lo stesso percorso com'è tipico della commutazione di circuito. Per il resto la trasmissione dei dati è segmentata in pacchetti di dimensioni fisse dette celle multiplate in maniera asincrona su canali logici o virtuali diversi per ciascuna connessione.
Le celle successive verranno identificate sulla base di un'etichetta. Quando una cella raggiunge uno switch, questo dovrà consultare una tabella indicizzata da porta in ingresso ed etichetta, ricavando la porta di uscita e la nuova etichetta da assegnare alla cella. Questa architettura molto semplice facilita l'instradamento in hardware permettendo di realizzare switch ad alta velocità (la commutazione per etichetta è più veloce rispetto alla commutazione IP basata sull'elaborazione in base a tabelle di routing indicizzate per sottoreti).
L'etichetta è composta di due valori presenti nell'header di ciascuna cella, VPI e VCI:
* Il VPI (Virtual Path Identifier) identifica il path virtuale su cui il circuito virtuale è stato attivato.
* Il VCI (Virtual Channel Identifier) identifica il canale virtuale su cui il circuito virtuale è stato attivato.
Gerarchicamente si ha che un circuito virtuale viene stabilito tramite il collegamento di più connessioni virtuali VC. Il VP è un canale virtuale gerarchicamente superiore al VC e infatti un VP può contenere fino a 2^16 VC. Appositi dispositivi hardware, ad esempio switch ATM, sono in grado di gestire VP (con tutti i VC in essi contenuti) o anche direttamente i singoli VC.
Visto che tutti i pacchetti seguono la stessa strada, è garantita la consegna in ordine, ma non l'integrità informativa ovvero che tutti i pacchetti siano consegnati, perché sono sempre possibili code sugli switch e conseguenti perdite di pacchetti.
La velocità di trasmissione possibile va da 2 a 622 Mbps e anche oltre. È questa la velocità adatta alla tv ad alta definizione.
ATM consente inoltre di segmentare la banda sui diversi canali virtuali per suddividerla e offrirla ai diversi tipi di servizi di trasmissione tramite appunto l'uso dei VCC (VPI:VCI)
Per supportare vari tipi di traffico su ATM, e quindi vari tipi e livelli di qualità di servizio, sono stati definiti una varietà di modelli di servizio che si adattano sia al traffico telefonico (CBR: banda costante, forti garanzie su banda e ritardo) sia a quello IP (VBR: banda variabile, nessuna garanzia). A differenza delle reti IP, ATM deve dunque fornire una garanzia di trasporto, ovvero predeterminate prestazioni, per il particolare servizio utente richiesto.

## Architettura protocollare ATM

Come per il protocollo Frame Relay, ATM adotta, nella sua architettura protocollare, il principio del Core & Edge ovvero i nodi interni si occupano solo di commutazione e multiplazione, mentre tutte le altre funzionalità specifiche per i vari tipi di servizio sono implementate sui terminali utente. Questo consente di spostare parte della complessità computazionale ai bordi della rete rendendo il trasporto interno più veloce grazie anche all'utilizzo di mezzi trasmissivi a basso bit error ratio come la fibra ottica.
Mentre lo strato ATM puro si occupa delle funzionalità relative dell'header all'interno della rete di trasporto cioè per quanto riguarda la commutazione di etichetta, ai bordi della rete sono definiti e utilizzati molteplici strati di adattamento ("Adaptation Layer") per l'interconnessione di reti ATM con reti non ATM, dipendenti dal particolare tipo di servizio/traffico su vari tipi di dato da offrire all'utente e che agiscono sul payload della cella.

### Adaptation Layer

L'AAL è costituito da due sottolivelli:
* Convergence
* SAR (segmentation & reassembly)
Esistono 5 AAL (in realtà sono 4 categorie) a seconda dell'applicazione o tipo di traffico che si deve servire.
AAL 1
L'AAL 1 è utilizzato per applicazioni che adoperano un'emulazione di circuito (canale punto punto TDM) oppure per applicazioni che utilizzano sorgenti audio che hanno un constant-bit rate costante. Rientrano così nella Classe di servizio CBR.
L'incapsulazione SAR in AAL1 avviene riservando un byte del payload della cella, dove sono specificati i seguenti campi:
* CSI 1 bit
* Sequence Count 3 bits (Indica il numero della cella, può essere utile per verificare la perdita di celle o l'inserimento errato)
* CRC 3 bits (Controllo ridondanza ciclica, è un controllo sul Sequence Count)
* Parity 1 bit
Inoltre il Sottolivello Convergence fornisce un buffer per eliminare il jitter fra le celle.
AAL 2
L'AAL 2 è utilizzato per quelle applicazioni che richiedono una classe di servizio VBR-rt (Dimensione traffico variabile, real time) Es: Audio Video Compresso.
Su una singola connessione Atm possono viaggiare più flussi dati appartenenti a sorgenti distinte. È necessario un meccanismo per separare questi flussi. Il sottolivello Convergence ha il compito di Multiplexare questi flussi in fase di invio dei flussi, e di demultiplexare questi flussi in fase di ricezione. Il sottolivello Convergence è suddiviso a sua volta in SSCS (service specific convergence sublayer) e CPS (Common part sublayer).
Le celle in AAL 2 hanno una forma di questo tipo:
Start Field:
* OSF 6 bits
* SN 1 bit sequence number
* P 1 bit parità
Packet Header:
* CID 8 bits
* LI 6 bit lunghezza payload
* UUI 5 bit
* HEC 5 bit (Header Error Control: controlla l'errore nell'intestazione della cella)
Variable:
* PAYLOAD restanti bit
* Padding eventuale
AAL 3/4
AAL 3/4 si rivolge ad applicazioni che richiedono una classe di servizio VBR-nrt (dimensione traffico variabile, non real-time). Per applicazioni di questo tipo si preferisce garantire la correttezza dei dati piuttosto che il ritardo (Delay). Controlli di correttezza su Payload e Serial number sostituiscono quindi quei campi che prima erano dedicati a controlli sulla tempificazione. I messaggi sono incapsulati in un Header e in un Trailer dopodiché vengono segmentati nelle Celle ATM.
Le celle di ALL 3/4 sono costituite da un Header che fornisce informazioni sul segmento, numero di sequenza, campo per il multiplexing, e da un trailer che contiene un indicatore di lunghezza e CRC.
AAL 5
L'AAL 5 non fa altro che inserire una coda (trailer) di 8 byte a ogni pacchetto che contiene un campo riservato, lunghezza payload, 32 bit di CRC. Il pacchetto viene incapsulato nella cella ATM si utilizzano due bit del campo PTI per definire l'ultima cella appartenente a un aggregato di celle corrispondenti a un pacchetto.
AAL 5 viene utilizzato ad esempio per utilizzare ATM in LAN. Quello che avviene sostanzialmente grazie ad AAL 5 è convertire gli Indirizzi MAC di 48 bit dei dispositivi in indirizzi locali per ATM 20 byte.

## Gestione del traffico

Come detto, ATM deve supportare varie tipologie di traffico, anche molto diverse tra loro, e per questo deve essere in grado di gestirle abilmente e in maniera flessibile. A tal fine, all'inizio della connessione, cioè nella fase di impostazione/costruzione della stessa, viene contrattata l'esatta modalità di trasporto per la particolare tipologia di traffico richiesta dall'utente attraverso un Contratto di Traffico che specifica i parametri di traffico (traffic descriptor) e quelli di qualità di servizio richiesti e che la rete stessa, una volta accettata la richiesta di servizio, dovrà garantire. In particolare tra i parametri di traffico figurano la banda di picco, la banda media e la banda minima della comunicazione da garantire, la lunghezza massima di un burst di pacchetti e la massima variazione di ritardo tollerata mentre i parametri di QoS sono il massimo ritardo di trasferimento, la variazione del ritardo agli estremi, il massimo tasso di perdita consentito.
Parallelamente, per essere certi di poter supportare le richieste degli utenti sulle varie tipologie di traffico da servire, la rete ATM implementa il meccanismo cosiddetto di Call Admission Control, cioè, dopo aver registrato all'atto dell'instaurazione della connessione attraverso il Contratto di Traffico le richieste di parametro di traffico, verifica successivamente la disponibilità delle risorse necessarie nei nodi interni di transito per soddisfare le richieste di servizio per poi eventualmente assegnarle permanentemente, per l'intera durata della connessione, all'utente soddisfacendo le sue richieste. Questo stesso meccanismo di controllo di ammissione di chiamata limita gli effetti di ritrasmissione che l'eventuale congestione di rete dovuta alla perdita di pacchetti non trasferibili produrrebbe.
A livello hardware, per gestire diverse tipologie di traffico (es. CBR e VBR real-time e non) ATM utilizza un'architettura di ricezione a più buffer di ricezione nei nodi interni: nel caso di traffico di sorgenti real-time i buffer sono più piccoli rispetto a quelli destinati a celle non real-time per evitare eccessivi ritardi di accodamento e con uno scheduler che decide la priorità di trasmissione sul traffico offerto in ingresso a favore del traffico real-time.

### Tipologie di traffico

Le tipologie di traffico supportate sono:
* CBR (Constant Bit Rate), le sorgenti emettono a bit-rate costante come nel caso della fonia;
* VBR (Variable Bit Rate), le sorgenti emettono a velocità variabile nel tempo (es. dati audio-video e traffico Internet)
Ciascuna delle precedenti tipologie di sorgenti può essere di tipo real-time o non real-time e ciascuna prevede differenti parametri di qualità di servizio da garantire.
* UBR (Unspecified Bit Rate), le sorgenti possono emettere a velocità variabile fino a un valore massimo consentito dalla rete;
* ABR (Avaliable Bit Rate), le sorgenti possono emettere a un tasso di emissione massimo disponibile in un certo istante di tempo della rete (best effort) in base alla congestione di rete implementando un meccanismo di controllo di trasmissione tra i nodi interni basato su un feedback tramite il quale i nodi comunicano il massimo traffico ricevibile e di conseguenza il massimo traffico che i terminali possono trasmettere. È dunque una funzionalità simile a quella offerta da TCP nel rispettivo controllo della congestione, in realtà anche migliore perché implementata a livello di rete nei nodi di rete stessi (hop by hop) e non da estremo a estremo (end to end) e di tipo preventivo cioè innescata prima dell'evento di perdita di pacchetto e non dopo come avviene invece in TCP. È dunque un meccanismo estremamente utile per aumentare l'efficienza di utilizzazione della rete fino al limite consentito cioè senza incorrere in congestione.

## Applicazioni

Sono possibili due modalità di implementazione di ATM su una rete di telecomunicazioni:
* LAN Emulation (LANE): permette di far comunicare tra loro un insieme di terminali che fanno parte di una stessa sottorete come appartenenti a una rete locale ATM senza utilizzare il protocollo Ethernet con lo svantaggio però di dover creare connessioni ATM (cioè VC semipermanenti o automatici). Di fatto la tal cosa non si è realizzata in favore invece delle comuni LAN Ethernet per motivi di costo degli apparati ATM (switch ATM).
* Classical IP su ATM (CLIP): rappresenta il modello che si è effettivamente affermato e che consiste in uno schema di trasporto in cui router di interfaccia dialogano tra di loro attraverso una rete ATM, che funge appunto da rete di trasporto, attraverso l'uso di circuiti virtuali permanenti col vantaggio aggiunto di garantire QoS agli utenti e possibilità di VPN su scala geografica (Ipsilon Networks).

### IP su ATM

IP su ATM è stato introdotto all'inizio degli anni novanta per far fronte a esigenze di aumento del traffico che i router dell'epoca non erano in grado di soddisfare (gli switch ATM offrivano infatti prestazioni fino a 622 Mbit/s) e perché ATM offriva la possibilità di operare ingegneria del traffico ovvero pianificare/decidere come instradare il traffico all'interno della rete di trasporto grazie al meccanismo dei circuiti virtuali permanenti gestiti dinamicamente, ovvero modificabili a seconda del livello di congestione interno della rete.
Per trasportare traffico IP proveniente da una singola sorgente, si usa l'Adaptation Layer 5 (AAL5), che segmenta il pacchetto IP in celle. AAL5 prevede dunque la possibilità di segmentare pacchetti di dimensioni variabili fino a 2^16 byte su un numero sufficiente di celle ATM con un overhead minimo. Ogni pacchetto AAL5 (CPCS-PDU) è coperto da un CRC per la rilevazione degli errori. Quindi, intendiamo per PDU l'insieme di celle ATM che trasportano questo pacchetto. Per ogni PDU, AAL5 ha un overhead di 8 byte che si inserisce come trailer della PDU. Mentre un pacchetto AAL5 verrà trasmesso su più celle in AAL2, una cella potrà trasportare più pacchetti AAL2. Questa pratica comporta, però, un maggior carico di overhead sulla rete, dunque perdita di efficienza (Goodput).
Questa soluzione ha perso definitivamente i suoi vantaggi quando, con l'aumento delle prestazioni di elaborazione dei router IP fino al superamento delle capacità degli switch ATM, ATM ha mostrato tutti i suoi limiti in termini di gestione contemporanea di due diverse tipologie di rete (IP sopra e ATM sotto), nonché il problema del cablaggio che aumentava col quadrato dei terminali per le topologie a maglia completa adottate da ATM e quello intimamente connesso in termini di elaborazione, memorizzazione ed efficienza delle informazioni fornite dei protocolli di routing.
La nuova tecnologia di rete di trasporto che si è affermata è stata dunque IP over SDH/SONET e successivamente IP su MPLS su SDH/SONET.

## Modello di riferimento

Utilizzando AAL5 per trasportare IP su ATM, ATM assume nello stack TCP/IP la funzione del livello di collegamento, pur avendo molte funzionalità proprie di un livello di rete, e addirittura alcune che si trovano normalmente nel livello di trasporto (servizio orientato alla connessione, qualità di servizio, controllo di congestione). Queste opportunità non vengono sfruttate trasportando IP su ATM.
Per questi motivi, ATM non si inquadra bene né nel modello OSI né nel modello TCP/IP cioè nella sua interezza sarebbe propriamente un modello di architettura di rete a parte almeno per ciò che riguarda i bassi strati inferiori dedicati al trasporto.