Ultima modifica:
Indice
- Panoramica Generale
- Caratteristiche logiche
- Livelli del modelli
- Strati software (top-down)
- Strato Applicativo
- Caratteristiche
- Strato di Presentazione
- Caratteristiche
- Strato di Sessione
- Caratteristiche
- Strato Applicativo
- Strato di trasporto
- Classi di protocolli TP0/TP4
- Caratteristiche
- Strati hardware (bottom-up)
- Strato Fisico
- Caratteristiche
- Strato di Collegamento
- Sottostrato LLC
- Sottostrato MAC
- Caratteristiche
- Strato di Rete
- Algoritmi di Routing
- Caratteristiche
- Strato Fisico
- Strati software (top-down)
- Conclusioni
Con l'avvento delle reti, si crearono negli anni 60-70 una serie di architetture private che seguivano una struttura ad-hoc non lineare come ARPANET o CYCLADES oppure "standard" di rete proprietari come la Systems Network Architecture (SNA) di IBM o DECNET della Digital Equipment Corporation.
Con il passare degli anni il numero delle reti aumentava come anche il divario delle architetture e degli standard che seguivano. Questo stava creando un insieme di reti eterogenei non compatibili tra di loro e, quindi, le informazioni non potevano essere scambiate tra una rete per la difficoltà nell'adattare due standard tra di loro. Nel 1972 nacque cosi la necessità di trovare uno standard comune, uno che possa essere utilizzato da qualsiasi rete globale cosi da poter eliminare una volta per tutte il divario eterogeneo che non permetteva lo scambio di informazioni multi-rete. Stesso nel 1972 con la formazione dell'International Network Working Group (INWG) si cercò di promuovere l'idea di commutazione a pacchetto basata sul mantenere un informazione in rete all'interno di una struttura logica chiamata datagramma. La INWG finì il suo standard nel 1975 impiegando circa 3 anni. Stesso in quell'anno proposero al Comitato Internazionale di Consultazione Telefonica e Telegrafica il proprio standard che, però, fu respinto poiché troppo complesso e rischioso poiché le fasi di testing erano state mal gestite.
Negli anni a seguire, nacque poi un nuovo progetto: OSI.
OSI sta per Open Systems Interconnection. È stato sviluppato da ISO - "International Organization of Standardization", nell'anno 1984. È un'architettura a 7 livelli con ogni strato che ha funzionalità specifiche da eseguire. Tutti questi 7 livelli lavorano in modo collaborativo per trasmettere i dati da una persona all'altra in tutto il mondo. Bisogna specificare che il modello ISO/OSI non rappresenta una vera architettura di rete poiché non si ha un'analisi dettagliata di come ogni strato sia implementato ma solamente le caratteristiche che deve avere.
Caratteristiche logiche
La logica che fa nascere il modello ISO/OSI si basa sul mascheramento di ciò che avviene all'interno di ogni strato che, dall'esterno, è visto come se fosse una scatola nera. I vari strati comunicano tra di loro utilizzando protocolli di comunicazione end-to-end a secondo del tipo del messaggio. Nel modello ISO/OSI, infatti, i messaggi possono essere divisi tra:
- Inviati: In cui il messaggio viene generato all'interno dello strato applicativo e, dopo un operazione di packaging, si avrà un entità composta dalle informazioni originali codificate più informazioni di servizio che verranno utilizzati durante la comunicazione.
- Ricevuti: In cui il messaggio viene ricevuto dallo strato fisico in maniera codificata, ossia non leggibile direttamente dall'applicazione ricevente. In questo caso, il messaggio viene decodificato partendo dallo strato fisico fino a raggiungere lo strato applicativo in cui il messaggio viene completamente rigenerato in forma non codificata cosi da poterlo rendere disponibile alla lettura o alla visualizzazione all'interno delle applicazioni del nodo ricevente.
Ogni strato comunica con il sottostante e con il precedente secondo alcuni protocolli di comunicazioni specifici andando a scambiarsi dati in input e in output secondo un particolare formato atteso.
Si realizza, quindi, una comunicazione multilivello, cosa che permette di scegliere e adattare protocolli di comunicazione e relativi algoritmi di elaborazione alla particolare rete di telecomunicazione che si intende creare.
Livelli del modello
I livelli sono 7, partendo da una visione bottom-up si avranno:
- Strato fisico
- Strato di collegamento
- Strato di rete
- Strato di trasferimento
- Strato di sessione
- Strato di presentazione
- Strato applicativo
- Strati software: Che comprendono lo strato applicativo, di presentazione e di sessione
- Strati hardware: Che comprendono lo strato fisico. di collegamento e di rete
La descrizione dei 7 livelli verrà strutturata nel seguente modo:
- Gli strati software verranno analizzati secondo una navigazione di spiegazione top-down, ossia si partirà dallo strato applicativo fino allo strato di sessione.
- Si analizzerà singolarmente lo strato di trasporto
- Gli strati hardware verranno analizzati secondo una navigazione di spiegazione bottom-up, ossia si partirà dallo strato fisico fino allo strato di rete.
Ricordiamo che l'ISO/OSI è alla base della suite TCP/IP che è un modello basato su 5 livelli sviluppato con l'avvento di internet e che introduce i protocolli TCP per lo strato di trasporto e il protocollo IP (IPv4 e IPv6) per lo strato di rete. Ciò che si fa all'interno della suite TCP/IP è quello di fondere gli strati software in un unico strato applicativo e attuare alcune modifiche sui servizi di correzione e di gestione dei canali fisici.
Strati Software (top-down)
Strato Applicativo
È il livello più alto del modello OSI. La manipolazione dei dati (informazioni) in vari modi viene eseguita in questo livello che consente all'utente o al software di accedere alla rete.
Alcuni servizi forniti da questo livello includono:
- Posta elettronica
- Trasferimento di file
- Distribuzione dei risultati all'utente
- Servizi di directory
- Risorse di rete
L'Application Layer contiene una varietà di protocolli comunemente richiesti dagli utenti. Un protocollo applicativo ampiamente utilizzato è HTTP (HyperText Transfer Protocol), che è la base del World Wide Web. Quando un browser vuole una pagina web, invia il nome della pagina che vuole al server usando HTTP. Il server quindi restituisce la pagina.
Altri protocolli dell'applicazione utilizzati sono:
- File Transfer Protocol (FTP)
- Trivial File Transfer Protocol (TFTP)
- Simple Mail Transfer Protocol (SMTP)
- TELNET
- Domain Name System (DNS)
Caratteristiche
Possiamo definire le caratteristiche di questo strato come segue:
- Servizi di posta: Questo livello fornisce la base per l'inoltro e l'archiviazione della posta elettronica.
- Terminale virtuale di rete: Consente a un utente di accedere a un host remoto. L'applicazione crea l'emulazione software di un terminale sull'host remoto. Il computer dell'utente comunica al terminale del software che a sua volta dialoga con l'host e viceversa. Quindi l'host remoto ritiene che stia comunicando con uno dei propri terminali e consente all'utente di accedere.
- Servizi di directory: Questo livello fornisce l'accesso a informazioni globali su vari servizi.
- Trasferimento, accesso e gestione dei file (FTAM): è un meccanismo standard per accedere ai file e gestirli. Gli utenti possono accedere ai file in un computer remoto e gestirlo. Possono anche recuperare file da un computer remoto.
Strato di Presentazione
Il livello di presentazione è responsabile della formattazione e della consegna delle informazioni al livello dell'applicazione per l'ulteriore elaborazione o visualizzazione. Allevia il livello di applicazione delle preoccupazioni per quanto riguarda le differenze sintattiche nella rappresentazione dei dati all'interno dei sistemi degli utenti finali. Un esempio di un servizio di presentazione potrebbe essere la conversione di un file di computer di testo codificato EBCDIC (Extended Binary Coded Decimal Interchange Code definito da IBM) in un file codificato ASCII.
Il livello di presentazione raffigura come codificare i dati, sotto quali codifiche scegliere e soprattutto a quale linguaggio fare riferimento. Un messaggio in C risulterà diverso da un messaggio in Java. Mentre nel livello applicativo si gestiscono i dati e la loro semantica, all'interno dello strato di presentazione si definisce la loro sintassi. In altri termini, tale strato ha la funzione di tradurre correttamente i dati ricevuti in modo da poter essere utilizzati in maniera idonea all'interno dello strato applicativo.
Altre caratteristiche sono quelle definite all'interno della serializzazione di contenuti e strutture dati che poi verranno passati al di sotto nello strato di sessione.
Un altro compito è quello di criptare (nel nodo mittente) o decriptare (nel ricevente) i dati che si intende visualizzare o inviare cosi da mantenere un indice di sicurezza nel caso si abbia un intercettazione da parte di nodi malevoli intermedi (man-in-the-middle).
Un'ultima caratteristica di questo layer è la compressione dei dati andando a definire metodi di compressione e di decompressione che andranno ad alleggerire la quantità di bit da inviare all'interno della trasmissione per poi decomprimerli all'interno del nodo destinatario cosi da ricavare l'informazione originale all'interno dello strato applicativo del ricevitore.
Caratteristiche
Possiamo ora definire le caratteristiche generali di questo strato come segue:
- Traduzione: Prima di essere trasmesse, le informazioni sotto forma di caratteri e numeri devono essere modificate in flussi di bit. Il livello di presentazione è responsabile dell'interoperabilità tra metodi di codifica poiché computer diversi utilizzano metodi di codifica diversi. Traduce i dati tra i formati richiesti dalla rete e il formato del computer.
- Crittografia: Esegue la crittografia sul trasmettitore e la decrittografia sul ricevitore.
- Compressione: Esegue la compressione dei dati per ridurre la larghezza di banda dei dati da trasmettere. Il ruolo principale della compressione dei dati è ridurre il numero di bit da 0 trasmettere. È importante nella trasmissione di contenuti multimediali come audio, video, testo ecc.
Strato di Sessione
Il livello di sessione fornisce il meccanismo per aprire, chiudere e gestire una sessione tra i processi dell'applicazione dell'utente finale, ovvero stabilire un dialogo semipermanente. Le sessioni di comunicazione sono costituite da request e response che si verificano tra le applicazioni. I servizi a livello di sessione sono comunemente usati negli ambienti applicativi che fanno uso di RPC (Remote Procedure Call che, poi, saranno anche alla base dei sistemi distribuiti).
Lo strato di trasporto se ha come oggetto di comunicazione pagine richieste tramite protocollo HTTP nello strato applicativo, può anche gestire sessioni utenti su siti web come:
- Lo stato del carrello in un e-commerce
- Lo stato di "connesso" o "loggato" all'interno di un social network
- Ricerche di sessione
Il dialogo con altri nodi può avvenire sia in maniera half-duplex che full-duplex. Questa caratteristica è affine anche alla modalità di trasmissione che si ha nello strato fisico del modello OSI.
Caratteristiche
Possiamo definire le caratteristiche generali dello strato nei seguenti punti:
- Controllo dialogo: Questo livello consente a due sistemi di avviare la comunicazione tra loro in half-duplex o full-duplex.
- Token Management: Questo livello impedisce a due parti di tentare la stessa operazione critica contemporaneamente.
- Sincronizzazione: Questo livello consente a un processo di aggiungere punti di controllo considerati come punti di sincronizzazione nel flusso di dati. Ciò sta a significare che se un flusso di dati termina in maniera anomala, può riprendere dal punto in cui si è verificata l'interruzione. Un esempio lo abbiamo quando si spegne il PC mentre si sta leggendo una pagina web. E' possibile ripristinare la pagina web al punto in cui si era stati interrotti e riprendere il flusso dei dati (navigazione HTTP).
Strato di Trasporto
La funzione di base del livello di trasporto è accettare i dati dal livello superiore, dividerli in unità più piccole, passare queste unità di dati al livello di rete e assicurarsi che tutti i pezzi arrivino correttamente all'altra estremità. La PDU in questo strato viene definita come segmento.
Inoltre, tutto ciò deve essere fatto in modo efficiente e in modo da isolare gli strati superiori dagli inevitabili cambiamenti nella tecnologia hardware.
Il livello di trasporto determina anche il tipo di servizio da fornire al livello di sessione e, in ultima analisi, agli utenti della rete. Il tipo più diffuso di connessione di trasporto è un canale punto-punto privo di errori che consegna messaggi o byte nell'ordine in cui sono stati inviati.
Il livello di trasporto è un vero livello end-to-end, dall'origine alla destinazione. In altre parole, un programma sulla macchina di origine effettua una conversazione con un programma simile sulla macchina di destinazione, utilizzando le intestazioni dei messaggi e i messaggi di controllo. Queste interazioni possono avvenire secondo due modelli di connessione:
- Con connessione
- Senza connessione
Ogni collegamento è controllato da questo strato in maniera di garantire l'affidabilità attraverso il controllo del flusso, la segmentazione/de-segmentazione e il controllo degli errori. Alcuni protocolli sono orientati allo stato e alla connessione. Ciò significa che il livello di trasporto può tenere traccia dei segmenti e ritrasmettere quelli che non vengono consegnati.
Il livello di trasporto fornisce anche il riconoscimento della corretta trasmissione dei dati e invia i dati successivi se non si sono verificati errori. Il livello di trasporto crea segmenti al di fuori del messaggio ricevuto dal livello dell'applicazione. La segmentazione è il processo di divisione di un messaggio lungo in messaggi più piccoli.
Classi di protocolli TP0/TP4
OSI definisce cinque classi di protocolli di trasporto in modalità di connessione che vanno dalla classe 0 (che è anche nota come TP0 e fornisce il minor numero di funzionalità) alla classe 4 (TP4, progettata per reti meno affidabili, simile a Internet).
La classe 0 non contiene alcun ripristino da errori ed è stata progettata per l'uso su livelli di rete che forniscono connessioni prive di errori.
La classe 4 è la più vicina al TCP che ritroviamo nella suite TCP/IP, sebbene TCP contenga funzioni, come la graziosa chiusura, che OSI assegna al livello di sessione. Inoltre, tutte le classi di protocollo in modalità di connessione TP OSI forniscono dati accelerati e preservano i confini dei record. Le caratteristiche dettagliate delle classi TP0-4 sono riportate come segue:
Caratteristiche
Le funzionalità alla base dello strato di trasporto sono:
- Indirizzamento del punto di servizio: L'intestazione del livello di trasporto include l'indirizzo del punto di servizio che è l'indirizzo della porta. Questo livello porta il messaggio al processo corretto sul computer a differenza del livello di rete, che porta ogni pacchetto al computer corretto.
- Segmentazione e riassemblaggio: un messaggio è diviso in segmenti; ogni segmento contiene un numero di sequenza, che consente a questo livello di riassemblare il messaggio. Il messaggio viene riassemblato correttamente all'arrivo a destinazione e sostituisce i pacchetti persi durante la trasmissione.
- Controllo della connessione:
- Divisa in due tipologie:
- Livello di trasporto senza connessione: Ogni segmento è considerato come un pacchetto indipendente e consegnato al livello di trasporto sulla macchina di destinazione.
- Livello di trasporto orientato alla connessione: prima di consegnare i pacchetti, la connessione viene eseguita con il livello di trasporto sulla macchina di destinazione.
- Divisa in due tipologie:
- Controllo del flusso: in questo livello, il controllo del flusso viene eseguito dall'inizio alla fine.
- Controllo degli errori: il controllo degli errori viene eseguito end-to-end in questo livello per garantire che il messaggio completo arrivi al livello di trasporto ricevente senza errori. La correzione degli errori viene eseguita tramite ritrasmissione. Il meccanismo di ritrasmissione e di rilevamento degli errori avviene tramite segnali ACK (di ricezione del pacchetto) e NACK (di mancata ricezione del pacchetto). Nel caso il pacchetto viene ricevuto entro un intervallo di tempo limite si invia dal destinatario al ritorno un segnale ACK, viceversa un NACK.
Strati Hardware (bottom-up)
Strato Fisico
Il livello più basso del modello di ISO/OSI è il livello fisico. È responsabile dell'effettiva connessione fisica tra i dispositivi. Il livello fisico contiene informazioni sotto forma di bit. È responsabile della trasmissione dei singoli bit da un nodo al successivo. Durante la ricezione dei dati, questo livello riceverà il segnale ricevuto e lo convertirà in 0 e 1 e li invierà allo strato di trasporto, che rimetterà insieme il frame.
Inoltre, si occupa di gestire i moduli fisici per la trasmissione e la ricezione del segnale, della stabilizzazione di una connessione e di un canale comunicativo con gli altri nodi della rete. Lo strato fisico quindi è in stretto contatto con il modello di rete in cui si intende inserire il nodo avente questi strati di gestione dei messaggi.
Caratteristiche
In sintesi, possiamo riassumere le caratteristiche di questo strato andando ad elencare alcune funzionalità di base di cui è responsabile:
- Setting del numero di bit di un collegamento: Definisce il numero di bit che compone una trasmissione cosi da poter stabilire quando essa termina.
- Differenziazione bit a bit: La differenza di potenziale utilizzata per distinguere i vari bit all'interno di una comunicazione (ricordiamo che i bit sono trasmessi sotto forma di segnale elettrico con una determinata frequenza, ampiezza del segnale e base).
- Sincronizzazione bit a bit: La trasmissione dei bit segue un Clock condiviso sia nel mittente che nel ricevente cosi da sincronizzare la ricezione e l'invio di un bit.
- Velocità media di trasmissione: Definisce il numero di bit inviati al secondo
- Topologia fisica: Si definisce il modo in cui i nodi vengono collegati all'interno della rete. Ossia quale topologia di rete si adotta all'interno dell'architettura sviluppata.
- Modalità di trasmissione: Lo strato fisico definisce anche la modalità in cui il flusso di bit viene trasmessa. In genere ci sono 3 tipologie di trasmissioni su cui si può scegliere
- Simplex: Trasmissione unidirezionale in cui si ha un mittente e un ricevente. Non è possibile inviare messaggi dal ricevente al trasmittente.
- Half-Duplex: Si ha una trasmissione bidirezionale, ma non è possibile sfruttare il doppio direzionamento contemporaneamente. Ossia, se il canale sta trasmettendo un messaggio da un nodo A ad un nodo B, non si può contemporaneamente trasmettere un messaggio da un nodo B ad un nodo A-
- Full-Duplex: Definisce una trasmissione bidirezionale senza limitazione di trasmissioni. Ossia è possibile inviare un messaggio da un nodo A ad un nodo B e viceversa contemporaneamente.
Strato di Collegamento
Il livello di collegamento dati è responsabile della consegna da nodo a nodo del messaggio. La funzione principale di questo livello è assicurarsi che il trasferimento dei dati sia privo di errori da un nodo a un altro che si sono ricevuti o devono essere inviati sul livello fisico. Quando un datagram (o PDU di collegamento) arriva in una rete, è responsabilità del livello di collegamento (chiamato DLL) trasmetterlo all'host utilizzando il suo indirizzo MAC (Media Access Control, identificativo univoco dato dalla scheda di interfaccia di rete (NIC))
Possiamo suddividere il livello di collegamento in due sottolivelli.
Sottostrato LLC
Controllo del collegamento logico (LLC) è un protocollo che:
- Incapsula il pacchetto dello strato di rete una unità di trasmissione (PDU che in questo strato vengono chiamata datagram) i dati ricevuti dal livello di rete (nel caso di un messaggio da inviare)
- Decodifica le PDU in pacchetti provenienti dal sottolivello MAC (nel caso di messaggio ricevuto).
Sottostrato MAC
Il Media Access Control (MAC) si occupa della gestione degli errori di trasmissione nel caso di un messaggio ricevuto e decapsulato. All'interno di questo strato si introduce un concetto chiamato BER (Bit Error Rate) che definisce un controllo sui dati di trasmissione in modo tale da rendere il collegamento il più affidabile possibile. Il controllo degli errori può avvenire in due modalità:
All'interno del sottolivello viene mantenuto anche l'indirizzo MAC univoco del calcolatore che viene inserito insieme a quello del destinatario all'interno del datagramma. Inoltre il sottostato MAC è anche adibito alla gestione dei controlli di inoltro e ricezione dei messaggi su canali condivisi tra più nodi andando a definire quale dei vari nodi ha il controllo della comunicazione. Il modello del frame uscente dal MAC segue all'interno dell'ISO/OSI il formato Ethernet.
Caratteristiche
Possiamo riassumere le caratteristiche di questo strato nei seguenti punti:
- Framing: Codifica rappresentata dall'aggiunta dei delimitatori all'inizio e alla fine di ogni frame cosi da garantire un riferimento del contenuto del messaggio sia per il mittente che per il ricevente.
- Indirizzamento Fisico: Si ha l'inserimento dell'indirizzo MAC del mittente e/o di quello del destinatario in seguito all'aggiunta dei delimitatori.
- Controllo degli errori: In cui si ha la rilevazione e la ritrasmissione dei frame danneggiati cosi da poter recuperare le informazioni coerenti del messaggio.
- Controllo del flusso: Si definisce una velocità che di invio/ricezione del messaggio cosi da evitare che i frame ricevuti o inviati vengano inviati o ricevuti con frequenze differenti
- Controllo degli accessi: Quando si ha la presenza di più nodi sul canale di comunicazione, il sottostato MAC delimita il nodo controllore della comunicazione in modo da poter gestire in maniera centralizzata la comunicazione di un dato momento in un ambiente condiviso o distribuito.
Fino ad ora, sia nello strato fisico che di collegamento si è parlato di trasmissione dati tra due nodi appartenenti ad una medesima rete. Molte reti, però sono formate da varie sottorete collegate tra di loro secondo logiche di routing che permettono di far comunicare due nodi appartenenti a due subnet differenti.
Lo strato di rete si occupa proprio di questo, andando ad ampliare la comunicazione e la trasmissione dati all'interno di una rete di reti.
Uno dei principali problemi che si affronta all'interno dello strato di rete è proprio dato dall'identificazione dei vari nodi. Se parliamo di reti come Internet che hanno un numero sconsiderato di nodi attivi in ogni momento, bisognerebbe adottare dei meccanismi generali in grado di risolvere questo problema. Per la comunicazione tra più reti entra in gioco un dispositivo di instradamento chiamato router. Tale dispositivo viene utilizzato per dividere ogni cammino del pacchetto dati in sottocammini che vengono trasferiti, partendo dal router del mittente, ad una serie di router fino ad arrivare a quello collegato direttamente con la subnet del nodo destinatario.
Ogni router è visto come un nodo, quindi dispone di un proprio indirizzo che lo identifica all'interno della rete e, al suo interno, ha una tabella di routing che serve per orientare la trasmissione andando a mantenere tutti gli indirizzi degli altri nodi collegati e varie informazioni topografiche della rete in cui risiedono. La costruzione di tale tabelle è l'obiettivo finale dei protocolli o algoritmi di routing.
Andiamo ora ad introdurre proprio come queste tabelle di routing vengono definite e gestite attraverso i vari algoritmi di routing disponibili.
Algoritmi di Routing
Il percorso stabilito tramite i vari router sono definiti tramite algoritmi di routing.
Ogni router dispone di varie porte di ingresso e di uscita che ricevono e inoltrano messaggi su vari percorsi possibili. La scelta di tali porte viene definita in un operazione chiamata switching.
Nello strato di rete secondo il modello di datagramma dell'ISO/OSI si ha un instradamento dei pacchetti IP tra vari router. Questo procedimento può essere più semplice da capire andando a porre i router della rete all'interno di un grafo direzionato. Ogni nodo del grafo rappresenta un router, ogni arco che collega due nodi A e B, rappresenta il collegamento tra una porta uscente di un router A con con la porta di ingresso di un router B. In generale, la trasmissione tra due nodi con i rispettivi router di rete può essere vista come la scelta di un cammino tra un nodo A e un nodo B di un grafo.
Dato che in un grafo esistono vari cammini tra due nodi, anche la trasmissione di un pacchetto può usare cammini differenti. Quindi un pacchetto di dati che parte da un nodo di rete A può arrivare ad una destinazione B utilizzando diversi percorsi di routing (Serie di router in cui passa la trasmissione dati).
I percorsi di routing possono avere tempi di latenza di trasmissione differenti dovuti, ovviamente, non solo alla lunghezza del cammino ma anche dal traffico su un particolare router (poiché esso è condiviso tra tutte le trasmissioni in entrata e in uscita su una subnet).
Per questo motivo, lo strato di rete e i relativi algoritmi di routing si concentrano sullo scegliere uno dei percorsi prendono in considerazione il costo di trasmissione cosi da ottimizzare la velocità di trasmissione e ridurre il rischio di corruzione dei dati.
I vari algoritmi di routing possono essere divisi in:
- Statici: Si stabilisce un percorso a priori che deve seguire il pacchetto dall'inizio alla fine della trasmissione. Le tabelle di routing hanno contenuti statici inseriti da un amministratore di rete. Algoritmi di questo genere possono essere efficienti per reti molto piccole ma, in caso si ha un aumento della quantità di reti o di nodi connessi, il suo utilizzo può risultare abbastanza oneroso.
- Dinamici: Il percorso viene deciso dinamicamente andando a definire router-by-router l'instradamento intermedio da scegliere. Anche le tabelle vengono definite dinamicamente secondo il tipo di algoritmo che si sceglie.
Gli algoritmi di routing più importanti sono:
- Flooding: Algoritmo di routing statico. Si stabilisce un contatore dei salti pari al cammino tra il nodo mittente e il nodo destinatario (che ricordiamo può essere definito a priori dato che le tabelle di routing hanno contenuti pre-inseriti). Il pacchetto da inviare viene duplicato tante volte quante sono le porte di uscita del router a cui è collegato il mittente. Ad ogni router intermedio, il contatore dei salti viene decrementato. Se raggiunge lo zero prima di arrivare a destinazione, la copia del pacchetto viene scartata. Il pacchetto arriverà sempre a destinazione nel minor tempo possibile dato che si sceglierà indirettamente il percorso più breve ma genererà un traffico maggiore sulla rete.
- Bellman-Ford: Algoritmo dinamico del 1957, venne adattato già per le prime reti con l'uscita di ARPANET. Anche Internet ha usato un algoritmo basato su Bellman-Ford chiamato, però, RIP (Routing Internet Protocol). L'algoritmo funziona nel seguente modo: ogni router mantiene una tabella di routing chiamata tabella delle distanze o vettore delle distanze; la tabella contiene per ogni destinazione la migliore distanza conosciuta e la linea di uscita da utilizzare; la distanza può essere misurata con vari tipi di metriche, ad esempio il numero di salti (hop), il ritardo in millisecondi o il numero di pacchetti in coda lungo un cammino. Periodicamente i router scambiano la propria tabella delle distanze con i router vicini.
Quando un router riceve da un vicino la sua tabella delle distanze confronta per ogni destinazione la propria distanza con quella stimata dal vicino, a cui viene sommata la distanza rispetto al vicino stesso; se il secondo valore è minore, modifica la tabella di routing inserendo tale valore come distanza e la linea che porta al vicino come linea di uscita.
Il calcolo effettuato da ogni router è molto semplice, dato che un router conosce solo le distanze dalle risorse e non ha informazioni sulla topologia della rete; se ci sono cambiamenti o guasti nella rete si ha necessità di un certo tempo ( chiamato tempo di convergenza) prima che l’algoritmo sia in grado di individuare correttamente il percorso; la convergenza può essere lenta, in particolare per l’individuazione di percorsi non più utilizzabili (che raffigura il cosidetto problema del conteggio all’infinito).
- Link State Routing: Algoritmo dinamico più utilizzato. Ne esiste anche una versione adattata ad internet chiamata OSPF (Open Shortest Path First). All'interno della tabella di routing si hanno informazioni sulla topologia e sul costo di trasmissione (legato alla velocità di trasmissione) che si ha su ogni porta uscente del router preso sotto analisi. Le informazioni vengono definite dinamicamente all'interno delle tabelle tramite dei pacchetti LSP (Link State Packets) che definisce e condivide le informazioni dei router vicini. Ogni router aggiunge alle informazioni contenute nelle tabelle anche dati relativi all'algoritmo per la ricerca del percorso più breve verso una destinazione. I risultati dell'algoritmo andranno ad aggiornare la tabella di routing e adattarla per la trasmissione in corso. Per effettuare questo aggiornamento si fa uso degli LSP che contengono informazioni tra cui:
- Identificativo del mittente
- Numero di sequenza
- Tempo di vita
Quando si verifica un evento di cambiamento di rete, si genera una sequenza di LSP che andranno ad aggiornare le tabelle di routing in relazione all'evento verificato (ad esempio se una subnet va offline per problemi tecnici, bisogna ricalcolare tramite gli LSP tutti i cammini in relazione al router della subnet. Il numero di sequenza serve per identificare il pacchetto LSP, questo perché esso viene diffuso in broadcast su tutta la rete secondo il metodo flooding (quindi tramite anche la creazione di duplicati). Nel caso in cui un duplicato arriva all'interno di una tabella di routing che ha memorizzato precedentemente il numero di sequenza dello stesso LSP, il router ricevente scarta questo pacchetto e riprende il suo normale funzionamento. Quando ogni router della rete ha ricevuto il pacchetto LSP dagli altri router, si può "mappare" un grafo della rete in cui ogni nodo rappresenta un router e ogni arco una linea di trasmissione fisica. Tramite algoritmi che definiscono i cammini minimi di un grafo (come Dijkstra) si stabilisce un cammino tra il nodo mittente e il nodo ricevente. Tale cammino risulterà sempre il più efficace. Il protocollo di routing Link State Routing può variare anche i parametri legati al costo di instradamento su un arco a secondo di quali parametri vengono valutati. Ad esempio, piuttosto che calcolare la velocità di trasmissione di un arco, si può definire una tabella di valori legati alle topologie di cavi utilizzati nel canale di trasmissione o, ancora, all'interferenza media del canale di trasmissione.
Uno dei problemi che è legato alle varie forme di algoritmi di routing è la gestione dei contenuti per le tabelle di instradamento. Per risolvere questo problema si è pensato di attuare il cosiddetto routing gerarchico che non solo riduce la quantità di memoria utilizzata dai router, ma alleggerisce anche la CPU da tutte quelle operazioni di aggiornamento che, nel caso degli algoritmi dinamici, possono risultare non poco onerose.
Tale tecnica prevede la suddivisione della rete in regioni.
Ogni router mantiene le informazioni per tutte le destinazioni all’interno della regione in cui si trova, mentre tutte le altre destinazioni vengono considerate come una sola e i pacchetti vengono inviati ad un router alla periferia della regione, che si occupa dell’instradamento verso le altre regioni (ognuna delle quali considerata come una sola destinazione).
In pratica l’instradamento all’interno di una regione rimane immutato; l’instradamento verso una regione diversa viene suddiviso in tre sottoproblemi: instradamento tra il mittente e la periferia della regione, tra una regione e l’altra e all’interno della regione di destinazione.
I percorsi risultano un po’ più lunghi ma si risparmia molto spazio nelle tabelle di routing.
In sintesi possiamo riassumere le caratteristiche dello strato di rete in:
Routing: i protocolli del livello di rete determinano quale percorso è adatto dall'origine alla destinazione. Questa funzione del livello di rete è nota come routing.
Indirizzamento logico: per identificare in modo univoco ogni dispositivo su internetwork, il livello di rete definisce uno schema di indirizzamento basato su protocolli propri dell'ISO (nella suite TCP/IP verrà poi utilizzato il protocollo IP).
Conclusioni
Credo fermamente che conoscere il primo modello dichiarato standard per le reti di comunicazioni faccia capire meglio molti aspetti dell'informatica, su cosa c'è dietro ad ogni richiesta, su quanto lavoro c'è dietro ad ogni singolo bit e, soprattutto, riuscire ad apprezzare di più l'evoluzione che sta avvenendo nei nostri giorni. L' ISO/OSI è stato anche la base della suite TCP/IP che raffigura il modello di rete su cui si basa Internet. Qualsiasi informatico che voglia diventare un sistemista, un software developer\manager deve conoscere le origini e la struttura logica di questo modello. Inoltre se si riesce a capire il modello ISO/OSI risulterà molto semplice capire la suite TCP/IP (che considero un figlio dell'OSI da cui ha preso quasi tutte le caratteristiche), di capire cosi anche come funziona internet a basso livello e poter arricchirsi culturalmente su uno dei macro-argomenti del nostro campo: Le Reti.
Nota: La maggior parte delle mie conoscenze e di ciò che ho scritto derivano da dei libri di testo. Invito chiunque a leggerli per capire a 360 gradi tutto ciò che raffigura il modello ISO/OSI e approfondire andando a studiare anche il modello TCP/IP. Troverete i pdf dei libri citati comodamente su Google. Vi consiglio di leggerli, sono i migliori per apprendere la base delle reti.
Fonti:
Computer Networks, Book by Andrew S. Tanenbaum Ed. 4
Computer Networks, Book by Andrew S. Tanenbaum Ed. 5
https://en.wikipedia.org/wiki/OSI_model
https://www.iso.org/standards.html
>_ kode