# Protocolli e architetture di instradamento/Routing Information Protocol

Protocolli e architetture di instradamento
Copertina Tutti i moduli · Sviluppo
    CopertinaProtocolli e architetture di instradamento/Copertina
* Algoritmi di instradamento
** Inoltro e instradamentoProtocolli e architetture di instradamento/Inoltro e instradamento
** Algoritmi di instradamentoProtocolli e architetture di instradamento/Algoritmi di instradamento
** L'algoritmo Distance VectorProtocolli e architetture di instradamento/L'algoritmo Distance Vector
** L'algoritmo Link StateProtocolli e architetture di instradamento/L'algoritmo Link State
** Instradamento gerarchicoProtocolli e architetture di instradamento/Instradamento gerarchico
** Instradamento inter-dominioProtocolli e architetture di instradamento/Instradamento inter-dominio
** Instradamento multicastProtocolli e architetture di instradamento/Instradamento multicast
* Protocolli di instradamento
** Routing Information ProtocolProtocolli e architetture di instradamento/Routing Information Protocol
** IGRP e EIGRPProtocolli e architetture di instradamento/IGRP e EIGRP
** Open Shortest Path FirstProtocolli e architetture di instradamento/Open Shortest Path First
** Instradamento inter-dominio: peering e transito in InternetProtocolli e architetture di instradamento/Instradamento inter-dominio: peering e transito in Internet
** Border Gateway ProtocolProtocolli e architetture di instradamento/Border Gateway Protocol
** Instradamento IPv6Protocolli e architetture di instradamento/Instradamento IPv6
** Instradamento multicastProtocolli e architetture di instradamento/Instradamento multicast2
** Content Delivery NetworkProtocolli e architetture di instradamento/Content Delivery Network
* Elaborazione di rete
** Cenni sull'architettura degli apparati di reteProtocolli e architetture di instradamento/Cenni sull'architettura degli apparati di rete
** Filtraggio dei pacchetti basato su softwareProtocolli e architetture di instradamento/Filtraggio dei pacchetti basato su software
** Introduzione alle Software-Defined NetworkProtocolli e architetture di instradamento/Introduzione alle Software-Defined Network
Modifica il sommario
Il Routing Information Protocol (RIP) è un protocollo di instradamento intra-dominio basato sull'algoritmo Distance Vector (DV). RIP versione 1 fu definito nel 1988 e fu il primo protocollo di instradamento utilizzato su Internet.
RIP, a seconda dell'implementazione, include i meccanismi dell'orizzonte limitato, del route poisoning e del path hold down per limitare la propagazione di informazioni di instradamento non corrette.
Il RIP è adatto per reti piccole, stabili e omogenee:
* piccole: la metrica è basata semplicemente sul numero di hop (ogni link ha costo 1), ma non si può superare il limite di 16 hop → non sono ammessi più di 15 router in cascata in uno stesso dominio RIP;
* stabili: cambiamenti di stato possono scatenare dei transitori di lunga durata;
* omogenee:
** link omogenei: non è possibile differenziare i costi su link diversi in base alla larghezza di banda;
** router omogenei: ogni router deve terminare l'elaborazione prima di produrre il suo nuovo DV → la durata del transitorio è legata alle prestazioni del router più lento.

## Formato dei pacchetti

I pacchetti RIP hanno il formato seguente:
Formato di un pacchetto RIP (da 24 a 504 byte). :
| 8 | 16 | 32 | |
| Command | Version (1) | 0 | |
| Address Family Identifier | Address Family Identifier | 0 | $\times \,N\leq 25$ |
| $\times \,N\leq 25$ |||
| $\times \,N\leq 25$ |||
| $\times \,N\leq 25$ |||
| $\times \,N\leq 25$ |||
dove i campi più significativi sono:
* campo Command (1 byte): specifica il tipo di messaggio:
** valore "Response": il pacchetto trasporta un DV contenente uno o più indirizzi;
** valore "Request": un router appena connesso alla rete notifica i vicini della sua presenza → i vicini invieranno in risposta i loro DV senza dover attendere il timeout, aumentando la velocità di convergenza;
* campo Address Family Identifier (2 byte): specifica il protocollo di livello rete utilizzato (ad es. valore 2 = IP);
* campo IP Address (4 byte): specifica l'indirizzo IP annunciato (senza netmask). Possono essere annunciati fino a 25 indirizzi in un singolo pacchetto RIP;
* campo Metric (4 byte): specifica il costo relativo all'indirizzo annunciato.

### Incapsulamento

Il pacchetto RIP è incapsulato in un pacchetto UDP:
* la porta UDP di destinazione è la porta 520, che all'epoca fu scelta come meccanismo di sicurezza dato che le porte inferiori a 1024 possono essere utilizzate solo sotto privilegi amministrativi;
* l'indirizzo IP di destinazione è l'indirizzo broadcast (255.255.255.255) → tutti gli apparati possono riceverlo, compresi gli host, anche se conviene disabilitare i protocolli di instradamento al lato host per proteggerli da attacchi malevoli e apprendere rotte migliori ascoltando gli eventuali messaggi ICMP Redirect:

## Timer

Il RIP è pesantemente basato su timer:
* è difficile rispettare precisamente dei timer fissati perché la CPU potrebbe essere impegnata → le incertezze introducono degli ulteriori ritardi;
* tutti i router nella rete devono usare gli stessi timer, altrimenti i router possono interagire in modo non coordinato.

### Routing update timer (predefinito 30 s)

Definisce ogni quanto tempo vengono inviati i messaggi Response gratuiti contenenti le informazioni sui DV.

#### Sincronizzazione dei router

Si cerca di evitarla non reimpostando il routing update timer all'invio di un triggered update e inviando i messaggi Response gratuiti con un ritardo variabile tra 25 e 35 secondi.

### Route invalid timer (predefinito 180 s)

Definisce il tempo per cui una entry può rimanere valida nella tabella di instradamento senza che venga rinfrescata. Quando scade il route invalid timer, il numero di hop della entry viene impostato al costo infinito (16), contrassegnando la destinazione come irraggiungibile.

#### Rilevamento dei guasti

Il router invalid timer è soprattutto utile per rilevare una connettività mancante verso un vicino quando il segnale "link down" non è disponibile.

### Route flush timer (predefinito 240 s)

Definisce il tempo per cui una entry può rimanere nella tabella di instradamento senza che venga rinfrescata. Quando scade il route flush timer, la entry viene cancellata dalla tabella di instradamento.

#### Route poisoning

Quando il route invalid timer scade e la entry viene contrassegnata come non valida, rimangono 60 s (con i valori predefiniti) in cui il router può annunciare la destinazione a costo infinito, per informare gli altri router prima che la entry venga cancellata.

### Hold down timer (predefinito 180 s)

Definisce il tempo per cui una entry non può subire modifiche in seguito a un sospetto inizio di count to infinity. L'hold down timer è una funzionalità proprietaria di Cisco.

#### Path hold down

L'hold down timer parte quando il numero di hop sta salendo a un valore più alto, per evitare di innescare un count to infinity e consentire alla rotta di stabilizzarsi.

#### Route poisoning

Anche una destinazione bloccata dall'algoritmo path hold down può essere propagata a costo infinito.

## Limitazioni
### Netmask

La prima versione di RIP fu definita quando era ancora in uso l'indirizzamento classful, dove la subnet mask può essere ricavata automaticamente dall'indirizzo di rete stesso → gli indirizzi di rete annunciati nei DV sono privi di informazioni sulle netmask → la versione 1 di RIP può essere usata solo in reti dove ogni indirizzo appartiene a una classe di indirizzi secondo le vecchie regole dell'indirizzamento classful.
È possibile adottare uno stratagemma per far funzionare la versione 1 di RIP in reti con indirizzi a netmask di lunghezza variabile: dato un indirizzo di rete annunciato, il router esamina gli indirizzi di rete assegnati alle interfacce connesse:
* se ad almeno un'interfaccia è assegnato un indirizzo avente una subnet mask uguale alla subnet mask dell'indirizzo annunciato, il router assume come netmask dell'indirizzo annunciato la netmask dell'indirizzo dell'interfaccia;
* se a nessuna interfaccia è assegnato un indirizzo avente una subnet mask uguale alla subnet mask dell'indirizzo dato, il router assume come netmask dell'indirizzo annunciato la sua subnet mask.

#### Problemi

Può essere assunta una netmask errata se:
* nessuna delle interfacce del router ha la subnet mask cercata;
* l'indirizzo annunciato ha in realtà una netmask diversa da quella dell'indirizzo dell'interfaccia selezionata.

### Limite di numero di hop

Il RIP definisce il limite di numero di hop uguale a 16 → le destinazioni la cui distanza è maggiore di 15 sono considerate non raggiungibili.
Un valore massimo così basso è stato scelto per limitare il ben noto problema del count to infinity degli algoritmi basati su DV: quando il costo di una rotta raggiunge il valore 16, la rotta è considerata irraggiungibile e il costo non può salire ancora di più.
Questo non significa che la rete non può avere più di 15 router in cascata: l'unico effetto è che due router troppo distanti non possono comunicare tra loro direttamente. È possibile risolvere questo problema partizionando la rete in due domini di instradamento, controllati da due differenti istanze di protocollo RIP, e attivando il processo di ridistribuzione tra di essi in modo da "falsificare" i costi delle rotte esterne.

### Mancanza del campo "age"

Il RIP non associa un campo "age" alle rotte nei DV → le informazioni annunciate possono essere vecchie, ma il router che le riceve le assume come nuove e reimposta i timer a zero → la durata del transitorio aumenta tanto più quanto ci si allontana dal cambiamento di stato.

#### Esempio

In una rete con topologia A—B—C:
* tempo 0 s: avviene un guasto sul link A—B → il nodo A non è più raggiungibile;
* tempo 179 s: il nodo B annuncia al nodo C il suo DV, l'ultimo a contenere la destinazione A;
* tempo 180 s: il nodo B contrassegna la destinazione A come non raggiungibile;
* tempo 359 s: il nodo C contrassegna la destinazione A come non raggiungibile.

## RIP versione 2

RIP versione 2 estende la prima versione di RIP sfruttando alcuni campi che erano inutilizzati nei messaggi:
Formato di un pacchetto RIP versione 2 (da 24 a 504 byte). :
| 8 | 16 | 32 | |
| Command | Version (2) | Routing Domain | |
| Address Family Identifier | Address Family Identifier | Route Tag | $\times \,N\leq 25$ |
| $\times \,N\leq 25$ |||
| $\times \,N\leq 25$ |||
| $\times \,N\leq 25$ |||
| $\times \,N\leq 25$ |||
dove i nuovi campi sono:
* campo Routing Domain (2 byte): specifica il dominio di instradamento a cui è destinato questo messaggio RIP per la gestione di più domini di instradamento sullo stesso router di frontiera:
* campo Route Tag (2 byte): specifica se l'indirizzo annunciato è una rotta esterna, ovvero è stata appresa tramite un processo di ridistribuzione da un altro dominio di instradamento;
* campo Subnet Mask (4 byte): contiene la netmask associata all'indirizzo di rete annunciato per supportare l'indirizzamento classless;
* campo Next Hop (4 byte): ottimizza l'instradamento quando più router RIP appartengono alla stessa LAN ma a due domini RIP diversi, e quindi il traffico da un dominio all'altro passerebbe sempre dal router di frontiera → il router di frontiera può annunciare di mandare il traffico direttamente al router next hop nell'altro dominio:

### Autenticazione

RIP versione 2 introduce un meccanismo di autenticazione basata su password: un router deve essere autenticato per poter annunciare il suo DV ai suoi vicini.
Se la prima entry nel pacchetto RIP ha il campo "Address Family Identifier" uguale al valore 0xFFFF, allora il resto della entry contiene le informazioni di autenticazione:
Formato della entry di autenticazione in un pacchetto RIP. :
| 16 | 32 |
| 0xFFFF | Authentication Type |
| Authentication ||
dove i campi sono:
* campo Authentication Type (2 byte): solo il tipo "password semplice" è stato definito (valore 2);
* campo Authentication (16 byte): contiene la password in chiaro.
Questo meccanismo di autenticazione è piuttosto debole perché la password può essere facilmente sniffata → è raramente utilizzato. Meccanismi di autenticazione più complessi non sono possibili a causa della mancanza di spazio nel messaggio RIP.

### Multicast

RIP versione 1 invia il DV in broadcast → tutte le entità, compresi gli host, devono elaborare i messaggi RIP.
RIP versione 2 definisce un indirizzo IP multicast (224.0.0.9) di destinazione, in modo che il pacchetto RIP venga ricevuto solo dalle entità che sono iscritte al gruppo multicast → gli host e i router che non utilizzano il protocollo RIP possono scartare il pacchetto a livello data-link.

## Vantaggi

* è adatto per reti piccole, stabili e omogenee;
* richiede poche risorse di elaborazione;
* è semplice da implementare;
* è semplice da configurare (non ci sono i sottodomini come in OSPF);
* è disponibile su un'ampia gamma di apparati, anche su router economici.

## Note

* ↑ Si assumono: valori dei timer predefiniti, no triggered update, no route poisoning.