Il modello di riferimento OSI

Il modello OSI , come risulta dalla proposta sviluppata dall’ISO (International Standards Organization) nel tentativo di standardizzare il mondo delle comunicazioni.
Il modello di riferimento OSI (Open Systems Interconnection) nasce nel 1977, ma solo nel 1984 viene approvato.
La sigla OSI significa Open Systems Interconnection, e si riferisce a sistemi di comunicazioni aperti al trasferimento dati con altri sistemi .
Il modello OSI è costituito da sette livelli, individuati seguendo queste regole:

1.    Deve essere aggiunto un nuovo livello ogni volta che viene richiesto un diverso grado di astrazione
2.    Ciascun livello deve implementare una ben precisa funzione
3.    La funzione svolta da ciascun livello deve essere scelta tenendo conto degli standard di comunicazione già esistenti.
4.    Il confine tra un livello ed i suoi adiacenti deve essere scelto in modo da minimizzare il flusso di informazioni attraverso l’interfaccia
5.    Il numero di livelli deve essere sufficientemente grande da impedire che due funzioni distinte vengano svolte dallo stesso livello, e sufficientemente piccolo in modo da rendere maneggevole l’architettura

Si noti che il modello OSI non è un’architettura di rete in quanto non specifica gli esatti servizi e protocolli (commerciali o standard) da utilizzare in ciascun livello, ma indica solo cosa deve essere fatto nei vari livelli. Anche se l’ISO ha prodotto successivamente degli standard di riferimento per ciascuno dei livelli, questi non fanno parte integrante del modello originale.

Funzioni svolte dai livelli del modello OSI

1.    Livello fisico, ha il compito di gestire direttamente il mezzo fisico di interconnessione, assicurando il trasferimento dei singoli bit. Sono di sua competenza le caratteristiche elettriche, meccaniche e funzionali dell’intefaccia fisica al mezzo. Tipici standard di questo livello sono il V.24 del CCITT, meglio noto come interfaccia seriale RS 232C, o l’RS 449 per le linee telefoniche analogiche e l’X.21 per quelle digitali.
Nel livello fisico si devono valutare:

MEZZI TRASMISSIVI
doppino telefonico    Economico, diffuso, banda limitata, disturbabile, facilmente installabile

cavo coassiale    Costo contenuto, banda ampia, poco disturbabile, anche più canali

fibra ottica    Costo elevato, banda enorme, insensibile ai disturbi, installazione

etere    Costo nullo(~), banda illimitata ma affollata e disturbata, insicuro

TECNICHE TRASMISSIVE
Analogica    Generalmente superata, richiede modulazione e demodulazione

digitale    Più versatile ed automatizzabile, richiede conversioni, meno sensibile ai disturbi, rigenerabile completamente

LA MULTIPLAZIONE
      sullo stesso mezzo possono essere trasferite più informazioni contemporaneamente
•    Time Division Multiplexing
in ambito digitale, condivisione spaziale
•    Frequency Division Multiplexing
in ambito analogico, condivisione a bande
COMMUTAZIONE
•    tecnica di trasferimento delle informa-zioni tra più dispositivi
1.   commutazione di circuito
–    la prima rete pubblica telefonica
–    centrali di commutazione intermedie
–    richiede una lunga connessione preventiva
–    bassa efficienza e sensibilità ai guasti
2.    commutazione di pacchetto
–    suddivisione del messaggio in pacchetti
–    instradamento autonomo ed automatico
–    arrivo anche disordinato dei pacchetti
–    tempo di attivazione nullo, di latenza alto
–    adeguamento dinamico alla congestione
3.    commutazione a circuito virtuale
a.    unisce i vantaggi di entrambe
b.    determina inizialmente un path fisso per tutta la comunicazione
c.    condivisione possibile della stessa tratta
d.    rispetta la sequenzialità
e.    tempi medi di attivazione e di latenza

2.    Livello collegamento dati, ha il compito di assicurare un trasferimento privo di errori di blocchi di dati detti trame o frame, facendo vedere al livello superiore un collegamento privo di errori di trasmissione non rilevabili. Per far ciò scompone il messaggio da trasmettere in trame, delimitandole con opportuni segnalatori, e gestisce i frame di riscontro inviati dal destinatario. Un disturbo burst in linea può compromettere irrimediabilmente una trama, e in tal caso il software del livello collegamento dati del mittente ritrasmetterà la trama. Tuttavia la trasmissione multipla della stessa trama introduce la possibilità di trame duplicate (ad esempio se il riscontro si perde). Questi problemi vengono affrontati e risolti nei livelli superiori. Un altro problema che sorge in questo livello (e presente anche in quelli superiori) è accoppiare due sistemi di prestazioni diverse, in cui ad esempio il mittente è molto veloce ed il destinatario è molto più lento. Occorre introdurre buffer e meccanismi di controllo di flusso fin da questo livello. Se il collegamento è di tipo bidirezionale, questo livello può adottare tecniche piggybacking per ridurre il traffico. Inoltre se la rete è di tipo broadcast, anche la condivisione del mezzo è compito di questo livello, normalmente di un suo sottolivello specifico (MAC).
Le funioni offerte ai srervizi in tale strato sono:
a) funzioni richieste ai servizi non connessi
•    suddividere in frame e ricomporre le N_IDU
•    individuare gli errori di flusso
•    individuare e correggere gli errori sui dati

b) funzioni richieste ai servizi  connessi
•    stabilire e rilasciare la connessione
•    trasferire i dati con le funzionalità connectionless


Nel secondo strato OSI vengono inseriti i Codici di Correzione o Controllo dell’errore.
I protocolli implementati sono:
a) protocollo Stop-and-Wait
•    il mittente invia un frame, azzera il contatore di tentativi, fa partire il timer di attesa risposta e si pone in attesa
•    se entro il tempo impostato dal timer non riceve risposta incrementa il contatore e ritrasmette il frame fino ad un numero massimo di tentativi
•    se riceve risposta positiva, ricomincia con un nuovo frame
•    se riceve risposta negativa, riprova con lo stesso frame
•    i frame devono essere numerati per riconoscere le duplicazioni, è scadente per tempi di latenza consistenti

b) protocolli Sliding window
•    si adotta la tecnica del piggybacking
•    il mittente ha una finestra di trasmissione contenente i numeri dei frame spediti e non ancora confermati; ogni nuovo frame da trasmettere allunga la finestra verso l’alto, ogni riscontro positivo la restringe dal basso; la dimensione della finestra impone la dimensione del buffer
•    il destinatario ha una finestra di ricezione contenente i numeri dei frame che si aspetta di ricevere; quando arriva il frame con il primo numero atteso, il frame viene passato al livello superiore, si emette un riscontro positivo e si sposta il contenuto della finestra verso l’alto di un posto
•    è ammesso il pipelining (più frame trasmessi senza attendere risposta). Varianti tradizionali:
•    go back N
•    selective repeat

3.    Livello rete, ha il compito di controllare il funzionamento della sottorete di comunicazione, particolarmente assicurare che i pacchetti giungano a destinazione anche se devono attraversa più reti. I router si basano su tabelle di instradamento che possono essere calcolate staticamente all’attivazione del dispositivo o dinamicamente mediante algoritmi locali o distribuiti. Se in un certo segmento della rete il traffico è così elevato da causare congestione, questo livello deve regolare il traffico. Nel passaggio tra reti diverse deve anche tradurre, se necessario, il formato dei due indirizzi o la dimensione dei pacchetti. Nelle reti broadcasting il problema dell’instradamento è molto semplice e quindi questo livello si riduce notevolmente ed in alcuni casi addirittura scompare.
Si parla di:
instradamento
•    funzioni di routing e di relayng
•    ottimizzazione per l’utente (tempi di attraversamento) e per il gestore (massimo utilizzo delle linee)


compatibilità
•    diversi schemi di indirizzamento, di formato dei pacchetti, di controllo di flusso e di gestione degli errori
•    tratti con servizi connessi e tratti non connessi

Le tecniche di indirizzamento sono:
routing by network address
•    per servizi non connessi
•    utilizza tabelle di instradamento (#link e new_addr)
label swapping
•    per servizi connessi
•    usa identificatori invece di indirizzi

Algoritmi di instradamento:
statici
•    tabelle di instradamento fisso
dinamici
•    globali (centro che calcola le tabelle per tutti)
•    locali (backward learning)
•    distribuiti (con o senza il calcolo dello stato globale)
4.    Livello trasporto, ha il compito di suddividere i dati forniti dal livello superiore in pacchetti di dimensioni contenute e passarli al livello rete, ed ovviamente in ricezione di ricomporre il messaggio originale. Normalmente questo livello crea una distinta connessione di rete per ogni connessione di trasporto richiesta dal livello sessione, ma se il throughput richiesto dalla connessione di trasporto è elevata può anche attivare più connessioni di rete, suddividendo tra loro i dati da trasferire (demultiplexing). Analogamente se risulta troppo costoso mantenere attive più connessioni di rete, può associare più connessioni di trasporto su una singola connessione di rete (multiplexing). Il tutto in maniera trasparente per il livello sessione. Questo livello inoltre stabilisce il livello di affidabilità della rete: il tipo di connessione di trasporto più utilizzata è il canale punto-punto privo di errori, ma può anche essere richiesta una connessione di trasporto che non assicuri il mantenimento dell’ordine di trasmissione ma che permetta il trasferimento di uno stesso messaggio a più destinatari. Il livello trasporto è il primo livello end-to-end, cioè mette in comunicazione diretta il mittente originale ed il destinatario finale, mentre i livelli inferiori trasferiscono informazioni da una macchina ad un’altra nelle sue adiacenze. Anche in questo livello troviamo meccanismi per il controllo del flusso, anche se ora operano direttamente sugli utenti.
5.    Livello sessione, ha il compito di permettere ad utenti che operano su macchine diverse di stabilire tra loro una sessione, cioè un modulo operativo strutturato suddivisibile in attività e unità di dialogo delimitate da opportuni punti di sincronizzazione.
6.    Livello presentazione, ha il compito di fornire servizi che vengono richiesti frequentemente dall’utenza, tanto da rendere conveniente integrarli nell’architettura piuttosto che demandarli alle singole applicazioni. Una funzione tipica è l’introduzione di una codifica standard universale dei dati, per trasferire e far comprendere dati complessi anche a sistemi tra loro incompatibili. Altre funzioni presenti in questo livello sono la crittografica e la compressione.
7.    Livello applicazione, contiene l’insieme di protocolli comunemente usati, ad esempio quello per gestire un terminale virtuale, la posta elettronica o un trasferimento di file.