Consulenze presso Eunet srl, via dell'Artigianato 15, 09122 Cagliari 070 753609 Lun - Ven 08:30-13:00 / 14.30-17.00

RIP - Routing Information Protocol

Il protocollo RIP è stato uno dei primi protocolli di routing, reso standard con la RFC1058 nel 1988. La prima versione è conosciuta come RIPv1, la versione successiva RIPv2. Il suo utilizzo viene limitato a reti di piccole dimensioni con un massimo di 16 router.

RIP appartiene alla classe dei protocolli IGP, Interior Gateway Protocol, usati all’interno di uno stesso Autonomous System (AS); di conseguenza, non permette di connettere diversi AS tra di loro. E’ un protocollo Distance-Vector: invia l’intera tabella di routing ai soli router vicini e non conosce l'intero percorso verso una destinazione, ma solo la distanza e la direzione verso quella destinazione.

Direzione e distanza formano un vettore:

  • La direzione è data dal router vicino (next-hop)
  • La distanza è data dalla metrica

Il tipo di metrica usata da RIP è l'hop count (conteggio dei salti): rappresenta il numero di router che un pacchetto deve attraversare per giungere a destinazione. Ciascun router, in una rete nella quale opera il RIP, viene infatti considerato come 1 hop.

Tutte le volte che un router riceve un aggiornamento contenente informazioni modificate, deve aggiornare la propria tabella di routing incrementando di 1 il valore dell'hop count e indicare come next hop l'indirizzo IP del router da cui ha ricevuto il messaggio. La tabella di routing indicherà, per ciascuna entry della tabella, solo il percorso migliore per raggiungere la destinazione desiderata.

Il RIP utilizza pacchetti broadcast UDP per lo scambio di informazioni di routing: ogni 30 secondi vengono spedite informazioni sul routing; tale processo è denominato advertising.

 

RIPv1 e RIPv2: punti comuni

  • Metrica basata sul conteggio degli hop
  • Numero di hop massimo pari a 15
  • TTL che scade al sedicesimo hop
  • Aggiornamenti con intervallo predefinito di 30 secondi
  • Tecniche del Route poisoning, poisoned reverse, split horizon, and holddowns per evitare i routing loops
  • Uso della porta UDP 520 per l’invio degli aggiornamenti
  • Distanza amministrativa pari a 120

Appena un router si avvia, ogni interfaccia configurata con RIP invia un request message, con cui viene richiesto ai router vicini l’invio dell’intera tabella di routing. I router vicini con RIP abilitato rispondono con un response message contenente le informazioni sulle reti conosciute. Queste informazioni vengono valutate nell’ordine seguente:

  • Se vi è l’informazione di una nuova rotta, il router ricevente inserisce la rotta nella tabella di routing.
  • Se la rotta è già nella tabella e la voce proviene da una fonte diversa rispetto alla precedente, la tabella di routing sostituisce la relativa voce solo se la nuova rotta ha una metrica migliore, cioè un numero di hop più basso.
  • Se la rotta è già nella tabella e la voce proviene dalla stessa fonte, la tabella di routing sostituisce la relativa voce anche se la nuova rotta non ha una metrica migliore

Di seguito un esempio della tabella di routing su un router Cisco:

 

Router#show ip route

Gateway of last resort is 10.132.231.1 to network 0.0.0.0

10.0.0.0/29 is subnetted, 2 subnets

C       10.132.231.0 is directly connected, FastEthernet0/0

R       10.231.132.0 [120/1] via 10.132.231.1, 00:00:02, FastEthernet0/0

172.24.0.0/16 is variably subnetted, 2 subnets, 2 masks

C       172.24.32.0/26 is directly connected, FastEthernet0/1

R       172.24.128.0/23 [120/2] via 10.132.231.1, 00:00:02, FastEthernet0/0

R*   0.0.0.0/0 [120/1] via 10.132.231.1, 00:00:02, FastEthernet0/0


Le rotte apprese con RIP sono precedute dalla lettera R. I valori presenti all’interno delle parentesi quadre sono rispettivamente la distanza amministrativa e la metrica, valori seguiti dall’indirizzo del next-hop. Una rete direttamente connessa ha sempre metrica 0 mentre una rete non raggiungibile ha metrica 16 (metrica infinita per RIP). Questo intervallo ridotto di metriche fa si che RIP possa essere utilizzato solo per reti che non superino i 15 apparati.

 

Soluzioni al problema del routing loops

Il routing loop è il circolo indefinito di pacchetti fra 2 o più router, senza che si trovi una via d'uscita. Per chiarire il concetto, vediamo lo schema qui sotto:

Se la connessione fra i router C e D si interrompe, il router C elimina questo percorso dalla tabella di routing, inviando al router B la tabella di routing aggiornata. Il router B rimuove quindi la rotta corrispondente alla rete C-D. Il router A, che ha ancora una rotta verso la rete C-D con metrica 2 appresa da aggiornamenti precedenti, potrebbe comunicare la sua tabella di routing al router B prima di ricevere gli aggiornamenti corretti; in questo caso il router B apprenderà una nuova rotta verso la rete C-D usando A come next-hop e incrementando la metrica a 3. Un altro problema è che il router B comunicherà al router C la nuova rotta per la rete C-D: in ogni caso i pacchetti non raggiungeranno mai la destinazione.

Per evitare questi cicli infiniti, il RIP usa diverse tecniche e algoritmi, che vediamo nel dettaglio:

  • Hop count: il conteggio degli hop può arrivare ad un massimo di 15. Ciò significa che un pacchetto, per arrivare a destinazione, non potrà attraversare un numero di router maggiore di 15 in quanto verrebbe scartato dal sedicesimo. La conseguenza di questo è che il RIP non può essere impiegato in un contesto in cui esistano segmenti separati da più di 15 router; il RIP rimarrà limitato in ambito di LAN non troppo grandi.
  • Hold down timer: se un router A non riceve update da un router B da più di 180 secondi, tempo detto di invalid time, allora pone le rotte nello stato di hold-down. Viene fatto partire l'hold-down timer, che dice per quanto tempo ignorare gli aggiornamenti di rotta con metrica peggiorativa. Le rotte figureranno nella tabella di routing come possibly-down. Se il ritardo degli updates è superiore a 240 secondi, il router A rimuove tutte le rotte comunicate da B perché con molte probabilità il router B è in down. Tuttavia, se durante quest'intervallo di tempo si ricevono aggiornamenti con metrica migliore, il timer viene stoppato e la rotta è considerata di nuovo accessibile.
  • Split horizon: grazie a quest’algoritmo un router che riceve informazioni su una rete da un router adiacente, non può rispedire a quel router informazioni sulla medesima rete. Facendo riferimento all’esempio precedente, una volta che il router B riceve informazioni dal router C sul fatto che la rete C-D non è più attiva, B non potrà rimandare indietro a C informazioni sulla rete C-D.
  • Triggered updates: rende più veloce la convergenza permettendo di inviare messaggi di update nel momento in cui si verificano cambiamenti nella topologia della rete, senza le attese date dagli intervalli predefiniti di 30 secondi.
  • Poison Reverse: può essere considerato come uno split horizon modificato: il router con Poisoned reverse attivo, invece di non spedire informazioni sulle rotte a chi le ha inviate,  le invia impostando la metrica a 16. Poiché RIP definisce come infinita una metrica di 16 hop, ogni rete oltre il 15esimo hop viene considerata come irraggiungibile. Il metodo di split horizon sia con poison reverse che senza, elimina i loops solo fra router adiacenti.

 

Differenze tra RIPv1 e RIPv2

RIPv1 invia gli aggiornamenti di routing in broadcast ogni 30 secondi su tutte le interface attive, mentre con RIPv2 i messaggi vengono inviati in multicast sull’indirizzo 224.0.0.9, interessando solo gli apparati con supporto a RIPv2 e consentendo un risparmio di banda sulla rete.

RIPv1 è un protocollo di routing classfull, pertanto non invia informazioni sulle subnet mask. In altre parole conosce solo le reti di classe A, B o C. Per tale motivo, RIPv1 non supporta le tecniche VLSM e CIDR.

Un router con RIPv1, nell’inviare aggiornamenti verso interfacce con IP estraneo alle reti da annunciare, fornisce l’indirizzo della sola rete classful (classe A, B o C). Nello schema qui sotto posto come esempio, il router con RIPv1, configurato con due interfacce 172.16.1.254/24 e 172.16.2.254/24, invierà aggiornamenti per la sola rete di classe B 172.16.0.0 verso la seriale con IP 10.0.0.1. Possiamo vedere infatti che la tabella di routing del router a destra contiene la 172.16.0.0/16 e non le due singole sottoreti 172.16.1.0/24 e 172.16.2.0/24.

 

Al contrario, se gli aggiornamenti sono inviati su un’interfaccia il cui IP appartiene alla stessa rete classful delle subnet annunciate (nell’esempio la seriale 172.16.3.254 appartiene alla classe B, così come le interfacce 172.16.2.254 e 172.16.1.254), verranno inviati gli indirizzi delle singole sottoreti. Nello schema seguente, possiamo vedere infatti che la tabella di routing del router a destra contiene le sottoreti 172.16.1.0/24 e 172.16.2.0/24.

 

Vediamo un altro caso: il router sulla parte sinistra invierà aggiornamenti al router centrale comunicando la sola rete classful 172.16.0.0/16 (infatti si invia sull’interfaccia 10.0.0.1 il cui IP non appartiene alla classe B 172.16.0.0). Anche il router sulla parte destra invierà aggiornamenti al router centrale comunicando la sola rete classful 172.16.0.0/16. Il primo problema è che il router centrale avrà due rotte con metrica 1 per la rete 172.16.0.0/16. Il secondo problema è legato al meccanismo dello split-horizon, per il quale un router che inoltra le proprie tabelle di routing ai vicini, omette per ciascun vicino gli specifici percorsi appresi da quel router stesso. Nel nostro caso, il router centrale che ha ricevuto la rotta 172.16.0.0/16 su tutte due le porte, non potrà inoltrare su quelle porte aggiornamenti riguardanti la stessa rete. Nella tabella di routing del router a destra si può notare infatti che non vi è alcuna rotta verso le reti 172.16.1.0/24 e 172.16.2.0/24.

(1 Vote)