back to top

Processo di routing e algoritmi di Routing

In questo articolo faremo una rapida โ€“ ma completa โ€“ panoramica sugli algoritmi di routing implementabili nel livello di rete, ma prima di iniziare questa analisi รจ necessario capire cosa si intende con la parola routing.

In linea generale, il routing รจ la funzione di instradamento svolta da un commutatore il cui compito consiste nel decidere dove inviare un dato elemeto di una comunicazione.

Pubblicitร 

Questa funzione รจ normalmente implementata in dispositivi di rete detti router che lavorano, appunto, al livello rete al fine di gestirne i flussi di traffico. Oltre alle fuznionalitร  specifiche di inoltro, i Router possono svolgere diversi altri compiti, ad esempio:

  • integrare funzionalitร  di Access Point (nel caso si trovasse in una rete Wi-Fi);
  • svolgere funzioni di filtro mediante lโ€™implementazione di firewall interni per lโ€™analisi del traffico.

Per quanto riguarda la funzione di routing (in senso stretto) possiamo fare unโ€™analogia con il sistama postale: affinchรจ una lettera venga recapitata con successo al destinatario abbiamo bisogno di conoscerne nome e cognome ed indirizzo; oltre a queste informazioni, perรฒ, un centro di smistamento postale avrร  bisogno di conoscere anche altri dati riguardanti, ad esempio, la situazione die centri postali limitrofi, ad esempio per sapere se un dato centro postale รจ chiuso o intasato al fine di cercare un percorso alternativo per la consegna della missiva. Anche il processo di routing, necessariamente, ha bisogno di alcune informazioni: indispensabile lโ€™indirizzo IP del destinatario del pacchetto, ma รจ anche necessario conoscere lo stato dei router adiacenti per capire se un cammino รจ interrottto, troppo congestionato ed eventualmente scegliere un percorso alternativo. Il router quindi, acquisite le informazioni dagli altri router, creerร  delle tabelle di routing (nel caso in cui venga implementato un algortimo di routing con tabella) dove verranno inseriti i cammini piรน convenienti per collegare una generica sorgente con una generica destinazione.

Distinguiamo due scenari possibili per quanto riguarda il processo di routing:

Routing statico e routing dinamico

Fino a questo momento abbiamo visto cosโ€™รจ e come viene compiuto il processo di routing. A questo punto diventa fondamentale effettuare un distinguo tra routing statico e routing dinamico. La differenza tra queste due tipologie รจ nel modo in cui viene creata la tabella di routing per ogni singolo router della rete. Come vedremo piรน avanti lโ€™implementazione del routing statico puรฒ essere adatto a reti piccole, mentre se si vuole creare una rete di una certa dimensione si deve necessariamente implementare il routing dinamico.

Routing statico

In questa implementazione si ha che le righe costituenti la tabella di routing vengono inserite manualmente dallโ€™amministratore di rete che crea dei percorsi fissi tra generiche sorgenti e generiche destinazioni.

Eโ€™ evidente che questa tipologia di routing รจ improponibile in reti di grosse dimensioni in quanto lโ€™amministratore di rete dovrebbe scrivere migliaia di righe in ogni tabella dei router presenti nella rete. Un altro problema che affligge questa tipologia รจ quello della possibile rottura di un collegamento tra due host: dato che i router non si scambiano pacchetti per aggiornare dinamicamente le proprie tabelle di routing, avremo che il router non avrร  modo di capire che un certo collegamento รจ guasto e quindi continuerร  ad inviarvi pacchetti con unโ€™evidente inefficienza della rete. A questo punto dovrร  intervenire nuovamente lโ€™amministratore di rete e riconfigurare, scegliendo un percorso alternativo, la tabella di routing.

Questa tipologia ha anche un grande vantaggio, ovvero quello del ridotto consumo di banda da parte dei router dato che questโ€™ultimi non scambieranno nessun pacchetto per creare le proprie tabelle di routing. Dal punto di vista della sicurezza questa tiplogia รจ estremamente sicura in quanto per ogni nodo si ha un solo punto dโ€™ingresso e un solo punto dโ€™uscita e ciรฒ rende difficile la possibilitร  di introdursi, in maniera illegale, nella rete. Inoltre, dato che non รจ richiesto nessuno sforzo computazionale per calcolare il percorso a costo minimo, รจ possibile, se si vuole implementare questa tipologia di routing, fare affidamento a router a basso costo e quindi adatti per gestire reti domestiche e piccole aziende.

Routing dinamico

Questa tipologia di routing รจ praticamente lโ€™antitesi della tipologia di routing statico visto prima. In questo caso le tabelle di routing vengono aggiornate in maniera dinamica da ogni router e non cโ€™รจ piรน bisogno della presenza di un amministratore di rete che configuri i vari cammini.

I router si scambiano dei pacchetti di dimensione, struttura e informazioni diverse a seconda del tipo di algoritmo di routing che andranno ad implementare. Eโ€™ evidente che parte della banda, su tutti i collegamenti, verrร  occupata dallo scambio, molto frequente, di aggiornamenti sullo stato della rete per ottimizzare maggiormente la scelta dei percorsi.

Questa tipologia di routing ha il vantaggio di poter essere implementata in reti di garndi e grandissime dimensioni e che รจ reattiva alla rilevazione dei guasti: infatti nel caso in cui un cammino subisca un guasto, quando un router si accorge di questo problema, riconfigurerร  la propria tabella di routing cercando percorsi alternativi.

Inoltre lโ€™utilizzo della rete รจ maggiormente ottimizzato in quanto, se viene rilevato un congestionamento di un certo cammino, il traffico puรฒ essere convogliato su altri percorsi che hanno volumi di traffico minori.

Dal punto di vista della sicurezza, perรฒ, questa tipologia รจ piรน vulnerabile ad attacchi rispetto al routing statico: immaginiamo cosa potrebbe succedere se un malintenzionato mandasse pacchetti di aggiornamento fasulli, verso i router, con lโ€™obiettivo di saturare alcuni canaliโ€ฆ Eโ€™ evidente che dunque la sicurezza deve essere garantita in un altro modo implementando un sistema di riconoscimento dei pacchetti per riuscire a capire se il pacchetto ricevuto sia prodotto da un router o da un malintenzionato.

Algoritmi di routing e classificazione

Come accennato precedentemente esistono vari tipi di algoritmi di routing piรน o meno performanti. Un modo per identificare vantaggi e svantaggi, รจ definire dei criteri precisi di valutazione che sono la base per lโ€™analisi di un algoritmo. I criteri di valutazione e confronto sono sostanzialmente i seguenti:

  • Semplicitร : per quanto riguarda la realizzazione e lโ€™implementazione nei dispositivi.
  • Robustezza: lโ€™algoritmo deve sapere reagire in maniera positiva e autonoma a particolari perturbazioni. Piรน precisamente lโ€™algoritmo non deve subire penalizzazioni, per quanto riguarda lโ€™efficienza, se avvengono degli errori o cambiamenti di metrica (che spiegheremo piรน avanti) allโ€™interno della rete. Un buon algoritmo di routing deve rilevare autonomamente se sono presenti degli errori, per esempio un mal funzionamento di un nodo, ed adattarsi di conseguenza.
  • Stabilitร : lโ€™algoritmo dovrร  convergere ad una situazione che garantisca la stabilitร . In particolare se avvengono errori allโ€™interno della rete che allontanano lโ€™algoritmo del punto di stabilitร , lโ€™algoritmo deve reagire velocemente a questa situazione e riuscire a convergere nuovamente alla stabilitร  nel minor tempo possibile.
  • Ottimalitร : questo parametro viene valutato seguendo opportuni criteri.

I quattro criteri di valutazione, a volte, possono trovarsi in contrapposizione tra di loro: lavorando sullโ€™ottimizzazione, ad esempio, viene compromessa, di fatto, la semplicitร , in quanto lโ€™algoritmo ottimizzato solitamente รจ piรน complesso rispetto a quello non ottimizzato.

Diciamo che gli obiettivi principali da raggiungere sono la robustezza e la stabilitร  dellโ€™algoritmo ed in un secondo momento riuscire ad avvicinarsi il piรน possibile allโ€™ottimalitร , per quanto riguarda le prestazione, senza perรฒ minare sensibilmente la semplicitร  di implementazione.

Gli algoritmi di routing, a seconda della loro implementazione, possono essere classificati nel modo seguente:

  • Algoritmi con tabella: Un nodo che implementa un algoritmo di questa famiglia memorizza, per ogni richiesta di instradamento in ingresso, la linea in uscita che deve essere utilizzata.
  • Algoritmi senza tabella: Questo tipo di algoritmi non prevedono abbinamenti ingresso-uscita predefiniti, ma sono di tipo reattivo, cioรจ attivati solo su richiesta, quando necessario.
  • Algoritmi centralizzati: Prevedono esclusivamente lโ€™uso di tabelle e hanno una unitร  di elaborazione dellโ€™algoritmo centralizzata.
  • Algoritmi distribuiti: Prevedono unโ€™esecuzione dellโ€™algoritmo in maniera distribuita a volte detta cooperativa. Anche in questo caso si prevede lโ€™uso di tabelle.
  • Algoritmi isolati: Tipicamente rivolti a realizzazioni senza tabella. Prevedono lโ€™esecuzione in locale (stand-alone) dellโ€™algoritmo.

A questo punto รจ necessario, ai fini della comprensione delle pagine seguenti, introdurre il concetto di metrica. Sostanzialmente con questo termine si intende classificare un certo percorso cosรฌ da capire quale sia il piรน conveniente. Vengono cosรฌ introdotti due parametri fondamentali per la metrica che sono gli Hops (che rappresentano il numero di nodi intermedi attraversati nel percorso mittente-destinatario) e il costo (che rappresenta il costo totale del cammino ovvero la somma dei costi di ogni singola interconnessione tra due nodi intermedi attraversati). Solitamente il costo di un percorso รจ inversamente proporzionale alla velocitร  di trasmissione e, quindi, interconnessioni che garantiscono velocitร  di trasmissione molto alte avranno un costo molto basso.

Lโ€™obiettivo principale degli algoritmi di routing che ricerchino lโ€™ottimo รจ quello di minimizzare il costo del percorso.

Algoritmi di routing senza tabella

In questa lezione cerchiamo di analizzare, in maniera piรน approfondita, gli algoritmi di instradamento evidenziandone pregi e difetti.

Algoritmi senza tabella: Random

Eโ€™ una tecnica semplice e robusta: ogni richiesta di inoltro in ingresso viene selezionata in maniera casuale (random) una delle possibili uscite. Eโ€™ robusta perchรจ se si rompe una linea il tutto continua a funzionare in maniera corretta, semplicemente non verrร  esclusa dalle pussibili uscite la linea rotta. Anche se robusto, questo tipo di algoritmo non รจ ottimo in quanto tutte le linee di uscite vengono considerate con lo stesso costo senza tenere traccia del congestionamento della rete. Questo fa si che se si ha unโ€™uscita altamente congestionata e, dato la scelta casuale, viene scelta proprio quella linea si avrร  un ritardo ancora maggiore. Questo algoritmo, semplicissimo da implementare, puรฒ portare ad evidenti problemi di gestione di reti con alto traffico.

Algoritmi senza tabella: Source Routing

In questo tipo di algoritmo il percorso che deve seguire il pacchetto รจ giร  inserito nellโ€™header del pacchetto stesso. In questo caso, dunque, ipotizzando di dover inviare un messaggio da un nodo A ad un nodo B, il nodo A scriverร  nel pacchetto il percorso che dovrร  seguire (scriverร , per esempio, che dovrร  passare dal router 1, poi dal router 2 ed infine al router 3 che inoltrerร  il pacchetto al nodo B). In questo modo quindi il router che riceverร  il pacchetto non compierร  nessuna operazione di gestione, ma si limiterร  ad inoltrare il pacchetto verso il router indicato nellโ€™header del pacchetto.

Questo algoritmo รจ poco utilizzato in quanto non รจ assolutamente affidabile dato che il nodo A, non conoscendo la topologia della rete, non puรฒ sapere se un certo collegamento รจ interrotto (con conseguente perdita del pacchetto) o congestionato. Questo tipo di algoritmo, oltre ad essere inaffidabile รจ molto pericoloso per quanto riguarda la sicurezza della rete: se un malintenzionato avesse come obiettivo lโ€™intasamento di un certo percorso, basterร  che il malintenzionato crei un alto volumi di pacchetto inserendo il percorso da congestionare nellโ€™header di ogni pacchetto. Per questo motivo i router presenti nella rete Internet, per garantire la sicurezza della rete, scartano a priori pacchetti nei quali รจ giร  inserito il percorso da seguire.

Algoritmi senza tabella: Flooding

Il principio su cui si basano questi algoritmi รจ perfettamente coerente con la sua definizione. Viene semplificata ancora di piรน lโ€™implementazione dellโ€™algoritmo in quanto ogni richiesta di inoltro presente sugli ingressi viene ripetuta su tutte le uscite. Sicuramente รจ una tecnica robusta (รจ utilizzata in diverse applicazioni militari) e ottima, ma in questo caso, lโ€™ottimo non viene raggiunto in maniera efficiente.

Questa tecnica, tuttavia, soffre di una carenza operativa molto importante: operando con questa politica si rischia di congestionare rapidamente la rete. Un possibile rimedio a questo problema รจ lโ€™introduzione di un campo nel pacchetto che porta il valore massimo delle volte che puรฒ essere ripetuto nella rete. Ogni volta che uno stesso pacchetto viene ripetuto, il campo viene decrementato di una unitร  e se un nodo riceve un pacchetto con il valore di questo campo a zero il pacchetto viene scartato.

Algoritmi di routing con tabella: Distance Vector

Analizziamo adesso i protocolli di routing con tabella (che sono quelli che implementati nelle reti Internet).

Il primo algoritmo con tabella che vedremo รจ lโ€™algoritmo Distance Vector o vettore delle distanze. Questo tipo di algorimo ha una struttura abbastanza semplice e permette, al termine dellโ€™algoritmo, di individuare il percorso tra una qualsiasi sorgente e una qualsiasi destinazione a costo minore. Chiramente questo algoritmo non รจ esente da problemi che lo affliggono in situazioni particolari che perรฒ vedremo piรน avanti.

Lโ€™implementazione di questo algoritmo รจ di tipo collaborativo dato che ogni nodo definisce in maniera autonoma la propria tabella di routing che poi viene pubblicata agli altri nodi connessi. Gli altri nodi connessi, analizzando la tabella di routing pubblicata dai nodi adiacenti, potranno aggiornare la propria tabella con percorsi a costo minore.

In questo algoritmo ogni nodo dispone di una tabella che associa ad ogni possibile destinazione un percorso mediante la specifica del nodo vicino (next-hop).

Vediamo adesso con un esempio chiarificatore di come opera lโ€™algoritmo:

Dunque, come abbiamo detto, i nodi A, B e C creeranno le proprie tabelle di instradamento che poi pubblicheranno ai nodi adiacenti i quali valuteranno la presenza di percorsi a costo minore. Per il nostro esempio terremo in considerazione le tabelle dei nodi A e B. Inizialmente la tabella dei cammini di A sarร  la seguente:

DestinazioneCostoNext-Hop
A0โ€“
B1B
C3C


Mentre quella dei cammini di B รจ la seguente:

DestinazioneCostoNext-Hop
A1A
B0โ€“
C1C


I due nodi (A e B) pubblicano la propria tabella.

Nella trattazione del nostro esempio ci poniamo dal punto di vista del nodo A. Questโ€™ultimo nota che se volesse inviare un pacchetto direttamente a C quel percorso avrebbe un costo 3 mentre seguendo il percorso A-B-C questโ€™ultimo avrebbe costo pari a 2. Dunque essendo il percorso A-B-C minore rispetto al percorso diretta A-C, il nodo aggiornerร  il record relativo al percorso inserendo il cammino piรน vantaggioso.

In questo modo, anche allโ€™interno di reti molto grandi, ogni nodo riuscirร  a trovare il percorso a minima distanza anche se sorgente e destinazione si trovino a distanza notevoli.

Come detto precedentemente questo tipo di algoritmo soffre di un problema noto in caso di guasti su alcuni cammini della rete. Andiamo adesso, per meglio chiarire questo problema, a discutere lโ€™esempio mostrato in figura:

Quando un collegamento si guasta convenzionalmente il costo del cammino risulta pari ad infinito e, di fatto, il nodo รจ irraggiungibile. Il nodo A pubblica la nuova tabella, aggiornando il costo del collegamento A-X e si suppone che prima che il nodo B riceva lโ€™aggiornamento dal nodo A il nodo B abbia pubblicato la propria tabella di instradamento nella quale viene dichiarato che X รจ raggiungibile dal nodo B con costo 6. Di conseguenza il nodo A ritiene raggiungibile X tramite il nodo B quando in realtร  non lo รจ. Questo รจ un grosso problema in quanto, se ipotizziamo malfunzionamenti diffusi nella rete, questโ€™ultimi porterebbero ad un numero di pacchetti persi molto elevato, minando cosรฌ lโ€™affidabilitร  dellโ€™intera rete. Eโ€™ chiaro che se si ricerca una buona affidabilitร  della rete queste problematiche devono essere risolte e ciรฒ lo si fa utilizzando principalmente la tecnica di Split Horizon.

Questa tecnica, che complica un poโ€™ lโ€™algoritmo base del Distance Vector, fa si che il router scinda le informazioni in suo possesso in due parti:

  • le informazioni ricevute da parte dei nodi vicini;
  • e le informazioni "proprie" che egli stesso notifica ai nodi vicini.

Ciascun router, nellโ€™inoltrare le proprie tabelle di routing ai vicini, omette per ciascun vicino gli specifici percorsi appresi da quel router. Sostanzialmente viene previsto lโ€™aggiornamento solo per i cammini che non interessano il nodo di destinazione. Per chiarire meglio questo concetto affidiamoci allโ€™esempio riportato in figura:

Come possiamo vedere ci sono tre nodi connessi in maniera lineare. Il nodo 1 dunque puรฒ raggiungere il nodo 3 passando per il nodo 2 con un certo costo. Quando il nodo 1 pubblica la sua tabella di routing ometterร  di poter raggiungere il nodo 3 attraverso il nodo 2 dato che questa informazione, per il nodo 2, comporterebbe il passaggio per se stesso (immaginiamo che il nodo 2 voglia comunicare verso il nodo 3, non avrebbe senso il percorso 2-1-2-3). Oltre ad evitare cammini ciclici, questa tecnica permette anche di risolvere il problema, visto prima, del guasto di un collegamento: supponiamo che il collegamento tra il nodo 2 e il nodo 3 si interrompa per un generico guasto, se non venisse adottata la tecnica di split horizon il nodo 2 vedrebbe raggiungibile il nodo 3 attraverso il nodo 1 compiendo il cammino 2-1-2-3 che in questo caso, oltre a non avere senso, รจ anche scorretto in quanto il collegamento 2-3 non รจ funzionante.

Protocolli di instradamento RIP e IGRP

Nella pagina precedente abbiamo descritto il funzionamento dellโ€™algoritmo Distance Vector che, sostanzialmente, si basa sulla pubblicazione delle tabelle dโ€™instradamento ai nodi adiacenti per cercare i percorsi a costo minore.

In questa sezione analizzeremo in che modo vengono "trasportate" queste informazioni e, piรน precisamente, analizzaremo il protocollo dโ€™instradamento RIP e il protocollo di instradamento IGRP utilizzati dallโ€™algoritmo Distance Vector.

Protocollo di instradamento RIP

Questo protocollo รจ stato il primo ad essere sviluppato nel 1982. In seguito รจ stata proposta una seconda versione, denominata RIP2, che consente di trasmettere un numero maggiore di informazioni. Il RIP รจ molto diffuso in Internet e la sua caratteristica principale รจ quella di basare la sua metrica sullโ€™Hop Count (ovvero il conteggio dei numeri dei salti tra i vari router prima di raggiungere la destinazione). Gli update relativi ad ogni router sono settati, di default, a 30 secondi e comportano la trasmissione โ€“ per intero! โ€“ della tabella di routing agli altri router. Questo fa si che in reti in cui il mezzo trasmissivo non รจ di alta qualitร , dato che il protocollo RIP genera volumi di traffico abbastanza elevati, si abbia una saturazione della banda dovuta agli update delle tabelle.

Come visto precedentemente, in una procedura di instradamento di un pacchetto, si puรฒ incorrere in percorsi ciclici e quindi il RIP, per risolvere questo problema, pone un Hop Count massimo di 15, ovvero un pacchetto non potrร  passare per piรน di 15 router prima di arrivare a destinazione.

Eโ€™ interessante analizzare anche la struttura di un generico pacchetto RIP che possiamo vedere in figura:

Facciamo adesso una rapida analisi dei campi del pacchetto:

  • Command: Questo campo indica la tipologia del pacchetto, ovvero se รจ un pacchetto di request, che รจ un pacchetto inviato da un router ad un altro per richiedere la routing table, oppuere se รจ un pacchetto di response, che รจ un pacchetto che fa riferimento ad un normale update della tabella di routing o generato in risposta ad un pacchetto di request.
  • Versione: Indica la versione del protocollo.
  • Zeros: Progettato per usi futuri.
  • Address Family Identifier: Indica il tipo di indirizzo che verrร  espresso in relazione alla struttura della rete in cui รจ implementato il RIP. Nello standard TCP/IP lโ€™indirizzi saranno indirizzi IP.
  • IP Address: Indica lโ€™indirizzo IP della rete di destinazione.
  • Metrica: In questo campo viene inserito il valore della metrica.

Protocollo di instradamento IGRP

Questo tipo di protocollo nasce per migliorare alcuni aspetti del RIP ed รจ un protocollo prorietario sviluppato dalla CISCO. Le caratteristiche principali di questo protocollo sono: una maggiore scalabilitร  (in quanto lโ€™hop count puรฒ salire fino al valore di 255), utilizzo di una metrica complessa che viene costruita sullโ€™analisi di diversi fattori (che vedremo piรน avanti) e la possibilitร  di inserire nella tabella di ruting percorsi multipli per poter gestire il traffico in maniera piรน effciente.

Come accennato, questo protocollo usa un calcolo della metrica abbastanza complesso basato fondamentalmente su i fattori seguenti:

  • Banda: Questo valore indica la larghezza di banda di una certa connessione e viene inserita durante la fase di cofigurazione. Qesto valore รจ abbastanza indicativo dato che non รจ detto che il valore indicata necessariamente rispecchi la reale larghezza di banda della connessione a cui fa riferimento.
  • Affidabilitร : Eโ€™ un valore che indica lโ€™affidabilitร  di un certo collegamento. Questo valore รจ calcolato come il rapporto tra i pacchetti giunti a destinazione in maniera corretta e quelli giunti a destinazione con errori. Nel calcolo della metrica questa campo ha un peso notevole.
  • Carico: Indica il volume di traffico presente in un certo percorso al momento della rilevazione.
  • Ritardo: Eโ€™ un valore che indica il tempo trascorso per attraversare il collegamento. Chiaramente questo valore รจ variabile e dipende dal livello di congestione del collegamento.

Per quanto riguarda il funzionamento dellโ€™update questo รจ identico a quello usato dal RIP, soltanto che nel IGRP la periodicitร  degli aggiornamenti รจ pari a 90 secondi.

Come possiamo vedere il protocollo IGRP รจ superiore, per quanto riguarda lโ€™ottimizzazione delle decisioni di instradamento, rispetto al RIP ma se questโ€™ultimo รจ uno standard open il primo รจ uno standard proprietario e quindi รจ utilizzabile solamente dai router prodotti dalla Cisco.

Algoritmo con tabella Link State

Altro impotante algoritmo di instradamento che fa uso di tabelle รจ lโ€™algoritmo Link State. Questo tipo di algoritmo รจ significativamente diverso rispetto al Distance Vector in quanto ogni nodo ha una visione completa della topologia della rete.

Avendo a disposizione la topologia dellโ€™intera rete, con i costi relativi per ogni cammino, รจ possibile ricavare il percorso a costo minimo in maniera piรน diretta e non come avveniva con il Distance Vector sfruttando la pubblicazione delle tabelle di routing dei router adiacenti.

Vediamo adesso come viene creata la topologia della rete riassumendo il procedimento negli step seguenti:

  1. Nella fase iniziale, detta fase di start-up o inizializzazione, ogni router rileva i percorsi verso gli altri router adiacenti con il relativo costo.
  2. Le informazioni raccolte da ogni router vengono inviate in broadcast, ovvero a tutti i router conosciuti e connessi alla stessa rete, utilizzando pacchetti Link State
  3. Quando un router riceve un pacchetto LInk State, prima di analizzarlo, controlla il numero di sequenza e a seconda del valore presente compie unโ€™operazione. Nel caso in cui il numero di sequenza sia maggiore rispetto a quello dellโ€™ultimo pacchetto ricevuto il router capisce che il pacchetto รจ un reale aggiornamento e quindi processa le informazioni e memorizza i dati. Se invece il numero di sequenza del pacchetto รจ minore rispetto allโ€™ultimo ricevuto presumibilmente il router mittente non ha ricevuto un aggiornamento (magari perchรจ il pacchetto รจ andato perduto), quindi il router destinazione invia il contenuto dellโ€™ultimo pacchetto che ha ricevuto il router mittente. Infine se il numero di sequenza รจ invariato semplicemente il pacchetto viene scartato dato che le informazioni sono giร  state processate precedentemente. Alla fine tutti i router avranno a disposizione un database che sostanzialmente racchiude la topologia della rete.

A questo punto ogni router ha tutte le informazioni necessarie per calcolarsi, in maniera autonoma, i percorsi a costo minimo tra una generica sorgente e una generica destinazione. Questo calcolo viene effettuato utilizzando uno degli algoritmi shortest path first (SPF); in particolare viene utilizzato lโ€™algoritmo di Djkstra. Questo algoritmo opera su grafi, ovvero un insieme di nodi collegati tra di loro da archi, che hanno costi positivi per ogni collegamento. Questa restrizione a costi positivi รจ logica in quanto non avrebbe senso imporre il costo di un certo cammino tra due router per esempio pari a -2. In questo algoritmo, implementato dal Link State, abbiamo che i nodi del grafo sono rappresentati dai router e gli archi che collegano i nodi rappresentano il percorso tra due router direttamente connessi. Il grafo dellโ€™intera topologia della rete viene costruito partendo dalle informazioni contenute allโ€™interno del database che ogni router possiede. La complessitร  dellโ€™algoritmo di Dijkstra รจ quadratica, ma risulta comunque un algoritmo molto efficiente per lโ€™individuazione di percorsi a costo minimo.

Riassumendo il protocollo Link State รจ molto piรน complesso per quanto riguarda lโ€™implementazione rispetto allโ€™algoritmo Distance Vector, ma riesce a gestire reti molto complesse, cosa che non riesce a fare il Distance Vector. Questa complessitร  dellโ€™algoritmo porta a delle criticitร  dal punto di vista dellโ€™implementazione nei router principalemnte per i seguenti fattori:

  • Memoria: La conoscenza completa della topologia della rete necessita la presenza, allโ€™interno del router, di unitร  di memoria abbastanza corposi.
  • Capacitร  computazionale: Eโ€™ necessario, per lโ€™operazione di ricerca del percorso a costo minimo, che il router sia equipaggiato da un processore che abbia una notevole capacitร  di calcolo. Infatti nel caso in cui la capacitร  di calcolo non sia sufficiente, avremo che i pacchetti, in attesa dellโ€™instradamento, si accumulino nella coda del router generando ritardi anche consistenti.
  • Banda: La fase di start-up richiede una banda suffiente a supportare volumi di traffico consistenti in quanto in questa fase tutti i router mandano in broadcast le proprie informazioni.

In sostanza i router che implementano il Link State sono router di qualitร  molto superiore rispetto ad altri che sono in grado di implementare solo il Distance Vector.

Clicca qui Passa anche tu a Sky Wifi e non ci pensi piรน.Scopri la promo
  • Mittente e destinatario sono situati nella stessa rete โ€“ Il router leggendo il pacchetto si accorge che la destinazione si trova nella rete da lui gestita e quindi semplicemente inoltrerร  il pacchetto verso la destinazione.
  • Mittente e destinazione sono situati su reti diverse โ€“ In questa situazione le cose si complicano perchรจ lโ€™instradamento non รจ immediato. Il router che serve la rete del mittente si accorge che il pacchetto non รจ indirizzato a nessuno degli host a lui connessi. A questo punto il router controlla la sua tabbella di routing e inoltra il pacchetto al router indicato nella tabella. Questo processo di inoltro del pacchetto tra vari router prosegue finchรจ il pacchetto non raggiunge il router che serve la rete di destinazione. A questo punto questโ€™ultimo si accorge che il pacchetto รจ indirizzato ad uno dei suoi host connessi e semplicemente inoltra il pacchetto direttamente allโ€™host di destinazione.

Routing statico e routing dinamico

Fino a questo momento abbiamo visto cosโ€™รจ e come viene compiuto il processo di routing. A questo punto diventa fondamentale effettuare un distinguo tra routing statico e routing dinamico. La differenza tra queste due tipologie รจ nel modo in cui viene creata la tabella di routing per ogni singolo router della rete. Come vedremo piรน avanti lโ€™implementazione del routing statico puรฒ essere adatto a reti piccole, mentre se si vuole creare una rete di una certa dimensione si deve necessariamente implementare il routing dinamico.

Routing statico

In questa implementazione si ha che le righe costituenti la tabella di routing vengono inserite manualmente dallโ€™amministratore di rete che crea dei percorsi fissi tra generiche sorgenti e generiche destinazioni.

Eโ€™ evidente che questa tipologia di routing รจ improponibile in reti di grosse dimensioni in quanto lโ€™amministratore di rete dovrebbe scrivere migliaia di righe in ogni tabella dei router presenti nella rete. Un altro problema che affligge questa tipologia รจ quello della possibile rottura di un collegamento tra due host: dato che i router non si scambiano pacchetti per aggiornare dinamicamente le proprie tabelle di routing, avremo che il router non avrร  modo di capire che un certo collegamento รจ guasto e quindi continuerร  ad inviarvi pacchetti con unโ€™evidente inefficienza della rete. A questo punto dovrร  intervenire nuovamente lโ€™amministratore di rete e riconfigurare, scegliendo un percorso alternativo, la tabella di routing.

Questa tipologia ha anche un grande vantaggio, ovvero quello del ridotto consumo di banda da parte dei router dato che questโ€™ultimi non scambieranno nessun pacchetto per creare le proprie tabelle di routing. Dal punto di vista della sicurezza questa tiplogia รจ estremamente sicura in quanto per ogni nodo si ha un solo punto dโ€™ingresso e un solo punto dโ€™uscita e ciรฒ rende difficile la possibilitร  di introdursi, in maniera illegale, nella rete. Inoltre, dato che non รจ richiesto nessuno sforzo computazionale per calcolare il percorso a costo minimo, รจ possibile, se si vuole implementare questa tipologia di routing, fare affidamento a router a basso costo e quindi adatti per gestire reti domestiche e piccole aziende.

Routing dinamico

Questa tipologia di routing รจ praticamente lโ€™antitesi della tipologia di routing statico visto prima. In questo caso le tabelle di routing vengono aggiornate in maniera dinamica da ogni router e non cโ€™รจ piรน bisogno della presenza di un amministratore di rete che configuri i vari cammini.

I router si scambiano dei pacchetti di dimensione, struttura e informazioni diverse a seconda del tipo di algoritmo di routing che andranno ad implementare. Eโ€™ evidente che parte della banda, su tutti i collegamenti, verrร  occupata dallo scambio, molto frequente, di aggiornamenti sullo stato della rete per ottimizzare maggiormente la scelta dei percorsi.

Questa tipologia di routing ha il vantaggio di poter essere implementata in reti di garndi e grandissime dimensioni e che รจ reattiva alla rilevazione dei guasti: infatti nel caso in cui un cammino subisca un guasto, quando un router si accorge di questo problema, riconfigurerร  la propria tabella di routing cercando percorsi alternativi.

Inoltre lโ€™utilizzo della rete รจ maggiormente ottimizzato in quanto, se viene rilevato un congestionamento di un certo cammino, il traffico puรฒ essere convogliato su altri percorsi che hanno volumi di traffico minori.

Dal punto di vista della sicurezza, perรฒ, questa tipologia รจ piรน vulnerabile ad attacchi rispetto al routing statico: immaginiamo cosa potrebbe succedere se un malintenzionato mandasse pacchetti di aggiornamento fasulli, verso i router, con lโ€™obiettivo di saturare alcuni canaliโ€ฆ Eโ€™ evidente che dunque la sicurezza deve essere garantita in un altro modo implementando un sistema di riconoscimento dei pacchetti per riuscire a capire se il pacchetto ricevuto sia prodotto da un router o da un malintenzionato.

Algoritmi di routing e classificazione

Come accennato precedentemente esistono vari tipi di algoritmi di routing piรน o meno performanti. Un modo per identificare vantaggi e svantaggi, รจ definire dei criteri precisi di valutazione che sono la base per lโ€™analisi di un algoritmo. I criteri di valutazione e confronto sono sostanzialmente i seguenti:

  • Semplicitร : per quanto riguarda la realizzazione e lโ€™implementazione nei dispositivi.
  • Robustezza: lโ€™algoritmo deve sapere reagire in maniera positiva e autonoma a particolari perturbazioni. Piรน precisamente lโ€™algoritmo non deve subire penalizzazioni, per quanto riguarda lโ€™efficienza, se avvengono degli errori o cambiamenti di metrica (che spiegheremo piรน avanti) allโ€™interno della rete. Un buon algoritmo di routing deve rilevare autonomamente se sono presenti degli errori, per esempio un mal funzionamento di un nodo, ed adattarsi di conseguenza.
  • Stabilitร : lโ€™algoritmo dovrร  convergere ad una situazione che garantisca la stabilitร . In particolare se avvengono errori allโ€™interno della rete che allontanano lโ€™algoritmo del punto di stabilitร , lโ€™algoritmo deve reagire velocemente a questa situazione e riuscire a convergere nuovamente alla stabilitร  nel minor tempo possibile.
  • Ottimalitร : questo parametro viene valutato seguendo opportuni criteri.

I quattro criteri di valutazione, a volte, possono trovarsi in contrapposizione tra di loro: lavorando sullโ€™ottimizzazione, ad esempio, viene compromessa, di fatto, la semplicitร , in quanto lโ€™algoritmo ottimizzato solitamente รจ piรน complesso rispetto a quello non ottimizzato.

Diciamo che gli obiettivi principali da raggiungere sono la robustezza e la stabilitร  dellโ€™algoritmo ed in un secondo momento riuscire ad avvicinarsi il piรน possibile allโ€™ottimalitร , per quanto riguarda le prestazione, senza perรฒ minare sensibilmente la semplicitร  di implementazione.

Gli algoritmi di routing, a seconda della loro implementazione, possono essere classificati nel modo seguente:

  • Algoritmi con tabella: Un nodo che implementa un algoritmo di questa famiglia memorizza, per ogni richiesta di instradamento in ingresso, la linea in uscita che deve essere utilizzata.
  • Algoritmi senza tabella: Questo tipo di algoritmi non prevedono abbinamenti ingresso-uscita predefiniti, ma sono di tipo reattivo, cioรจ attivati solo su richiesta, quando necessario.
  • Algoritmi centralizzati: Prevedono esclusivamente lโ€™uso di tabelle e hanno una unitร  di elaborazione dellโ€™algoritmo centralizzata.
  • Algoritmi distribuiti: Prevedono unโ€™esecuzione dellโ€™algoritmo in maniera distribuita a volte detta cooperativa. Anche in questo caso si prevede lโ€™uso di tabelle.
  • Algoritmi isolati: Tipicamente rivolti a realizzazioni senza tabella. Prevedono lโ€™esecuzione in locale (stand-alone) dellโ€™algoritmo.

A questo punto รจ necessario, ai fini della comprensione delle pagine seguenti, introdurre il concetto di metrica. Sostanzialmente con questo termine si intende classificare un certo percorso cosรฌ da capire quale sia il piรน conveniente. Vengono cosรฌ introdotti due parametri fondamentali per la metrica che sono gli Hops (che rappresentano il numero di nodi intermedi attraversati nel percorso mittente-destinatario) e il costo (che rappresenta il costo totale del cammino ovvero la somma dei costi di ogni singola interconnessione tra due nodi intermedi attraversati). Solitamente il costo di un percorso รจ inversamente proporzionale alla velocitร  di trasmissione e, quindi, interconnessioni che garantiscono velocitร  di trasmissione molto alte avranno un costo molto basso.

Lโ€™obiettivo principale degli algoritmi di routing che ricerchino lโ€™ottimo รจ quello di minimizzare il costo del percorso.

Algoritmi di routing senza tabella

In questa lezione cerchiamo di analizzare, in maniera piรน approfondita, gli algoritmi di instradamento evidenziandone pregi e difetti.

Algoritmi senza tabella: Random

Eโ€™ una tecnica semplice e robusta: ogni richiesta di inoltro in ingresso viene selezionata in maniera casuale (random) una delle possibili uscite. Eโ€™ robusta perchรจ se si rompe una linea il tutto continua a funzionare in maniera corretta, semplicemente non verrร  esclusa dalle pussibili uscite la linea rotta. Anche se robusto, questo tipo di algoritmo non รจ ottimo in quanto tutte le linee di uscite vengono considerate con lo stesso costo senza tenere traccia del congestionamento della rete. Questo fa si che se si ha unโ€™uscita altamente congestionata e, dato la scelta casuale, viene scelta proprio quella linea si avrร  un ritardo ancora maggiore. Questo algoritmo, semplicissimo da implementare, puรฒ portare ad evidenti problemi di gestione di reti con alto traffico.

Algoritmi senza tabella: Source Routing

In questo tipo di algoritmo il percorso che deve seguire il pacchetto รจ giร  inserito nellโ€™header del pacchetto stesso. In questo caso, dunque, ipotizzando di dover inviare un messaggio da un nodo A ad un nodo B, il nodo A scriverร  nel pacchetto il percorso che dovrร  seguire (scriverร , per esempio, che dovrร  passare dal router 1, poi dal router 2 ed infine al router 3 che inoltrerร  il pacchetto al nodo B). In questo modo quindi il router che riceverร  il pacchetto non compierร  nessuna operazione di gestione, ma si limiterร  ad inoltrare il pacchetto verso il router indicato nellโ€™header del pacchetto.

Questo algoritmo รจ poco utilizzato in quanto non รจ assolutamente affidabile dato che il nodo A, non conoscendo la topologia della rete, non puรฒ sapere se un certo collegamento รจ interrotto (con conseguente perdita del pacchetto) o congestionato. Questo tipo di algoritmo, oltre ad essere inaffidabile รจ molto pericoloso per quanto riguarda la sicurezza della rete: se un malintenzionato avesse come obiettivo lโ€™intasamento di un certo percorso, basterร  che il malintenzionato crei un alto volumi di pacchetto inserendo il percorso da congestionare nellโ€™header di ogni pacchetto. Per questo motivo i router presenti nella rete Internet, per garantire la sicurezza della rete, scartano a priori pacchetti nei quali รจ giร  inserito il percorso da seguire.

Algoritmi senza tabella: Flooding

Il principio su cui si basano questi algoritmi รจ perfettamente coerente con la sua definizione. Viene semplificata ancora di piรน lโ€™implementazione dellโ€™algoritmo in quanto ogni richiesta di inoltro presente sugli ingressi viene ripetuta su tutte le uscite. Sicuramente รจ una tecnica robusta (รจ utilizzata in diverse applicazioni militari) e ottima, ma in questo caso, lโ€™ottimo non viene raggiunto in maniera efficiente.

Questa tecnica, tuttavia, soffre di una carenza operativa molto importante: operando con questa politica si rischia di congestionare rapidamente la rete. Un possibile rimedio a questo problema รจ lโ€™introduzione di un campo nel pacchetto che porta il valore massimo delle volte che puรฒ essere ripetuto nella rete. Ogni volta che uno stesso pacchetto viene ripetuto, il campo viene decrementato di una unitร  e se un nodo riceve un pacchetto con il valore di questo campo a zero il pacchetto viene scartato.

Algoritmi di routing con tabella: Distance Vector

Analizziamo adesso i protocolli di routing con tabella (che sono quelli che implementati nelle reti Internet).

Il primo algoritmo con tabella che vedremo รจ lโ€™algoritmo Distance Vector o vettore delle distanze. Questo tipo di algorimo ha una struttura abbastanza semplice e permette, al termine dellโ€™algoritmo, di individuare il percorso tra una qualsiasi sorgente e una qualsiasi destinazione a costo minore. Chiramente questo algoritmo non รจ esente da problemi che lo affliggono in situazioni particolari che perรฒ vedremo piรน avanti.

Lโ€™implementazione di questo algoritmo รจ di tipo collaborativo dato che ogni nodo definisce in maniera autonoma la propria tabella di routing che poi viene pubblicata agli altri nodi connessi. Gli altri nodi connessi, analizzando la tabella di routing pubblicata dai nodi adiacenti, potranno aggiornare la propria tabella con percorsi a costo minore.

In questo algoritmo ogni nodo dispone di una tabella che associa ad ogni possibile destinazione un percorso mediante la specifica del nodo vicino (next-hop).

Vediamo adesso con un esempio chiarificatore di come opera lโ€™algoritmo:

Dunque, come abbiamo detto, i nodi A, B e C creeranno le proprie tabelle di instradamento che poi pubblicheranno ai nodi adiacenti i quali valuteranno la presenza di percorsi a costo minore. Per il nostro esempio terremo in considerazione le tabelle dei nodi A e B. Inizialmente la tabella dei cammini di A sarร  la seguente:

DestinazioneCostoNext-Hop
A0โ€“
B1B
C3C


Mentre quella dei cammini di B รจ la seguente:

DestinazioneCostoNext-Hop
A1A
B0โ€“
C1C


I due nodi (A e B) pubblicano la propria tabella.

Nella trattazione del nostro esempio ci poniamo dal punto di vista del nodo A. Questโ€™ultimo nota che se volesse inviare un pacchetto direttamente a C quel percorso avrebbe un costo 3 mentre seguendo il percorso A-B-C questโ€™ultimo avrebbe costo pari a 2. Dunque essendo il percorso A-B-C minore rispetto al percorso diretta A-C, il nodo aggiornerร  il record relativo al percorso inserendo il cammino piรน vantaggioso.

In questo modo, anche allโ€™interno di reti molto grandi, ogni nodo riuscirร  a trovare il percorso a minima distanza anche se sorgente e destinazione si trovino a distanza notevoli.

Come detto precedentemente questo tipo di algoritmo soffre di un problema noto in caso di guasti su alcuni cammini della rete. Andiamo adesso, per meglio chiarire questo problema, a discutere lโ€™esempio mostrato in figura:

Quando un collegamento si guasta convenzionalmente il costo del cammino risulta pari ad infinito e, di fatto, il nodo รจ irraggiungibile. Il nodo A pubblica la nuova tabella, aggiornando il costo del collegamento A-X e si suppone che prima che il nodo B riceva lโ€™aggiornamento dal nodo A il nodo B abbia pubblicato la propria tabella di instradamento nella quale viene dichiarato che X รจ raggiungibile dal nodo B con costo 6. Di conseguenza il nodo A ritiene raggiungibile X tramite il nodo B quando in realtร  non lo รจ. Questo รจ un grosso problema in quanto, se ipotizziamo malfunzionamenti diffusi nella rete, questโ€™ultimi porterebbero ad un numero di pacchetti persi molto elevato, minando cosรฌ lโ€™affidabilitร  dellโ€™intera rete. Eโ€™ chiaro che se si ricerca una buona affidabilitร  della rete queste problematiche devono essere risolte e ciรฒ lo si fa utilizzando principalmente la tecnica di Split Horizon.

Questa tecnica, che complica un poโ€™ lโ€™algoritmo base del Distance Vector, fa si che il router scinda le informazioni in suo possesso in due parti:

  • le informazioni ricevute da parte dei nodi vicini;
  • e le informazioni "proprie" che egli stesso notifica ai nodi vicini.

Ciascun router, nellโ€™inoltrare le proprie tabelle di routing ai vicini, omette per ciascun vicino gli specifici percorsi appresi da quel router. Sostanzialmente viene previsto lโ€™aggiornamento solo per i cammini che non interessano il nodo di destinazione. Per chiarire meglio questo concetto affidiamoci allโ€™esempio riportato in figura:

Come possiamo vedere ci sono tre nodi connessi in maniera lineare. Il nodo 1 dunque puรฒ raggiungere il nodo 3 passando per il nodo 2 con un certo costo. Quando il nodo 1 pubblica la sua tabella di routing ometterร  di poter raggiungere il nodo 3 attraverso il nodo 2 dato che questa informazione, per il nodo 2, comporterebbe il passaggio per se stesso (immaginiamo che il nodo 2 voglia comunicare verso il nodo 3, non avrebbe senso il percorso 2-1-2-3). Oltre ad evitare cammini ciclici, questa tecnica permette anche di risolvere il problema, visto prima, del guasto di un collegamento: supponiamo che il collegamento tra il nodo 2 e il nodo 3 si interrompa per un generico guasto, se non venisse adottata la tecnica di split horizon il nodo 2 vedrebbe raggiungibile il nodo 3 attraverso il nodo 1 compiendo il cammino 2-1-2-3 che in questo caso, oltre a non avere senso, รจ anche scorretto in quanto il collegamento 2-3 non รจ funzionante.

Protocolli di instradamento RIP e IGRP

Nella pagina precedente abbiamo descritto il funzionamento dellโ€™algoritmo Distance Vector che, sostanzialmente, si basa sulla pubblicazione delle tabelle dโ€™instradamento ai nodi adiacenti per cercare i percorsi a costo minore.

In questa sezione analizzeremo in che modo vengono "trasportate" queste informazioni e, piรน precisamente, analizzaremo il protocollo dโ€™instradamento RIP e il protocollo di instradamento IGRP utilizzati dallโ€™algoritmo Distance Vector.

Protocollo di instradamento RIP

Questo protocollo รจ stato il primo ad essere sviluppato nel 1982. In seguito รจ stata proposta una seconda versione, denominata RIP2, che consente di trasmettere un numero maggiore di informazioni. Il RIP รจ molto diffuso in Internet e la sua caratteristica principale รจ quella di basare la sua metrica sullโ€™Hop Count (ovvero il conteggio dei numeri dei salti tra i vari router prima di raggiungere la destinazione). Gli update relativi ad ogni router sono settati, di default, a 30 secondi e comportano la trasmissione โ€“ per intero! โ€“ della tabella di routing agli altri router. Questo fa si che in reti in cui il mezzo trasmissivo non รจ di alta qualitร , dato che il protocollo RIP genera volumi di traffico abbastanza elevati, si abbia una saturazione della banda dovuta agli update delle tabelle.

Come visto precedentemente, in una procedura di instradamento di un pacchetto, si puรฒ incorrere in percorsi ciclici e quindi il RIP, per risolvere questo problema, pone un Hop Count massimo di 15, ovvero un pacchetto non potrร  passare per piรน di 15 router prima di arrivare a destinazione.

Eโ€™ interessante analizzare anche la struttura di un generico pacchetto RIP che possiamo vedere in figura:

Facciamo adesso una rapida analisi dei campi del pacchetto:

  • Command: Questo campo indica la tipologia del pacchetto, ovvero se รจ un pacchetto di request, che รจ un pacchetto inviato da un router ad un altro per richiedere la routing table, oppuere se รจ un pacchetto di response, che รจ un pacchetto che fa riferimento ad un normale update della tabella di routing o generato in risposta ad un pacchetto di request.
  • Versione: Indica la versione del protocollo.
  • Zeros: Progettato per usi futuri.
  • Address Family Identifier: Indica il tipo di indirizzo che verrร  espresso in relazione alla struttura della rete in cui รจ implementato il RIP. Nello standard TCP/IP lโ€™indirizzi saranno indirizzi IP.
  • IP Address: Indica lโ€™indirizzo IP della rete di destinazione.
  • Metrica: In questo campo viene inserito il valore della metrica.

Protocollo di instradamento IGRP

Questo tipo di protocollo nasce per migliorare alcuni aspetti del RIP ed รจ un protocollo prorietario sviluppato dalla CISCO. Le caratteristiche principali di questo protocollo sono: una maggiore scalabilitร  (in quanto lโ€™hop count puรฒ salire fino al valore di 255), utilizzo di una metrica complessa che viene costruita sullโ€™analisi di diversi fattori (che vedremo piรน avanti) e la possibilitร  di inserire nella tabella di ruting percorsi multipli per poter gestire il traffico in maniera piรน effciente.

Come accennato, questo protocollo usa un calcolo della metrica abbastanza complesso basato fondamentalmente su i fattori seguenti:

  • Banda: Questo valore indica la larghezza di banda di una certa connessione e viene inserita durante la fase di cofigurazione. Qesto valore รจ abbastanza indicativo dato che non รจ detto che il valore indicata necessariamente rispecchi la reale larghezza di banda della connessione a cui fa riferimento.
  • Affidabilitร : Eโ€™ un valore che indica lโ€™affidabilitร  di un certo collegamento. Questo valore รจ calcolato come il rapporto tra i pacchetti giunti a destinazione in maniera corretta e quelli giunti a destinazione con errori. Nel calcolo della metrica questa campo ha un peso notevole.
  • Carico: Indica il volume di traffico presente in un certo percorso al momento della rilevazione.
  • Ritardo: Eโ€™ un valore che indica il tempo trascorso per attraversare il collegamento. Chiaramente questo valore รจ variabile e dipende dal livello di congestione del collegamento.

Per quanto riguarda il funzionamento dellโ€™update questo รจ identico a quello usato dal RIP, soltanto che nel IGRP la periodicitร  degli aggiornamenti รจ pari a 90 secondi.

Come possiamo vedere il protocollo IGRP รจ superiore, per quanto riguarda lโ€™ottimizzazione delle decisioni di instradamento, rispetto al RIP ma se questโ€™ultimo รจ uno standard open il primo รจ uno standard proprietario e quindi รจ utilizzabile solamente dai router prodotti dalla Cisco.

Algoritmo con tabella Link State

Altro impotante algoritmo di instradamento che fa uso di tabelle รจ lโ€™algoritmo Link State. Questo tipo di algoritmo รจ significativamente diverso rispetto al Distance Vector in quanto ogni nodo ha una visione completa della topologia della rete.

Avendo a disposizione la topologia dellโ€™intera rete, con i costi relativi per ogni cammino, รจ possibile ricavare il percorso a costo minimo in maniera piรน diretta e non come avveniva con il Distance Vector sfruttando la pubblicazione delle tabelle di routing dei router adiacenti.

Vediamo adesso come viene creata la topologia della rete riassumendo il procedimento negli step seguenti:

  1. Nella fase iniziale, detta fase di start-up o inizializzazione, ogni router rileva i percorsi verso gli altri router adiacenti con il relativo costo.
  2. Le informazioni raccolte da ogni router vengono inviate in broadcast, ovvero a tutti i router conosciuti e connessi alla stessa rete, utilizzando pacchetti Link State
  3. Quando un router riceve un pacchetto LInk State, prima di analizzarlo, controlla il numero di sequenza e a seconda del valore presente compie unโ€™operazione. Nel caso in cui il numero di sequenza sia maggiore rispetto a quello dellโ€™ultimo pacchetto ricevuto il router capisce che il pacchetto รจ un reale aggiornamento e quindi processa le informazioni e memorizza i dati. Se invece il numero di sequenza del pacchetto รจ minore rispetto allโ€™ultimo ricevuto presumibilmente il router mittente non ha ricevuto un aggiornamento (magari perchรจ il pacchetto รจ andato perduto), quindi il router destinazione invia il contenuto dellโ€™ultimo pacchetto che ha ricevuto il router mittente. Infine se il numero di sequenza รจ invariato semplicemente il pacchetto viene scartato dato che le informazioni sono giร  state processate precedentemente. Alla fine tutti i router avranno a disposizione un database che sostanzialmente racchiude la topologia della rete.

A questo punto ogni router ha tutte le informazioni necessarie per calcolarsi, in maniera autonoma, i percorsi a costo minimo tra una generica sorgente e una generica destinazione. Questo calcolo viene effettuato utilizzando uno degli algoritmi shortest path first (SPF); in particolare viene utilizzato lโ€™algoritmo di Djkstra. Questo algoritmo opera su grafi, ovvero un insieme di nodi collegati tra di loro da archi, che hanno costi positivi per ogni collegamento. Questa restrizione a costi positivi รจ logica in quanto non avrebbe senso imporre il costo di un certo cammino tra due router per esempio pari a -2. In questo algoritmo, implementato dal Link State, abbiamo che i nodi del grafo sono rappresentati dai router e gli archi che collegano i nodi rappresentano il percorso tra due router direttamente connessi. Il grafo dellโ€™intera topologia della rete viene costruito partendo dalle informazioni contenute allโ€™interno del database che ogni router possiede. La complessitร  dellโ€™algoritmo di Dijkstra รจ quadratica, ma risulta comunque un algoritmo molto efficiente per lโ€™individuazione di percorsi a costo minimo.

Riassumendo il protocollo Link State รจ molto piรน complesso per quanto riguarda lโ€™implementazione rispetto allโ€™algoritmo Distance Vector, ma riesce a gestire reti molto complesse, cosa che non riesce a fare il Distance Vector. Questa complessitร  dellโ€™algoritmo porta a delle criticitร  dal punto di vista dellโ€™implementazione nei router principalemnte per i seguenti fattori:

  • Memoria: La conoscenza completa della topologia della rete necessita la presenza, allโ€™interno del router, di unitร  di memoria abbastanza corposi.
  • Capacitร  computazionale: Eโ€™ necessario, per lโ€™operazione di ricerca del percorso a costo minimo, che il router sia equipaggiato da un processore che abbia una notevole capacitร  di calcolo. Infatti nel caso in cui la capacitร  di calcolo non sia sufficiente, avremo che i pacchetti, in attesa dellโ€™instradamento, si accumulino nella coda del router generando ritardi anche consistenti.
  • Banda: La fase di start-up richiede una banda suffiente a supportare volumi di traffico consistenti in quanto in questa fase tutti i router mandano in broadcast le proprie informazioni.

In sostanza i router che implementano il Link State sono router di qualitร  molto superiore rispetto ad altri che sono in grado di implementare solo il Distance Vector.

Clicca qui Passa anche tu a Sky Wifi e non ci pensi piรน.Scopri la promo

Altri contenuti interessanti

Pubblicitร 

Potrebbero interessarti queste guide

Leggi anche...

Cavo Ethernet cat 6, cat 7 e cat 8: quale scegliere?

I cavi Ethernet sono un elemento fondamentale nelle reti...

Mbps, Megabit, Gigabit, Megabyte e Gigabyte: che differenza cโ€™รจ?

Quando si parla di connessioni Internet e velocitร  di...

Handshake: cosโ€™รจ e come funziona il processo di handshaking nella comunicazione di Rete

Con il termine Handshake (letteralmente "stretta di mano") si...

DNS_PROBE_FINISHED_NXDOMAIN: cosโ€™รจ e come risolvere questo errore di Chrome

DNS_PROBE_FINISHED_NXDOMAIN รจ un messaggio di errore tipico del browser...

DNS Google 8.8.8.8 โ€“ come funzionano e perchรฉ usarli

Il DNS primario 8.8.8.8 e il DNS secondario 8.8.4.4...

Traceroute: cosโ€™รจ, come funziona e come eseguirlo su Windows, Linux e Mac

I sistemi informatici comunicano attraverso lo scambio di pacchetti...
Pubblicitร