Posts Tagged ‘distance vector’

Funzionamento del protocollo OSPF

L’Open Shortest Path First (in seguito, OSPF) è un protocollo di routing link state pubblico e non proprietario.

I router che utilizzano protocolli link state identificano i propri vicini e comunicano con essi. L’OSPF raccoglie le informazioni dai router vicini circa lo stato dei link di ognuno di essi e invia i suoi dati agli altri. Questo scambio di informazioni sullo stato dei link permette ai router di creare la topology table o (link state database). Ogni router nella stessa area OSPF ha la stessa topology table e viene usata per calcolare la rotta migliore fino a una destinazione applicando l’algoritmo SPF (Shortest Path First). L’algoritmo SPF si basa sul costo che è principalmente basato sulla larghezza di banda; il percorso a costo più basso viene inserito nella routing table (o forwarding database).
Ogni router mantiene una lista di router vicini chiamata adjacency database. Tale lista è formata da tutti i router vicini con cui un router stabilisce una comunicazione bidirezionale ed è unica per ogni router. Per ridurre il numero di informazioni di routing scambiate tra i vicini all’interno della stessa rete, i router OSPF eleggono un designated router (DR) e un backup designated router (BDR) che vengono utilizzati come punti focali per lo scambio di informazioni di routing.

L’OSPF è un protocollo da utilizzare in reti estese e scalabili dove i limiti dei protocolli distance vector rendono improponibile utilizzarli, sia per utilizzo di metriche non basate sulla larghezza di banda che per la lenta convergenza del protocollo (in reti estese il RIP può avere la convergenza di alcuni minuti). Le principali differenze sono state già trattate in altri articoli.

OSPF si interfaccia con le reti broadcast multi-access (come l’Ethernet), pont-to-point e Nonbroadcast multi-access (NBMA, come il Frame Relay). Le reti di tipo point-to-multipoint possono essere configurate manualmente su un’interfaccia dall’amministratore.
In una rete multi-access non si conosce il numero di router a cui si è connessi, mentre nel collegamento point-to-point solo due router possono essere connessi. In una rete broadcast multi-access il numero di adiacenti può essere elevato e varia in base al numero di router della rete. In generale se N è il numero di router il numero di potenziali adiacenti sarà dato dalla formula

N*(N-1)/2

e ciò provocherebbe molto overhead. La soluzione di questa problematica sta nell’eleggere un DR che diventa adiacente di tutti gli altri router nel segmento di broadcast, quindi tutti i router inviano i LSA al DR ed esso invierà le informazioni  a tutti i router del segmento usando l’indirizzo multicast 224.0.0.5. Questa soluzione è efficiente ma presenta lo svantaggio che il DR funge come centro stella, quindi con problemi per la rete in caso di rottura. Per questo viene eletto un BDR tra i designated router. Per garantire la sincronizzazione delle informazioni tra DR e BDR vengono inviate le informazioni all’indirizzo 224.0.0.6.
Ovviamente in una rete point-to-point ci sono solo due nodi e non esistono né DR né BDR: entrambi i router hanno le complete adiacenze con l’altro.

Quando viene avviato un processo di routing OSPF su di un’interfaccia, il router manda pacchetti “hello” a intervalli regolari (Hello protocol) attraverso l’indirizzo 224.0.0.5 che invia il pacchetto a tutti i router OSPF. Tali pacchetti (molto piccoli, hanno solo un OSPF header) vengono inviati ogni 10 secondi di default, ogni 30 per reti NBMA e sono importanti poiché attraverso essi vengono eletti il DR e il BDR.

Funzionamento

Come già accennato, l’avvio di un processo OSPF su di un’interfaccia fa si che il router invii pacchetti hello a intervalli regolari; le regole che governano lo scambio di pacchetti hello viene chiamato hello protocol. In una rete multi-access l’hello protocol fa si di eleggere un DR e un BDR. I pacchetti hello trasportano le informazioni e tutti i vicini devono essere sincronizzati per formare adiacenze e scambio di informazioni sullo stato dei link. In reti multi-access sono il DR e il BDR a dover mantenere le adiacenze con tutti gli altri router OSPF.

I router adiacenti attraversano una sequenza di stati. Prima di formare la routing table i router adiacenti devono essere a conoscenza della topologia dell’intera rete. Ogni router invia LSA nei Link State Update (LSU) e tale LSA contiene al suo interno tutte le informazioni sui link del router; viceversa, ogni router riceve un LSA da ogni vicino per formare il topology database. Tale processo si ripete per ogni router della rete OSPF.

Quando il database è completo ogni router applica l’algoritmo SPF per calcolare una topologia logica esente da loop per ogni rete di destinazione da inserire nella routing table. Le informazioni di routing sono così fissate; quando vi è la variazione dello stato di un link, i routers usano un processo di flooding per notificare agli altri router della rete il cambiamento. Inoltre, per verificare se un adiacente è down, l’hello protocol impone un dead interval.

Link state routing protocol

Abbiamo già visto in un precedente articolo quali sono le principali differenze tra i protocolli di routing distance vector e i protocolli link state. In questo articolo continuiamo la trattazione e vedremo nel dettaglio le caratteristiche dei protocolli link state; prima, però, riprendiamo le differenze tra le due classi di protocolli di routing.

I protocolli distance vector (come RIP e IGRP) presentano le seguenti caratteristiche:

  • inviano l’intera tabella di routing ai router vicini;
  • aggiornamenti periodici frequenti;
  • metrica basata sui salti (solo il RIP);
  • vedono la rete dalla prospettiva dei vicini;
  • convergenza lenta;
  • possibili routing loops;
  • semplicità di configurazione;
  • alto consumo di banda.

Caratteristiche dei protocolli link state:

  • aggiornamenti al variare della topologia della rete;
  • uso dello Shortest Path;
  • invio di pacchetti link-state a tutta la rete (LSA, Link State Advertisement);
  • vista totale della rete in comune tra i router;
  • convergenza veloce;
  • non suscettibili di routing loops;
  • complessi da configurare;
  • richiedono molta memoria e potenza computazionale;
  • consumano poca banda.

Un router che utilizza protocolli link state colleziona le informazioni da tutti gli altri router nella rete e, successivamente, calcola il miglior percorso (SPF algorithm) per tutte le destinazioni della rete stessa. Le variazioni della rete vengono acquisite dai router in maniera veloce: le informazioni vengono inviate in maniera non periodica ma al variare della topologia (triggered updates). Inoltre, vengono inviati dei pacchetti “hello” per verificare la raggiungibilità dei vicini. Informazioni di “hello” e LSAs costituiscono lo strumento per conoscere la topologia della rete per poter creare la tabella di routing (routing table).

Quando vi è una rottura nella rete si ha un fooding di pacchetti LSAs a un indirizzo multicast dedicato; ogni router invia queste informazioni su tutte le porte tranne su quella in cui l’informazione è arrivata. Questo fa si che ogni router appartenente a una certa area debba ricalcolare le rotte, ecco perché il numero di router di un’area deve essere limitato.

Un link è un’interfaccia del router. Lo stato di un link è la descrizione dell’interfaccia e della relazione con i router vicini. La descrizione dell’interfaccia può includere l’indirizzo IP della stessa, la subnet mask, il tipo di rete a cui è connessa, i router connessi ecc. L’insieme di tali informazioni forma il database link state meglio conosciuto come database topologico (topological database). Applicando l’algoritmo di Dijkstra (SPF, Shortest Path First) si forma un albero SPF in cui il router che lo applica è la radice (root). Il percorso migliore calcolato viene inserito nella routing table.

Vediamo di riassumere i vantaggi e gli svantaggi dei protocolli link state. Vantaggi:

  • utilizzo del costo di un link come metrica che tiene conto della capacità del link;
  • utilizzo di LSAs per informare immediatamente gli altri router dei cambiamenti della topologia della rete così da avere un convergenza veloce;
  • vista completa della rete, i routing loops sono facilmente evitabili;
  • routing table sempre aggiornata in base alle ultime informazioni ricevute;
  • supporto a CIDR e VLSM.

Svantaggi dei protocolli link state:

  • richiedono maggiore memoria e potenza di calcolo rispetto ai protocolli distance vector. Questo può determinare un costo eccessivo per un’azienda con poco budget o con hardware datato;
  • richiedono una struttura gerarchica della rete per poterla suddividere in aree più piccole e gestibili riducendo la dimensione della topology table;
  • richiedono una buona conoscenza del protocollo da parte dell’amministratore di rete;
  • effettuano un flooding di LSAs durante il processo di discovery iniziale che può determinare un significativo calo della capacità della rete in questo periodo.

RIP v2 e default routes su router cisco

In questo articolo terminiamo la trattazione sul RIP iniziata nei precedenti articoli, RIP e configurazione sui router cisco e RIP: load balancing e integrazione delle rotte statiche, fornendo una comparazione tra il RIPv1 e il RIPv2.

Entrambe le versioni di RIP sono dei protocolli distance vector, sono facili da configurare e usano l’hop count come metrica (dopo 15 hop la rete viene posta come irraggiungibile), usano l’holddown timers e lo split horizon per evitare i routing loops. I router hanno conoscenza delle sottoreti direttamente connesse e gli aggiornamenti includono informazioni sulla topologia (almeno la metrica); tali aggiornamenti avvengono in maniera periodica.

Il RIPv2 apporta dei vantaggi rispetto alla prima versione del protocollo. In particolare il RIPv2:

  • supporta il classless routing;
  • include nei routing updates le subnet mask;
  • ha un meccanismo di autenticazione negli updates (utilizza la criptatura MD5);
  • invia gli aggiornamenti in multicast (indirizzo 224.0.0.9) anziché in broadcast;
  • usa un routing tag con VLSM.

La configurazione del RIPv2 è identica a quella del RIPv1, l’unica differenza sta nell’inserire il comando version 2, come da esempio sotto:

Router(config)#router rip
Router(config-router)#version 2
Router(config-router)#network network-number

Per la verifica della configurazione si possono utilizzare i comandi show ip protocols, show ip route e show ip interface brief oltre, ovviamente, a show running-config. Il troubleshooting del RIPv2 può avvenire con il comando debug ip rip mentre per disattivare il debug basta inserire no debug all oppure undebug all.

Prima di concludere parliamo della rotta di default (default route). In generale, un router apprende il percorso verso una data destinazione in tre modi: attraverso una rotta statica (l’amministratore inserisce manualmente la rotta), con una rotta dinamica (grazie agli aggiornamenti inviati secondo un protocollo di routing) oppure per mezzo di una default route.
L’amministratore di rete può definire manualmente una rotta di default, cioè il percorso da seguire nel caso in cui non conosca alcuna rotta per raggiungere la destinazione. La rotta di default porta come vantaggio l’avere una ridotta tabella di routing e un percorso di default per destinazioni non conosciute.
La default route può essere impostata dal comando ip default-network in reti che utilizzano routing dinamico:

Router(config)#ip default-network rete

ad es.:

Router(config)#ip default-network 192.168.10.0

oppure attraverso una rotta statica, ad es.:

Router(config)#ip route 0.0.0.0 0.0.0.0 s0/0

dove gli zeri sia nel campo ip che nella subnek mask indicano ogni rete di destinazione con qualsiasi maschera. L’s0/0 è interfaccia su cui inviare i pacchetti (nell’esempio la seriale 0, dovete modificarla in base alle vostre esigenze).

IGRP: caratteristiche, metrica e configurazione

L’Interior Gateway Routing Protocol (IGRP) è un protocollo distance vector proprietario cisco. Essendo un protocollo distance vector l’IGRP invia aggiornamenti periodici di routing per mantenere la consistenza delle informazioni al variare della rete (per l’inserimento di nuove destinazioni o per identificare reti irraggiungibili).

Gli update di routing dell’IGRP vengono inviati ogni 90 secondi ai router appartenenti allo stesso AS (ricordiamo che l’IGRP è un protocollo IGP). Le caratteristiche principali di tale protocollo sono:

  • adattamento automatico alle variazioni anche in reti con topologia complessa;
  • flessibilità nella gestione di reti con diverse caratteristiche di banda e latenza;
  • scalabilità necessaria per reti molto estese.

Di base l’IGRP sceglie il percorso su cui instradare un pacchetto in base a una metrica basata sulla banda disponibile e sul ritardo. Tuttavia, l’IGRP può essere configurato per tenere conto, oltre che della banda e del ritardo, anche del carico in quel momento e dell’affidabilità della rete.  Tale metrica è, ovviamente, più accurata dell’hop count utilizzato dal RIP per scegliere il percorso di un pacchetto fino a destinazione. Vediamo meglio i parametri principali utilizzati nella metrica per la scelta del percorso:

  • banda: si tiene conto della banda delle reti che si attraversano fino a destinazione;
  • ritardo: ritardo cumulativo calcolato sulle interfacce oltrepassate lungo il percorso;
  • affidabilità: l’affidabilità del collegamento fino a destinazione determinato con lo scambio di informazioni riguardo la raggiungibilità delle reti nel tempo;
  • carico: il carico di un link verso la destinazione misurato in bit/secondo.

L’IGRP implementa le funzioni di holddowns, split horizons e poison reverse updates (già trattati in un precedente articolo). Tale protocollo non supporta le VLSM, supportate invece da un altro protocollo proprietario cisco che è l’EIGRP.

Passiamo adesso alla configurazione del protocollo. Il processo di routing si attiva con il comando router igrp in modalità configurazione (per disabilitarlo basta inserire il comando no router igrp). Perché il comando sia completo bisogna inserire anche un as-number, ovvero un identificativo per il processo IGRP; tutti i router che partecipano al processo di routing devono avere lo stesso as-number. Nel successivo menu bisogna inserire le reti direttamente connesse su cui inviare e ricevere gli update tramite il comando network (esattamente come accade per il RIP). Facciamo un esempio. Vogliamo inserire su un router 2 reti con identificativo di processo 101, i comandi saranno:

Router(config)# router igrp 101
Router(config-router)# network 192.168.10.0
Router(config-router)# network 192.168.11.0

RIP e configurazione su router Cisco

Il Routing Information Protocol (RIP) è un protocollo distance vector che può essere utilizzato nella versione 1 (RIPv1 o Classful Routing Protocol) o nella versione 2  (RIPv2 o Classless Routing Protocol). Il RIPv2 apporta delle caratteristiche importanti alla precedente versione come la possibilità gestire informazioni addizionali di routing, introduce dei meccanismi di autenticazione per rendere sicuri gli update della routing table e supporta le subnet mask a lunghezza variabile (variable-length subnet mask o VLSM). Il RIP usa l’hop count come metrica per la scelta del percorso. Il numero massimo di hop nel percorso è di 15, poi la rete viene posta come irraggiungibile. Di default, i routing updates vengono inviati ogni 30 secondi in broadcast.

Vediamo adesso come si configura il RIP sui router Cisco. Il primo comando da utilizzare è router rip e, successivamente, si utilizza il comando network per indicare al router le interfacce sulle quali inviare e ricevere i routing updates. Tali reti sono direttamente connesse al router. Facciamo un esempio con un router che è direttamente connesso alle reti 10.0.0.0 e 192.168.10.0, i comandi saranno:

Router(config)#router rip
Router(config-router)#network 10.0.0.0
Router(config-router)#network 192.168.10.0

Cosa accade se si inviano pacchetti verso una subnet sconosciuta? Il pacchetto viene scartato; per ovviare a ciò sui Cisco è abilitato di default il comando ip classless che inoltra il pacchetto di una subnet sconosciuta alla migliore supernet route. La supernet route è una rotta che copre un ampio range di subnet con una singola entry (per disabilitarlo bisogna inserire il comando no ip classless in configuration mode).

Come indicato nel precedente articolo, il RIP è un protocollo distance vector che soffre dei problemi di routing loops e count-to-infinity che portano a inconsistenza delle tabelle di routing dovute e una lenta convergenza del protocollo. Per ovviare a ciò il RIP utilizza le seguenti tecniche:

  • Split horizon
  • Poison reverse
  • Holddown counters
  • Triggered updates

Alcuni di questi servizi possono richiedere configurazione. Il RIP permette un massimo di 15 hop, quindi l’utilizzo del RIP è limitato nelle reti di grosse dimensioni. Inoltre, in alcuni casi, è necessario poter disabilitare lo split horizon; tale operazione va fatta direttamente sull’interfaccia interessata tramite il comando:

Router(config-if)#no ip split-horizon

E’ possibile modificare l’holddown timer che di default è di 180 secondi, per farlo basta digitare il comando:

Router(config-router)#timers basic update invalid holddown flush [sleeptime]

l’impostazione di default è

Router(config-router)#timers basic 30 180 180 240

Il valore del timer può essere diminuito, ma ciò va effettuato con cautela. Il valore ideale per il timer è leggermente maggiore del tempo massimo possibile per l’update sulla rete. L’intervallo di update può essere aumentato, rispetto al default pari a 30 secondi, per risparmiare banda o diminuito per migliorare la convergenza. E’ inoltre possibile disabilitare l’invio degli update su una specifica interfaccia tramite il comando:

Router(config-router)#passive-interface interface

La scelta di disabilitare gli update su talune interfacce risiede nel fatto che il RIP invia gli update in broadcast ed è necessario disabilitarli quando bisogna inviare degli update a reti non broadcast come ad esempio il Frame Relay.

Il tipo RIP da utilizzare si imposta con il comando:

Router(config-router)#version {1|2}

Di default i router cisco ricevono gli update sia del RIPv1 che del RIPv2, ma inviano solamente update di RIPv1. Il tipo di invio può essere settato con comandi appositi per inviare update di RIPv1, RIPv2 o di entrambi i tipi direttamente sull’interfaccia d’uscita:

Router(config-if)#ip rip send version {1 | 2 | 1 2}

la medesima cosa può essere fatta con la ricezione veicolando la ricezione di update RIP di una o entrambe le versioni:

Router(config-if)#ip rip receive version {1 | 2 | 1 2}

Abbiamo così concluso la trattazione sulla configurazione del RIP su Router Cisco, per effettuare la verifica della configurazione ci avvaliamo di 2 comandi: show ip route e show ip protocols. Il primo viene utilizzato in particolare per verificare che vengano ricevuti gli update degli altri router e che le route ricevute dai router vicini siano installate nella routing table; il secondo da molte informazioni sulla configurazione, ovvero se il RIP è attivo, se le interfacce inviano e ricevono correttamente gli update e se il router emette gli aggiornamenti verso le reti giuste.

Distance vector e routing loop

Abbiamo visto nei precedenti articoli le caratteristiche principali dei protocolli che utilizzano l’algoritmo di routing distance vector e in particolare che ogni router invia periodicamente la sua intera tabella di routing ai router adiacenti compreso il costo totale del percorso (metrica) e l’indirizzo del primo router del cammino nel percorso (detto next hop). Tuttavia l’algoritmo distance vector soffre di una problematica: i loop.

I routing loop si possono verificare se le routing table non sono aggiornate o sono inconsistenti a causa di una lenta convergenza del protocollo. Facciamo un esempio con la figura di seguito riportata.

Distance vector routing loop

Distance vector routing loop

In questa situazione può capitare che se una tratta diventa isolati; quando la rete 1 si guasta il router E emette un updateverso A. Il router A blocca l’instradamento verso la rete 1, ma i router B, C e D continuano ad inviare pacchetti verso A perché ancora non sono aggiornati sul guasto della rete 1. Appena A emette gli updateverso B e D questi bloccano le emissioni verso la rete 1. In questa situazione, il router C ancora vede la rete 1 come raggiungibile attraverso il router B; il router C manda un update verso D indicando che il path verso la rete 1 è attraverso B. Il router D aggiorna la sua routing table e propaga questa informazione verso il router A. Il router A rilancerà l’update verso i router B ed E. A questo punto ogni pacchetto emesso da C destinato alla rete 1 seguirà un looptra i router C, B, A e D.

Gli update non validi relativi alla rete 1 continueranno fino a che un altro processo non fermerà il loop. Questa situazione, detta Count-to-Infinity, è creata dalla propagazione di informazioni di routing non valide. Per evitare il count-to-infinity, i protocolli distance vector definiscono “infinity” uno specifico numero massimo (self-correcting); con tale approccio il routing protocol permette al loop di continuare sino a che la metrica non eccede il massimo valore permesso. Quando il valore della metrica eccede il massimo valore la rete è considerata non raggiungibile.

In poche parole, i loop avvengono quando gli update non corretti contraddicono gli update corretti. Per evitare questa situazione si è implementato lo Split Horizon, ovvero le informazioni di rete irraggiungibile da parte di un router non possono tornare indietro allo stesso router da parte degli adiacenti. Con questa tecnica si riducono sia le informazioni errate che il tempo necessario alla convergenza della rete.
Un ulteriore metodo per aumentare la convergenza della rete è utilizzare il route poisoning, ovvero si fa in modo che il primo router (nella figura il router E) che identifica la rete come irraggiungibile modifica la metrica di tale rete al numero massimo (e quindi la pone subito come irraggiungibile anche per i router adiacenti). Un ulteriore passo di convergenza è l’invio di update appena si verifica l’irraggiungibilità (trigger update) senza aspettare l’update periodico. I triggered update, usati in congiunzione con il route poisoning, assicurano che tutti i router sappiano delle route indisponibili nel piùbreve tempo possibile.

L’ultima tecnica per evitare i routing loop è l’holddown timer, vediamone il funzionamento. Quando un router riceve un update da un vicino che gli indica che una rete prima accessibile adesso non lo è più, il router marca la rete come tale e fa partire un holddown timer. Se arriva un update prima che tale timer si esaurisca dallo stesso vicino indicando che la rete in questione è di nuovo accessibile allora il timer è rimosso e la rete marcata come accessibile. Se un update arriva da un router vicino diverso con una metrica migliore di quella originale allora il router marca la rete come accessibile e ferma l’holddown timer. Se prima che l’holddown timer scada si riceve un update da un router vicino diverso dal primo, con una metrica peggiore, l’update è ignorato; ignorare un update di tale tipo ha lo scopo di dare più tempo all’informazione di irrangiugibilità della rete di propagarsi.

CountGli updatenon validi relativi alla rete 1 continueranno fino a che un altro processo non fermeràil loopQuesta situazione, detta CounttoInfinity, ècreata dalla propagazione di informazioni di routingnon validePer evitare il counttoinfinity, i protocolli distancevectordefiniscono “infinity”uno specifico numero massimo (self-correcting)Con tale approccio il routingprotocolpermette al loopdi continuare sino a che la metrica non eccede il massimo valore permessoQuando il valore della metrica eccede il massimo valore la rete èconsiderata non raggiungibile

Introduzione ai protocolli di routing: AS, distance vector e link state

Un protocollo di routing è un processo di comunicazione tra router per scambiarsi informazioni; tali informazioni andranno a formare la tabella di routing (routing table). L’invio del traffico utente è affidato, invece, ai protocolli routed.I protocolli di routing stanno alla base del routing dinamico.

Esempi di protocolli di routing sono:

  • RIP (Routing Information Protocol)
  • IGRP (Interior Gateway Routing Protocol)
  • EIGRP (Enhanced Interior Gateway Routing Protocol)
  • OSPF (Open Shortest Path First)

Esempi di protocolli routed sono:

  • IP (Internet Protocol)
  • IPX (Internetwork Packet Exchange)

In questo articolo vedremo in maniera teorica la distinzione tra i protocolli di routing e in particolare tra 2 categorie di algoritmi utilizzabili: distance vectorlink state. Prima però diamo la definizione di sistema autonomo (autonomous system o AS). Un AS è un insieme di reti che stanno sotto la supervisione di uno stesso amministratore di rete e che condividono strategie di routing comuni.
Lo scopo dei protocolli di routing è mantenere aggiornata la tabella di routing in base alle variazioni della topologia della rete. Una convergenza veloce delle rete a informazioni aggiornate nella routing è senza dubbio desiderabile in quanto si riduce il periodo di tempo in cui i router prendono decisioni di routing non corrette. In questo ambito si inseriscono gli AS che dividono l’internetwork globale in piccole reti che sono così molto più gestibili.

Passiamo ora ad esaminare l’algoritmo distance vector. L’algoritmo di routing distance vector invia periodicamente copie della propria tabella di routing da un router ad un altro per comunicare le variazioni sulla topologia della rete;  gli invii avvengono tra router adiacenti direttamente connessi. L’algoritmo utilizzato è anche conosciuto come algoritmo di Bellman-Ford.
Ogni router confronta la tabella di router che gli è stata inviata con la sua, se vi sono variazioni nella topologia della rete la propria viene aggiornata. Ogni router invia interamente la propria tabella di routing ai router adiacenti. La tabella di routing include informazioni circa la metrica (costo totale del percorso). Non si conoscono con tale algoritmo informazioni riguardanti reti o router distanti.

L’algoritmo link state è anche chiamato algoritmo di Dijkstra o shortest path first (SPF). Tale algoritmo mantiene una complessa tabella con le informazioni sulla topologia della rete e ha conoscenza totale dei router distanti da esso e le reti a essi interconnesse.

Un protocollo link state ha le seguenti caratteristiche:

  • LSA (link state advertisement), un piccolo pacchetto contenente le informazioni di routing;
  • topological database, l’insieme delle informazioni raccolte tramite i LSA;
  • algoritmo SPF, effettua i calcoli in base alle informazioni contenute nel database;
  • routing table, la tabella contenente la lista dei percorsi e delle interfacce conosciute.

I router che utilizzano protocolli basati su link state hanno bisogno di maggiore memoria e potenza di calcolo di altri che utilizzano protocolli basati su distance vector. La maggiore memoria è dovuta al fatto di dover immagazzinare informazioni sui vari database, sulla topologia della rete e i dati della routing table.
Vediamo in breve il funzionamento.  Inizialmente avviene il processo di scoperta (discovery process) attraverso il flooding (letteralmente, inondazione) di pacchetti link state tramite pacchetti LSA a tutti gli altri router. Questo processo inonda la rete di pacchetti LSA riducendone temporaneamente la banda disponibile per il traffico utente. Dopo questa fase iniziale, però, i protocolli link state richiedono generalmente poca banda per inviare i LSA che verranno inviati solo quando vi saranno delle variazioni della topologia della rete.

Concludiamo dicendo che i router hanno 2 funzioni di base:

  • determinazione del percorso;
  • funzioni di switching.

A livello rete vi è la funzione di calcolo del percorso, che consente al router di calcolare il percorso di un pacchetto fino a destinazione e stabilisce quale sia la via migliore. Per effettuare tali scelte viene utilizzata la tabella di routing.
La funzione di switching è una funzione interna del router che ha il compito di inviare un pacchetto ricevuto su una interfaccia ad un’altra interfaccia dello stesso. Il compito principale dello switching è quello di incapsulare in maniera appropriata il pacchetto in base alla rete che ci si trova sulla porta di uscita.