IL LIVELLO DI RETE
I
dispositivi che si occupano della ricerca del percorso e del trasporto dei dati
lungo la rete sono i router (intermediate system), i computer che si
scambiano informazioni vengono chiamati anche host (end system).
Il
livello di rete si occupa principalmente di individuare un percorso tra
un computer mittente e un computer destinazione, e di trasmettere i pacchetti
dalla sorgente alla destinazione attraversando diversi router.
La
ricerca del percorso (routing) si basa su una tabella di instrad 939j99j amento. Il
livello di rete deve fare in modo di non sovraccaricare parte dei router o
linee (controllo della congestione) e risolvere problemi di comunicazione fra
reti diverse (internetworking). Non solo gli host ma anche i router devono
avere un indirizzo. L’assegnazione degli indirizzo può
avvenire manualmente o dinamicamente.
I
protocolli instradati preparano i pacchetti incapsulando le informazioni
che arrivano dai livelli superiori e trasportano i pacchetti a destinazione
(per esempi IP).
I
protocolli di instradamento sono usati dai router per individuare i
percorsi, comunicare le informazioni sui percorsi scoperti ad altri router, e
inoltrare i pacchetti di protocollo instradato lungo quei percorsi.
Altri
protocolli ausiliari sono quelli di controllo, usati dai router per esempio per
stabilire se la destinazione è attiva o per controllare la congestione. I
router operano soprattutto a livello di rete (hanno i 3 livelli inferiori) e
usano i protocolli di instradamento e di controllo.
Se
il livello di rete è non connesso il compito della rete è solo quello di
trasportare i pacchetti (datagram) che devono contenere ognuno l’indirizzo di destinazione e possono seguire percorsi
diversi e arrivare in modo non ordinato (o non arrivare affatto), i controlli
spettano ai livelli superiori.
Se il livello di rete è connesso il percorso
viene scelto al momento della connessione e il traffico scorre su essa, in modo
ordinato (le connessioni sono chiamate circuiti virtuali). I servizi connessi
richiedono una fase di creazione del circuito che richiede tempo ma si evitano
le congestioni; nei servizi non connessi bisogna calcolare un percorso per ogni
pacchetto, in caso di guasto vanno persi solo i pacchetti in coda al router,
gli altri seguiranno un percorso diverso.
Gli algoritmi di routing sono eseguiti dai
router per decidere su quale linea di output trasmettere i dati in ingresso. La
maggior parte degli algoritmi utilizza una tabella di routing e possono essere adattativi
(se modificano le decisioni secondo i cambiamenti della topologia o del
traffico) o non adattativi (routing statico). La rete può essere vista
come un grafo in cui le stazioni sono i nodi e le linee le comunicazioni fra le
stazioni. L’insieme dei cammini ottimali forma un albero con radice nella
destinazione chiamato sink tree.
Il routing statico richiede la
configurazione da parte dell’amministratore di rete delle tabelle di routing di
tutti i router, in caso di guasti bisogna aggiornare manualmente le tabelle,
vanno bene per reti piccole. Una variante è segnare per ogni stazioni più
alternative.
Con il flooding ogni router invia ogni
pacchetto su tutte le linee di uscita (eccetto quella da cui ha ricevuto). Il
flooding genera un numero di pacchetti duplicati, per ovviare a questo si
inserisce un contatore di salti, ad ogni salto il contatore viene decrementato
e quando raggiunge 0 viene scartato. Genera molto traffico ma il pacchetto
arriva sempre nel minor tempo possibile (usa tutti i percorsi possibili). Il
flooding selettivo cerca di ridurre il traffico inviando pacchetti solo su
linee approssimativamente nella direzione giusta.
Gli algoritmi adattativi possono essere di tipo
isolato, centralizzato e distribuito.
Negli algoritmi isolati le decisioni vengono
prese da ogni router indipendentemente, senza conoscere la rete. Esempio la
patate bollente trasmette sulla rete il pacchetto con la coda più breve.
Gli algoritmi centralizzati si basano sull’esistenza
di un router di controllo chiamato RCC (rounting control center) che tutti gli
altri router interpellano per chiedere il percorso ottimale. RCC conosce la
topologia della rete perchè riceve informazioni da ogni nodo e può costruire
tabella e grafo. Quando una stazione deve aprire una connessione manda una
richiesta a RCC con il proprio indirizzo e quello di destinazione e RCC fonisce
informazioni sul percorso da seguire.
Gli algoritmi distribuiti permettono ai
router di scambiarsi informazioni sulla rete per costruire le tabelle. Ogni
router può conoscere i router vicini e la distanza delle linee. La scoperta dei
vicina può essere fatta mandando su ogni linea un pacchetto di hello, il router
dall’altro capo manda una risposta di dicendo chi è. La distanza può essere per
esempio un salto.
Nell’algoritmo Distance vector routing ogni
router mantiene una tabella delle distanze che contiene per ogni destinazione
la migliore distanza conosciuta (numero di salti, millisecondi) e la linea di
uscita da utilizzare. Periodicamente i router si scambiano la propria tabella
delle distanze con i router vicini; quando un router riceve la tabella del
vicino confronta per ogni destinazione la propria distanza con quella stimata
dal vicino sommando la propria distanza da esso e controllando se la nuova
distanza è migliore di quella vecchia. Il router conosce solo le distanze dalle
risorse e non ha informazioni sulla topologia della rete, se ci sono guasti e
necessario un po’ di tempo (convergenza) prima che sia in grado di individuare
correttamente il percorso.
Nell’algoritmo Link state routing ogni
router mantiene un database che descrive la topologia della rete e le distanze
in base a varie metriche. Le informazioni vengono ottenuto scambiando con tutti
gli altri router dei pacchetti (LSP - link state packets) che contengono
informazioni sui router vicini. Il router costruisce un LSP con l’elenco dei
vicini e la distanza da ogni vicino, il pacchetto contiene anche l’identità del
mittente, un numero di sequenza e un tempo di vita. I pacchetti possono essere
ricostruiti ad ogni evento. Il router spedisce il pacchetto a tutti i router
con il flooding, il router che lo riceve tiene traccia del numero di sequenza,
se è nuovo lo memorizza e lo ritrasmette in flooding, ad ogni salto il tempo di
vita viene decrementato, quando arriva a 0 viene scartato. Quando un router ha
ricevuto i pacchetti LSP da tutti gl altri router può costruirsi un grafo della
rete in cui ogni nodo rappresenta un router e ogni arco una linea, lavorando
sul grafo può calcolarsi il percorso minimo. L’algoritmo più noto per la
ricerca del cammino minimo è l’algoritmo di Dijkstra: dato un nodo
iniziale x l’algoritmo permette di calcolare i cammini minimi visitando i nodi
del grafo provando i possibili cammini. L’insieme dei nodi del grafo è diviso
in tre parti, quelli visitati (v), di frontiera (f) e ancora da visitare. Per
ogni nodo i si tiene traccia della distanza minima di calcolata fino a quel
momento dal nodo di partenza (inizialmente a infinito) e di un nodo pi
(inizialmente indefinito) che rappresenta il nodo precedente da attraversare.
Inizialmente v è vuoto, f è costituito dal nodo di partenza x e la sua distanza
minima è 0. L’algoritmo procede prendendo tra i nodi non ancora visitati il
nodo j che ha la distanza più piccola dal nodo di partenza spostandolo tra i
nodi visitati, per tutti i nodi di frontiera si ricalcola la distanza minima e
la somma tra le distanza per arrivare al nodo e il peso dell’arco seguito per
arrivare al nodo, se la distanza viene modificata si aggiorna l’ultimo p
mettendo l’ultimo nodo attraversato. Si continua finché l’insieme dei nodi di
frontiera resta vuoto.
Con il routing gerarchico la rete viene
suddivisa 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 viste come una sola direzione verso un router di
periferia, che si occupa dell’instradamento verso le altre regioni (ognuna
considerata come un‘unica destinazione). Ci possono essere anche più livelli
gerarchici.
La comunicazione tra reti che non usano lo stesso
protocollo instradato si chiama internetworking. i tunnel vengono usati
quando la stazione mittente e destinatario usano lo stesso protocollo, ma
bisogna attraversare una regione della rete che ne usa uno diverso; i pacchetti
spediti dal mittente vengono incapsulati in pacchetti riconosciuti dalla rete
con protocollo diverso, al confine opposto viene aperto e il pacchetto
originale può arrivare a destinazione. Il gateway è un dispositivo, al confine
fra due regioni che usano protocolli diverse, che converte il formato usato in
un protocollo nel formato usato dall’altro protocollo. Inoltre il gateway deve
essere in grado di convertire l’indirizzo di rete. Un altro problema è quello
della dimensione massima dei pacchetti. Per risolvere questo problema si usa la
frammentazione del pacchetto da parte router; ogni frammento conterrà
intestazione, numero del pacchetto e numero del frammento ed eventuale
indicazione di ultimo frammento. La ricomposizione dei pacchetti può avvenire
da parte del router se questi escono tutti dallo stesso router, oppure se ne è
in grado dall’host.