# Routing Information Protocol

In telecomunicazioni e informatica Routing Information Protocol (RIP) è un protocollo di routing di tipo distance vector, che impiega il numero di hop come metrica. Evita i routing loop adottando un limite massimo di hop dalla sorgente verso la destinazione: il numero massimo di hop consentito è 15. Questo numero di hop limita in ogni caso il diametro della rete consentito da RIP. Un numero di hop equivalente a 16 viene considerato come metrica infinita per indicare le rotte inaccessibili che non verranno installate in tabella di routing.

## Descrizione

RIP implementa lo split horizon, route poisoning and hold down timer per evitare di annunciare false informazioni di routing. Queste sono alcune caratteristiche che RIP adotta per incrementare la stabilità. È anche possibile utilizzare l'algoritmo RMTI (Routing Information Protocol con Metric-based Topology Investigation) per far fronte al problema del count-to-infinity. In questo modo è possibile rilevare ogni possibile loop con una spesa di calcolo inferiore.
In origine ogni router RIP inviava aggiornamenti completi ogni 30 secondi. A quel tempo le tabelle di routing erano ridotte e di conseguenza la banda impiegata per gli aggiornamenti. Con la crescita delle reti è risultato evidente che sarebbe potuto esserci un picco di traffico non indifferente ogni 30 secondi, anche nel caso in cui i router fossero avviati in maniera asincrona. Si credeva che, a fronte di un boot asincrono, gli updates di routing sarebbero stati differenziati nel tempo. Sally Floyd e Van Jacobson hanno dimostrato nel 1994 che, senza leggere variazioni dei timer di update, dopo un lasso di tempo i timer si sincronizzavano automaticamente.
Nella maggior parte degli scenari attuali, RIP non viene utilizzato come prima scelta poiché convergenza e scalabilità sono qualitativamente inferiori rispetto a EIGRP, OSPF o IS-IS (questi ultimi due sono protocolli link-state) e (senza RMTI) avere un limite di hop limita parecchio la dimensione di utilizzo della rete. Tuttavia RIP è facile da configurare a causa dei pochi parametri rispetto ad altri protocolli di routing.
RIP utilizza UDP come protocollo di trasporto, sulla porta riservata 520.

### Caratteristiche

RIP è stato sviluppato nel 1989 come parte di ARPANET e usa l'algoritmo di Bellman-Ford. La struttura del protocollo è basata su parole di 32 bit e il pacchetto può avere dimensione variabile fino a 512 byte. RIP è un protocollo di routing distance-vector che impiega il conteggio dei numeri di salti (hop count) come metrica di routing. Il massimo numero di hop permessi è 15. Ogni router RIP trasmette di default, ogni 30 secondi, la propria tabella di routing completa a tutti i vicini direttamente collegati, generando grandi quantità di traffico di rete su reti a bassa capacità trasmissiva. Oltre a questo è possibile che ci si avvalga di Triggered Update per inviare dati in momenti differenti da quelli del broadcast.
Lavora sopra il livello di rete della suite TCP/IP, usando UDP sulla porta 520 per trasportare i relativi dati. Seppur a livello fisico esso sia a tutti gli effetti un protocollo di livello applicazione, esso è comunemente considerato un protocollo di livello 3 (rete): il fatto di utilizzare UDP come protocollo dati è infatti una mera comodità dal punto di vista dell'implementazione del protocollo stesso e non una necessità per il suo funzionamento; il protocollo di fatto non interagisce con l'utente, ma serve per trasportare informazioni utili a livello di rete.
Opzionalmente può utilizzare un meccanismo di ottimizzazione denominato split horizon il cui scopo è quello di evitare che, in presenza di determinate topologie di rete, si creino dei routing-loop. Per evitare che variazioni continue della topologia di rete (si pensi ad esempio ad un cavo difettoso) generi un eccessivo traffico utile alla fase di aggiornamento, si è introdotto il concetto di Hold Down, con il quale due variazioni successive dello stesso elemento possono essere ritardate fino a 60 secondi. Per evitare di inviare pacchetti troppo grandi, non si possono inserire in un pacchetto più di 25 righe relative alla tabella di routing.
In molti ambienti di rete RIP non è la prima scelta tra i protocolli di routing poiché il tempo di convergenza è lungo e ha una scalabilità della rete modesta se confrontato con OSPF o IS-IS, inoltre il basso numero di hop supportati limita severamente la grandezza della rete. D'altra parte, è molto facile da configurare ed è implementato anche nei router di fascia bassa.

### Versioni

Ci sono 3 versioni di RIP: RIPv1, RIPv2 e RIPng.
* RIPv1, definito da RFC 1058, usa il routing "classful". Gli aggiornamenti delle tabelle di routing non contengono la maschera di sottorete rendendo impossibile la creazione di sottoreti di dimensione differente all'interno della stessa classe di rete. Non viene supportata nessuna forma di autenticazione, lasciando RIPv1 vulnerabile ad attacchi;
* RIPv2, è stato sviluppato nel 1994 e definito da RFC 2453, include il trasporto delle informazioni sulla maschera di sottorete, supportando così il Classless Inter-Domain Routing, CIDR. Per garantire la sicurezza degli aggiornamenti sono disponibili 2 metodi: autenticazione semplice con testo in chiaro e MD5, (RFC 2082). Per mantenere la retrocompatibilità il limite di hop count rimane a 15;
* RIPng, (RFC 2080), è una estensione del protocollo originale RIPv1 per supportare IPv6; utilizza UDP sulla porta 521 e non 520, e così può convivere sullo stesso host con una versione per IPv4 (cfr RFC 2080 pag 4).