CONCETTI BASILARILa tecnica di trasporto ATM è una tecnica a commutazione di pacchetto ed orientata alla connessione.
Ricordiamo che "commutazione di pacchetto" significa che i dati non fluiscono in maniera continua (stream oriented) bensì arrivano agli host scaglionati a pacchetti che viaggiano in rete come unica entità. Una tecnica "orientata alla connessione" significa che, prima di trasmettere da un host ad un altro, gli host devono "parlarsi" per mettersi d'accordo su alcuni parametri che devono "comunicare" anche a tutti i nodi intermedi (router, switch ecc.) che trasferiscono i dati. Poi, questi nodi devono dare alcune garanzie, come il fatto che una volta instaurata la connessione i dati fluiscano "quasi" senza problemi (a meno di una piccola probabilità di cell dropping) lungo un determinato percorso e che la stessa connessione non possa "cadere" in condizioni ordinarie per la rete ma solo per problemi straordinari. Le stesse garanzie che vengono date nei normali collegamenti telefonici.
Infatti ATM è (pur essendo "nata" all'interno dei Bell Labs nella prima metà degli anni 80') è stata sviluppata all'interno del mondo "telefonico" e successivamente è stata adottata anche dal mondo "informatico" ovvero per interconnessione di calcolatori; una riprova è che gli enti che standardizzano ATM sono essenzialmente due:
- ITU-T: International Telecomunication Union -Telecommunication Sector , esso ha promosso fortemente ATM in quanto ha adottato gli sforzi degli operatori telefonici che tendevano alla creazione di uno standard per la B-ISDN.
- ATM Forum: una organizzazione di standardizzazione nata per volontà di industrie manifatturiere del settore informatico e delle reti di calcolatori.
Con la tendenza alla fusione del mondo informatico sono aumentati i punti in comune degli standard, ad esempio molte compagnie telefoniche e manifatturiere che lavoravano solo per il settore telefonico sono entrate a far parte di ATM Forum il quale ha cominciato un dialogo con ITU-T che tende a produrre un unico standard ATM. In questo settore, da pochi anni, ha cominciato ad intervenire IETF (Internet Engineering Task Force) ovvero l'ente standardizzatore di Internet. Questo perchè negli ultimi anni , nonostante carenze negli standard, le reti ATM sono divenute una realtà, per cui si e sentito il bisogno di standardizzare il loro uso in Internet.
I pacchetti ATM sono chiamati "celle" e sono di dimensione fissa pari a 53 byte per 48 byte di payload e 5 byte di header così strutturati:
di cui quelli nel header hanno il seguente significato:
- GFC - Generic Flow Control: campo necessario per il controllo della congestione. E' da notare come ATM sia peculiare, rispetto ad altre tecniche di trasporto, potendo operare ad un livello cosi basso il controllo della congestione.
- VPI/VCI - Virtual Path Identifier/Virtual Channell Identifier: sono i campi che servono per l'instradamento, ovvero una volta determinato l'indirizzo ATM a cui mi devo connettere questi identificativi sono utilizzati dagli switch del collegamento per instradare i pacchetti
- PT - Payload Type: Identifica se la cella ATM e di traffico utente o di traffico di management
- CLP - Cell Loss Priority: se vale 1 la cella può essere scartata in caso di congestione dello switch
- HEC - Header Error Control: e il risultato di un codice ciclico applicato solo sull'header della cella.
Dato che ATM si e sviluppato in due mondi diversi, quando si parla di ATM si devono distinguere due approcci:
ATM non nativo: in questo caso ATM non é l'equivalente del livello 2 OSI in quanto le celle ATM vengono trasportatie all'interno di altri protocolli, ad esempio Synchronous Digital Hierarchy (SDH) usata per connessioni punto-punto nella rete telefonica. Qui le celle viaggiano come payload all'interno di frame di un protocollo più "basso" relativamente alla pila OSI. Queste reti non ci interessano poiché non sono reti ATM vere e proprie.
ATM nativo: in questo caso la rete e nativa ATM, e gli switch commutano le singole celle ATM che viaggiano isolate. Le informazioni dell'header sono sufficienti a garantire l'instradamento. Studieremo questo utilizzo di ATM.
Di seguito descriviamo il funzionamento di queste reti ATM native.
- concetti base di funzionamento ATM: vengono spiegati i concetti fondamentali del funzionamento di ATM
- segnalazione ed indirizzamento in una rete ATM nativa: si sottolineano concetti propri della segnalazione utili ai fini della comprensione di aspetti peculiari di una rete ATM
- routing ATM: qui viene spiegato il concetto base del instradamento dei pacchetti su di una rete ATM
FONDAMENTI DI UNA RETE ATM
Una rete ATM é costituita da un insieme di host e di switch connessi tra loro in maniera punto-punto, di solito con fibre ottiche per garantire velocità; gli switch sono a sua volta connessi tra di loro in modo da interconnettere un numero elevato di host. Comunque dal punto di vista logico la rete ATM é un tutt'uno ai fini degli host. Ovvero agli host appare un'unica rete su cui potersi collegare come se fosse un unica rete fisica.
Le reti ATM supportano due tipi di "interfaccia", dove con interfaccia intendiamo protocolli per lo scambio di dati relativi al collegamento, alla segnalazione ecc.
- UNI User-Network Interface: connette un host con lo switch a cui é collegato
- NNI Network-Network Interface: connette due switch.
In realtà la definizione di NNI é imprecisa in quanto si dice che tra due switch, connessi sia fisicamente che logicamente (ovvero attraverso un altro switch), l'interfaccia é NNI se tra di loro vengono scambiate celle del protocollo NNI le quali sono leggermente diverse dalle celle UNI.
Il protocollo NNI viene usato solo all'interno di una rete privata per cui il collegamento con una rete pubblica ATM (ad esempio gestita dall'operatore telefonico) viene fatto con un Public UNI, in quanto la rete privata non scambiando con la rete pubblica alcuna informazione (ad es. di gestione) non usa il protocollo NNI.
Differenze tra UNI ed NNI sono ad esempio nel fatto che l'header di una cella ATM che passa su di una interfaccia NNI é diverso rispetto a quello di una cella che passa su di una UNI in quanto i bit di GFC vi sono sulla interfaccia UNI e non sulla NNI dove il campo VPI viene espanso a 12 bit.
Come abbiamo già notato, la rete ATM é connection oriented. Ciò vuol dire che prima di trasferire i dati si deve instaurare una connessione tra i due host. Le connessioni possono essere di due tipi:
- Virtual Path: identificate dal valore VPI
- Virtual Channel: identificate dalla coppia VPI/VCI
I virtual path non sono altro che un insieme di virtual channel e sono forniti ad esempio dagli operatori telefonici ad un soggetto privato che può così gestirsi autonomamente i virtual channel instaurabili in un virtual path. Inoltre é proprio un fattore dovuto alla nascita "telefonica" di ATM il fatto che il campo sia gerarchizzato in VPI e VCI, ciò per facilitare le operazioni di switching che non necessariamente devono avvenire al livello di VCI. Ad esempio, se un privato interconnette due reti ATM tramite l'operatore pubblico quest'ultimo non dovrà commutare i singoli virtual channel perché questa operazione verrà effettuata solo all'interno della rete del privato; così si può facilitare il processo di switching.
Quindi ciò che ci interessa è lo studio dei Virtual Channel poiché sono essi il cuore dello switching ATM.
La coppia VPI/VCI ha solo significato locale nel senso che vale esclusivamente all'interno di un link, ogni volta che la connessione attraversa uno switch la coppia VPI/VCI in genere viene cambiata ed in questo consiste il meccanismo di switching ovvero nel determinare in base ad una tabella di instradamenti (che vedremo poi come può essere costruita) come si mappano le connessioni in base alle porte di provenienza ed al VPI/VCI delle celle.
Le connessioni "virtuali" possono essere di due tipi:
Permanent Virtual Connection (PVC): tipicamente realizzate tra host che si scambiano dati di frequente oppure usate per la gestione della rete. Richiedono sempre un intervento manuale ovvero le tabelle di routing vengono fatte e mantenute dall'uomo controllando per ogni switch il mapping VPI/VCI in - VPI/VCI out
Switched Virtual Connection (SVC): sono le più numerose e sono stabilite automaticamente, mediante segnalazione tra gli switch e gli host, ogni volta che un host vuole collegarsi ad un altro. É di queste che ci occupiamo poiché sono il vero é proprio modo di operare di ATM.
La connessione inizia con la segnalazione su un "well-known channel" (analogo al well-known address del TCP/IP) dedicato alla segnalazione tra host e lo switch a cui esso é collegato; tipicamente sul VPI=0 VCI=5. Come si vede nella figura seguente per parlare con B chiede la connessione al suo switch il quale a sua volta fà lo stesso con un altro switch sul percorso verso B. Per adesso non ci preoccupiamo di sapere come lo switch decide quale é il prossimo switch sul percorso; sempreché ce ne sia uno perché ci potrebbe essere connessione diretta tra lo switch e B oppure B potrebbe non essere raggiungibile perché l'indirizzo é sbagliato.
E' da notare come le reti ATM ricadano in quel tipo di reti definite "Non Broadcast" ovvero non c'è un modo "nativo" (come invece c'è in Ethernet) per eseguire broadcast o multicast. Questo comporta notevoli difficoltà per alcuni tipi di connessione come vedremo.
I due tipi di connessione che in ATM si possono effettuare sono:
point-to-point: da un host verso un altro (mono e bidirezionali)
point-to-multipoint: da un host verso tanti host; questo é possibile perché una volta stabilita la connessione é un compito relativamente facile per gli switch la duplicazione dei pacchetti mentre é impossibile multiplare sulla stessa connessione ATM pacchetti di più sorgenti (per cui le connessioni uno vs. tanti sono unidirezionali)
N.B.: sottolineiamo il concetto di "connessione ATM" in quanto all'host possono benissimo arrivare celle da diversi host ma non sullo stesso VPI/VCI in quanto non é possibile risalire all'host proprietario della cella ATM se non osservando da quale VPI/VCI proviene.
Non esistono pertanto connessioni multipoint to multipoint al livello ATM ma come vedremo dobbiamo ricorrere ad artifici di livello superiore.
E' da notare anche che essendo la rete ATM "orientata alla connessione" ed a "commutazione di pacchetto" ma non datagramma (in cui i pacchetti transitano per collegamenti diversi pur arrivando alla stessa destinazione) bensì a circuito virtuale (i pacchetti della stessa connessione seguono tutti lo stesso percorso) non c'è possibilità che arrivino in ordine errato, inoltre se al protocollo AAL (che come vedremo fà le veci del livello di trasporto, come il TCP) dell'host in questione non arriva una cella ma arriva la successiva, non c'è dubbio che la cella precedente sia stata persa (dropped) da parte di uno switch il cui buffer in trasmissione é andato in overflow . In questo modo si evita la necessità di tecniche "Go back N" perchè riusciamo a capire quante e quali celle sono state perse.
Ovviamente le applicazioni di un host non trasmettono e ricevono celle bensì dei flussi di dati (stream) per cui nasce la necessità di introdurre un livello di trasporto che mappi le connessioni stream oriented nelle celle ATM.
Questo livello é il cosiddetto AAL (ATM Adaptation Layer). Ve ne sono molti standardizzati ed altri in via di standardizzazione. E' importante che una volta stabilita la connessione gli host si mettano d'accordo su quale AAL usare.
Prima di elencare gli AAL disponibili é bene fare un ulteriore riflessione su ciò che si definisce QoS.Le sorgenti che generano traffico hanno richieste diverse ed ATM Forum ha classificato in categorie questi "tipi" di trasmissione:
- CBR Costant Bit Rate: la sorgente emette dati con una temporizzazione fissata ed una quantità di bit fissata. Si richiede che la rete trasporti tutti i dati con la temporizzazione giusta.
- VBR Variable Bit Rate
VBR RT Variable Bit Rate Real Time: la sorgente emette dati a scadenze fissate ma con quantità di dati aleatorie di cui però si possono avere parametri statistici (media, varianza)
VBR NRT Variable Bit Rate Non Real Time: la sorgente emette dati a scadenze non fissate in quantità non fissata .Anche qui si possono avere dati statistici.
Tipicamente queste sorgenti colloquiano con la rete per richiederle una certa QoS ovvero, fornendo alla rete dei parametri statistici (velocità di picco, media della banda richiesta) chiedono alla rete una certa probabilità di perdita di celle ed un certo ritardo.
ABR Available Bit Rate: come VBR NRT solo che non viene richiesta una certa QoS bensì fatta una indicazione e ci si accontenta di un best effort controllando però lo stato della rete ed evitando la congestione
UBR Unspecified Bit Rate: non viene neppure fatta una indicazione e la rete non segnala neppure l'avvenuto dropping di una cella ne cerca di evitare forti delay.
In relazione a questo tipo di sorgenti sono stati studiati vari AAL, inoltre si sono adottate delle tecniche di Connection Admission Control (CAC) con lo specifico intento di controllare se ad una connessione che richieda una particolare QoS essa possa venir fornita, in caso di risposta negativa la connessione non viene instaurata. A carico della rete c'è anche il cosiddetto Usage Parameter Control (UPC) per controllare che una sorgente "mantenga gli impegni" fissati in fase di CAC; se infatti una connessione su cui doveva viaggiare una certa mole di dati con una certa temporizzazione conosciuti e su cui erano state assegnate le risorse, di colpo trasmette molto di più essa va ad inficiare la qualità delle connessioni che con lei condividono il link. Questo "mancato rispetto del contratto" danneggia le altre connessioni e la rete deve abbattere la connessione "fraudolente" perché altrimenti essa stessa (la rete) verrebbe meno al "contratto" stipulato con le altre connessioni che non avevano modificato il loro comportamento.
Senza ricorrere all'abbattimento uno switch può decidere di sagomare il traffico di una connessione scorretta per farla rientrare nei suoi limiti (traffic policing)
Dal punto di vista architetturale sono stati standardizzati o sono in via di standardizzazione, alcuni AAL orientati a particolari tipi di traffico.
- AAL1 : per CBR
- AAL2 : per VBR (NRT)
- AAL3/4 : per VBR
- AAL5 : per UBR
Essi hanno caratteristiche diverse ma poiché questo non é che un introduzione non ci dilungheremo sulle caratteristiche nel formato dei dati del livello AAL. Ci basti sapere che, opportunamente parcellizzato, il dato prodotto dal livello AAL viaggia come payload nella cella ATM.
Per finire un commento su come si realizza il multicasting (e quindi anche il broadcasting) su di una rete ATM. Ci sono tre metodi:
VP-Multicasting: in questo meccanismo tutti gli host che intendono partecipare ad uno stesso gruppo di multicast condividono un unico VPI mentre vengono distinti dai VCI che però devono essere unici per ogni host. Questa tecnica, non ancora ben standardizzata, si allontana abbastanza dallo standard in quanto i protocolli UNI ed NNI dovrebbero garantire switching solo VP e garantire l'unicità dei VCI uno per ogni host (peraltro questa cosa limita ovviamente la dimensione dei gruppi)
Multicast Server: é la più semplice concettualmente. Esiste un server che ha una connessione punto vs. multipunto con gli host che partecipano al multicast mentre questi ne hanno una punto vs. punto con il server. Banalmente un host per parlare con tutti comunica con il server il quale ritrasmette a tutti e gli altri ascoltano. Il problema é che il server é molto complesso ed é il vero collo di bottiglia del gruppo.
Overlaid Point-to-Multipoint Connections: tutti i nodi instaurano una connessione multipla con tutti. Una volta che tutte le connessioni sono operative il funzionamento é facile ma ci sono due problemi fondamentali. Innanzitutto la rete é molto più carica di connessioni rispetto ai casi precedenti ed i singoli host nonché gli switch coinvolti hanno grossi problemi con la dimensione delle tabelle di routing che ovviamente crescono. Inoltre non é ancora chiaro come ci si può iscrivere e togliere dal gruppo in quanto va segnalato a tutti gli host e gli switch coinvolti di modificare (e non c'è ancora un protocollo che sia standard sulla modifica di connessioni punto-multipunto) le loro connessioni. In sintesi é molto più pesante dal punto di vista della segnalazione.
Multicast Server
Overlaid Point to Multipoint connection