Caratteristiche
Il RIP è un protocollo di routing basato su "distance vector". Il RIP nasce intorno agli anni '80 ed è stato implementato da un protocollo proprietario della Xerox come protocollo di routing. Questa prima versione è stata modificata in seguito, come nelle reti Apple, Novelle e infine da TCP/IP. La standardizazzione è del 1988, anche se il protocollo era in uso da anni. Lo si può trovare in moltissime applicazioni come nel demone ruote di UNIX. Non tutte le implementazioni (come quella CISCO) sono standard, ma spesso sono interoperabili.
Per il RIP il costo tra diversi router è detto "hop count". Gli hop count possono essere dinamici. I costi, considerati come hop count, vanno comunque sempre confrontati con la velocità del collegamento, in quanto percorsi con costi uguali ma con velocità diverse, portano a tempi di trasmissione diversi. Il RIP è pensato per reti omogenee, quindi con link con stesse velocità.
Pacchetto
Il pacchetto è contenuto in Ethernet+IP+Udp, ed è quindi di livello superiore al terzo, anche se il protocollo di routing dovrebbe essere di livello 3. IP è necessario per mandare i pacchetti a tutte le macchine connesse alle rete (non basta ethernet per le reti logiche). Grazie all'utilizzo di IP è possibili avere reti logicamente distinte anche se collegate fisicamente (reti confinate). UDP è utilizzato perché crea applicazioni in modo semplice. In questo modo RIP non deve creare pacchetti da zero (comodità implementativa). La porta standard usata da RIP è la 520 (numero minore di 1024, in modo da essere considerato un processo amministrativi).
All'interno dei pacchetti si trovano diversi campi:
Command - 8B: request/response. La request serve per segnalare che un router si è collegato. Mandando questo messaggio esso entra subito nella rete, segnalando agli altri router, che necessita dei loro pacchetti di distance vector.
Version - 8b: versione del protocollo (=1).
Must be zero - 16b: per allineare meglio il pacchetto su 32 bit. In più, siccome RIP deriva da implementazioni precedenti, sono rimasti alcuni campi ora inutilizzati.
Address Family Id - 16b: E' un codice che mi dice che tipo di indirizzi trasporto nel pacchetto (IP,…). Non è mai stato utilizzato con protocolli diversi da IP, anche se sarebbe in grado di funzionare.
Must be zero - 16b
Ip Address - 32b: Indirizzo IP della rete che voglio annunciare.
Must be zero - 32b: Servono nel caso in cui non si usi IP, per farci stare indirizzi più lunghi di 32b. Nonostante questo non ci sta IPv6. Infatti per esso si utilizza una versione aggiornata di RIP, detta RIP6.
Must be zero - 32b
Metric - 32b: va da 0 a 16.
Gli ultimi 4 campi vengono ripetuti una serie di volte, in modo da inserire più record nell'algoritmo di distance vector. Il limite massimo è 20, poi bisogna mandare un nuovo pacchetto.
In questo pacchetto manca la NETmask, essenziale per sapere quanto grossa è la rete. Quindi questo protocollo funzionava correttamente solo fino a quando IP era classfull, nel senso che dall'indirizzo IP era possibile capire quanto era grossa la rete. Da quanto si pul capire RIPv1 non è più in uso.
Timer
All'interno dei router che usano RIP sono presenti dei timer:
-Routing update timer (30s), indica la periodicità dell'invio degli annunci dei distance vector. In realtà non sono esattamente 30s, sono da 25s a 35s, in modo da non far sovrapporre tutti i distance vector dei vari router.
-Route invalid timer (180s), è il tempo dopo il quale una rotta viene dichiarata non disponibile, se non si ricevono update.
-Route flush timer (180s+60s=240s), è il tempo per cui una rotta irraggiungibile viene comunque tenuta attiva, in modo da comunicare agli altri router che la rotta è irraggiungibile. Se il ruote flush time fosse uguale al ruote invalid time, la comunicazione che la rotta non è più raggiungibile avverrebbe una sola volta e quindi potrebbe andare persa, facendo impiegare a tutti gli altri router 180s per accorgersi della fine della rotta.
-Holddown timer (180s), è il tempo per cui una rotta che ha un aumento di hop count, non viene segnalato nei pacchetti RIP che invio. Se però l'aumento avviene su un ramo collegato direttamente ad un router, la comunicazione avviene immediatamente; quindi questo timer vale solo per i router che riceveranno la comunicazione. Questo timer è presente solo negli apparati Cisco. E' stato pensato per evitare che vengano modificati i dati su tutti i router, quando si tratta solo di un cambiamento momentaneo.
Velocità di convergenza
All'interno di RIP esistono diversi stratagemmi per aumentare la velocità di convergenza dell'algoritmo di distance vector:
-triggered updates, sono i distance vector inviati immediatamente per segnalare una variazione, cioè senza aspettare il routing update timer. Non sono l'intero distance vector, ma solo quelle che hanno subito modifiche. Sono inviati con un ritardo variabile tra 1 e 5 secondi (per evitare variazioni troppo veloci, quindi situazioni di transitorio e per comunicare più variazioni contemporaneamente). Questi pacchetti non azzerano il routing update timer.
-hop count limit. In RIP l'infinito vale 16. Non è quindi possibili avere catene di router in cascata maggiori di 15.
-ruote poisoning. Se una rotta è irraggiungibile viene annunciata a costo infinito, e quindi viene annunciata come non più connessa.
-cold down. In verità alcuni router, tra cui quelli della famiglia CISCO non hanno implementato l'hold down timer secondo la teoria. Infatti dalle catture l'hold down timer scatta solo nel caso in cui un ramo diventa infinito e a volte neanche in quel caso. Non si spiega.
-split horizon, è come quello della teoria del distance vector.
RIP-2
RIP-2 è una nuova versione di RIP (1990). E' interoperabile con RIPv1 e permette di implementare le maschere. E' introdotta una autenticazione, serve a proteggere RIP (per mezzo di simple password). In più al posto che inviare i pacchetti in broadcast, RIP-2 li manda ad un indirizzo IP multicast. Cambia rispetto alla versione precedente, oltre al campo version (=2), nei campi, che prima erano lasciati a zero:
-Routing Domain, è possibile differenziare più routing domain fisicamente sulla stessa rete.
-Route Tag, non è usata da RIP, ma è usata per taggare delle ruote fuori dallo stesso ruote domain.
-Subnet Mask, per supportare IP Classless
-Next Hop, serve a usare come next-hop non solo indirizzi dello stesso routing domain, ma a continuare a scambiare i distance vector con un router. Evita dei giri inutili sulla stessa rete.
Configurazione RIP su CISCO
Per configurare il RIP su un router CISCO, bisogna muoversi dalla modalità user alla modalità superutente, con il comando ENABLE. Il cursore diventa un #. Per entrare in modalità configurazione si scrive il comando conf t e il cursore cambia nuovamente in config#. Per abilitare il processo di routing RIP bisogna dare il comando router rip. Il cursore diventa config-routing#. I comandi principali sono:
-config-routing# network [ip], l'indirizzo da inserire può essere sia di rete che di utente. Il comando trasforma automaticamente l'indirizzo dato nell'indirizzo di rete corrispondente. Questo comando indica al router che fa parte di una rete RIP a cui dovrà comunicare i pacchetti RIP. Il RIP verrà abilitato sulla porta IP indicata.
-config-routing# passive-interface [interfaccia], disabilita l'invio dei messaggi RIP su un'interfaccia specificata, ma continua a ricevere RIP. Si possono avere molte altre opzioni impostabili mediante comandi complessi.
-config-routing# version 2, per impostare la versione 2 di RIP. Normalmente il processo parte in versione 1.
-config-routing# no auto-summary, è dovuto al fatto che RIP è fatto per IP classfull, per il quale dato un IP si può sempre ricavare l'indirizzo di rete senza l'uso di maschere. Anche se è impostata version 2, il router non considera le mask, ma solo l'indirizzo network in base alla classe IP.
-config-routing# exit, torna alla modalità precedente
-config-routing# ip split horizon, abilita lo split horizon
-#sh run, mostra la configurazione attuale del router
-#sh ip route, mostra la tabella di RIP.
-#clear ip route, cancella la tabella degli IP.
Per chiudere un processo basta scrivere il comando con il no davanti. (es: no router rip, toglie la configurazione RIP impostata).
I comandi sui router CISCO vengono eseguiti immediatamente, non si possono eseguire gruppi di comandi.
All'interno dell'interfaccia CISCO, non si può inserire la netmask. Questo può causare dei problemi, ad esempio se un router ha più interfacce ma si vuole abilitare RIP solo su un interfaccia. Infatti i router CISCO ricavano automaticamente le netmask.
Esempi di catture
-rete RIP a regime senza Split Horizon. Secondo la teoria ogni router genera un DV uguale su tutte le direzioni (contenenti tutte le destinazioni e i relativi costi) di update. Il costo minimo è 1. Viene indicato il next hop router nel caso in cui ci siano più percorsi uguali allo stesso costo. Dalle catture si può notare anche la temporizzazione (un update ogni 30 secondi circa).
-rete RIP con introduzione di un nuovo router senza Split Horizon. Nel momento in cui si abilita il router viene inviato un pacchetto di RIP request per ogni interfaccia. Gli altri router rispondono con un pacchetto di update, contenenti le reti conosciute (inviato in unicast, non più in multicast). Si nota che queste reply non fanno scattare il timer di 30 secondi dei messaggi di update. A questo punto i router aggiungono nella propria routing table la nuova rete, e mandano un pacchetto di triggered update a tutti i router, in modo da propagare la notizia. Anche in questo caso non scatta il timer. L'algoritmo con il tempo converge.
-rete RIP con introduzione di guasto senza Split Horizon. Nel momento in cui si disattiva una LAN di un router, il router stesso invia un pacchetto di update a tutte le interfacce contenenti l'indirizzo che è diventato irraggiungibile e mette la metrica a 16. Dopo il tempo di hold down oppure dopo aver aspettato un secondo annuncio (nel frattempo i pacchetti di update non subiscono variazioni), la entry viene messa nella routing table a 16. Dopo un po' di tempo la entry viene rimossa. Nel caso in cui si ricevano due annunci di seguito che annunciano il costo infinito di un nodo, dovrebbe cancellarsi la entry, ma se in un tempo molto breve arriva il pacchetto (magari anche errato) di update da un qualunque router che ci indica che il costo per raggiungere quel nodo non è infinito, la entry non viene cancellata. Questo provoca un aggiornamento di tutte i DV di tutta la rete, che continueranno a far crescere il costo del ramo fino a che non ritorna a 16.
-rete RIP a regime con Split Horizon. Secondo la teoria ogni router invia i pacchetti a tutte le interfacce, con le informazioni relative a tutte le reti a meno di quelle a cui si sta spedendo.
-rete RIP con introduzione di guasto con Split Horizon. Nel momento in si disattiva una LAN di un router, il router stesso invia un pacchetto di update a tutte le interfacce contenenti l'indirizzo che è diventato irraggiungibile e mette la metrica a 16. Con lo Split Horizon tutti i router nel momento in cui ricevono l'update inviano a tutte le interfacce l'update. Guardando le catture non succede sempre così, ma non si sa il motivo.
| < Prec. | Succ. > |
|---|






