Posts Tagged ‘RIP’

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.

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).

VLSM, CIDR e aggregazione delle rotte

La Variable-length subnet mask (VLSM) è una tecnica utilizzata dagli amministratori di rete per usare in maniera più efficiente gli indirizzi IP. Con la VLSM si offre una maschera più lunga a reti con molti host e una maschera più corta per reti con pochi host, ovvero la maschera varia a seconda del numero di indirizzi necessari a quella rete.
Per implementare la VLSM bisogna, ovviamente, utilizzare un protocollo di routing che supporta il classless routing (un protocollo che, invece, non supporta le VLSM viene detto classful). I protocolli di routing classless su cui utilizzare la VLSM nei router cisco sono:

  • OSPF
  • Integrated IS-IS
  • EIGRP
  • RIP v2
  • BGP v4
  • Routing statico

I protocolli di routing classful sono, invece:

  • RIP v1
  • IGRP
  • EGP
  • BGP v3

Il classless routing nasce per il problema della carenza di indirizzi IP dovuto al veloce aumento delle dimensioni delle tabelle di routing di Internet. Le soluzioni a questo problema sono state il subnetting, la VLSM appunto, il Classless Interdomain Routing (CIDR), l’utilizzo di indirizzi IP privati e il Network Address Translation (NAT). La soluzione definitiva sarà l’utilizzo del protocollo IPv6 che avrà un’astensione di 128bit per gli indirizzi di rete (quindi uno spazio di indirizzamento enorme).

In principio era stato deciso di non utilizzare né la prima (subnet zero) né l’ultima subnet (all-one subnet), successivamente è stato consentito l’uso anche di tali subnet, soprattutto in unione alle VLSM. Per non utilizzare la prima subnet sui router cisco basta digitare il comando no ip subnet-zero.

Le VLSM sono utilissime per utilizzare in maniera efficiente subnet con pochi host, in particolare per i collegamenti Point-to-Point con i WAN links in cui si può usare una maschera di 30 bit (/30) con 2 soli host utilizzabili.
Inoltre, l’uso di CIDR e VLSM permette di effettuare l’aggregazione delle rotte o summarization. Tale tecnica consiste nel fornire al router di uscita di una grande organizzazione (ad es. un ISP) un indirizzo che riepiloga le sottoreti raggiungibili da esso riducendo così il carico sul router. Per fare ciò è necessario che gli indirizzi vengano assegnati in maniera gerarchica in modo che gli indirizziriassuntivi” condividano lo stesso ordine superiore bit.

RIP: load balancing e integrazione delle rotte statiche

Il load balancing (bilanciamento del carico) è il concetto che i router seguono per bilanciare il carico (traffico) in molteplici best path. Questi percorsi sono calcolati dinamicamente dal RIP e tale protocollo permette di indirizzare il traffico fino a un massimo di 6 best path utilizzati attraverso un meccanismo detto round robin. Tale meccanismo è ciclico, ovvero il router invierà il maniera ciclica il traffico sulle diverse interfacce su cui vi è un best path senza però tener conto della banda che vi si trova su ognuna di tali interfacce (il RIP non fa distinzioni sull’invio di pacchetti su un percorso PSTN a 56kbps o su una ATM a 155Mbps, calcola il best path tenendo in considerazione solamente il numero di hop da superare prima di arrivare a destinazione).
Le rotte con metrica uguale possono essere individuate usando il comando show ip route seguito dall’indirizzo della rete. Es.:

Router#show ip route 192.168.10.0

Per modificare il numero massimo di path bisogna digitare, in router configuration mode, il comando:

Router(config-router)#maximum-paths {number}

Parliamo adesso delle rotte statiche e al possibile utilizzo a fianco del RIP. La rotte statiche forzano l’instradamento dei pacchetti da una sorgente a una destinazione. Sono spesso utilizzate per definire una default route e, quindi, instradare un pacchetto anche quando la rete non è presente nella routing table.
Un router che usa RIP può ricevere una default route tramite update da un altro router che usa anch’esso RIP; un’altra opzione è che il router auto generi la sua default route.

Le rotte statiche hanno, ovviamente, prelazione su quelle dinamiche in virtù di una distanza amministrativa decisamente minore (per eliminare le default route basta digitare il comando no ip route in global configuration mode). Per ovviare a ciò basta impostare alla rotta statica una distanza amministrativa maggiore di quella del routing dinamico utilizzato. Così facendo si possono impostare rotte di backup nel caso in cui il processo di RIP non vada a buon fine.

Le rotte statiche saranno annunciate con gli update del RIP e propagate per tutta la rete: questo perché le rotte statiche sono contenute nella routing table ed il router non distingue tra rotte statiche e dinamiche. Quando un’interfaccia diviene indisponibile tutte le rotte statiche che la utilizzavano vengono rimosse dalla routing table. Quando il software non riesce più trovare un next-hop valido per l’indirizzo specificato nella static route, allora la rotte statica viene eliminata.

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.

IGP, BGP e caratteristiche dei protocolli di routing

In questo articolo faremo una panoramica sui principali algoritmi di routing e ne descriveremo brevemente le caratteristiche.

I protocolli Interior Gateway Protocol (IGP) sono quei protocolli che lavorano all’interno dello stesso sistema autonomo (AS) per determinare il percorso migliore su cui inviare un pacchetto usando come parametro principale la metrica e il modo in cui tale metrica viene calcolata.
I protocolli exterior routing protocol come il Border Gateway Protocol (BGP) vengono usati per collegare reti differenti appartenenti a diverse organizzazione e, quindi, diversi AS. E’ usato ad esempio tra ISP (internet service provider). Vediamo le caratteristiche di alcuni protocolli, prima IGP e, poi, del BGP.

Il primo protocollo IGP che vedremo è il RIP (Routing Information Protocol) che è un protocollo distance vector che usa come metrica il numero di hop (ovvero di router) che si attraversano per arrivare fino a destinazione. Gli aggiornamenti sulle tabelle di routing vengono inviate di default ogni 30 secondi e, nella prima versione del protocollo, la metrica massima è di 15 hop.
L’Interior Gateway Routing Protocol (EIGRP) è un protocollo distance vector proprietario Cisco. Esso invia di default gli aggiornamenti sulle tabelle di routing e la metrica è calcolata in maniera più complessa rispetto al RIP tenendo in considerazione diversi fattori della rete come la banda, il carico, il ritardo e l’affidabilità.
L’OSPF (Open Shortest Path First) è, al contrario dei primi 2, un protocollo link state. E’ un protocollo non propietario e aperto che utilizzalo l’SPF (Shortest Path First) per calcolare il percorso a costo minimo fino a destinazione. Gli aggiornamenti sulla topologia vengono inviati solamente quando vi sono variazioni della stessa.

L’ultimo protocollo IGP che vediamo in questo breve articolo è l’Enhanced Interior Gateway Routing Protocol (EIGRP) che è anch’esso un protocollo proprietario Cisco e apporta delle migliorie al protocollo IGRP. E’ un protocollo di routing distance vector migliorato in quanto ha delle caratteristiche prese dai protocolli link state; per questo motivo usa un particolare algoritmo per il calcolo per percorso migliore che prende il nome di Diffusing Update Algorithm (DUAL). Gli aggiornamenti di routing vengono inviati in multicast e solamente quando vi sono variazioni della rete.
Concludiamo vedendo le caratteristiche del BGP. Esso è un protocollo distance vector adattato per l’exterior routing protocol usato nelle comunicazioni tra ISP e ISP o tra ISP e clienti. Ha il compito di indirizzare il traffico internet tra i sistemi autonomi.

Nei prossimi articoli parleremo più in dettagli dei vari protocolli IGP vedendone la configurazione sui route Cisco.