Archivi tag: ripv2

RIP e RIPv2

L’acronimo RIP sta per Routing Information Protocol e rappresenta uno dei primi protocolli di routing (è stato sviluppato nel 1969 come parte integrante di ARPANET, l’antenata di Internet).

Esso è un protocollo distance-vector e prevede l’invio dell’intera tabella di routing ogni 30 secondi (solo tra i router vicini). La sua distanza amministrativa è 120 e la metrica utilizzata per identificare il costo dei cammini viene calcolata in base al numero di hop, ovvero il numero di salti che un pacchetto compie prima di raggiungere la destinazione.

Il numero massimo di hop supportato dal protocollo in questione è pari a 15. Una rotta avente metrica superiore a 15, di conseguenza, viene marcata come irraggiungibile.

Esistono, inoltre, diversi metodi attraverso i quali è possibile limitare la formazione dei famigerati routing loop. Uno di questi è lo split-horizon, ovvero un router che ha ricevuto l’aupdate di una rotta attraverso una determinata porta (ad esemprio Ethernet0), non potrà rimandare indietro l’update lungo quella stessa porta. Un altro metodo è rappresentato dal route poisoning, letteralmente “avvelenamento di rotta”. Nella fattispecie, per fare in modo che non si formino loop, un router assegna ad una determinata rotta una metrica fittizia pari a 16 (in questo modo la rotta viene “avvelenata”), costringendo i router che hanno ricevuto l’update a scegliere percorsi alternativi. Il RIP fa anche uso dei cosiddetti hold-down timers: quando una rotta è irraggiungibile il router scarterà tutti gli update relativi a quella stessa rotta fino allo scadere del timer (solitamente 180 secondi).

Uno dei maggiori limiti del protocollo in questione è rappresentato dal fatto che ha tempi di convergenza abbastanza elevati, oltre a prevedere l’inoltro degli update mediante broadcast, congestionando pesantemente la linea trasmissiva, soprattutto se la banda dispobile è piuttosto limitata. Inoltre, il RIP è un protocollo classfull, ovvero nell’ambito degli update non invia le subnet mask (impedendo l’uso del VLSM). Tale scelta si è rivelata necessaria in quanto, durante i primi anni di vita del protocollo di routing in questione, le velocità di trasmissione erano piuttosto ridotte e quindi si voleva fare in modo che i RIP-update non appesantissero ulteriormente il collegamento.

Altra pecca relativa al RIP riguarda l’assenza di un meccanismo di autenticazione.

Proprio a causa di queste limitazioni è stata realizzata una versione migliorata del RIP, ovvero RIP version 2 (RIPv2). Tale protocollo, per mantenere la retrocompatibilità con il suo predecessore, usa una matrica basata sugli hop (max 15) ed una distanza amministrativa pari a 120. Nell’ambito degli update, però, invia informazioni relative alle subnet (classless) e prevede un meccanismo di autenticazione basato su password in chiaro (piuttosto vulnerabile) oppure sul digest generato mediante algoritmo MD5. Inoltre, a differenza della versione 1, RIPv2 invia gli update in multicast, più precisamente all’indirizzo 224.0.0.9.

Per completezza, riporto qui di seguito alcuni comandi utili per la configurazione e la gestione del RIP (versione 1 e 2) nell’ambito dei router Cisco.

Per abilitare il rip basta digitare:

Router(config)# router rip

Successivamente, se si vuole utilizzare la versione 2, basta scrivere:

Router(config-router)# version 2

Una volta fatto ciò possiamo dichiarare le reti direttamente connesse al router, le quali verranno propagate mediante gli update:

Router(config-router)# network 10.0.0.0

Router(config-router)# network 172.16.0.0

supponendo che al router siano connesse le reti 10.1.2.0/24 (indirizzo di classe A adattato a classe C) e 172.16.2.0/16 (classe B adattato a classe C). Come potete notare ho utilizzato gli indirizzi 10.0.0.0 e 172.16.0.0, ovvero le majornet, in quanto il RIPv1 non riconosce gli indirizzi “adattati” (ad esempio da classe A a classe C), trattandoli come se fossero appartenenti alla classe originaria (classe A).

Se invece utilizziamo RIPv2, possiamo scrivere:

Router(config-router)# network 10.1.2.0

Router(config-router)# network 172.16.2.0

Nel caso in cui avessimo a che fare con molte subnet simili tra loro, per evitare eventuali errori bisogna disabilitare l’auto summarization mediante il comando:

Router(config-router)# no auto-summary

(vale solo per il RIPv2).

Per abilitare l’autenticazione su una determinata interfaccia occorre digitare:

Router(config-if)# ip rip authentication mode text

(per la password in chiaro)

oppure

Router(config-if)# ip rip authentication mode md5

(per utilizzare md5).

Per ottonere informazioni di diagnostica sullo scambio degli update e sull’autenticazione occorre usare il comando:

Router# debug ip rip

mentre per verificare che una determinata rotta sia stata imparata grazie a tale protocollo di routing basta digitare:

Router# sh ip route

(le rotte marcate con R sono quelle identificate mediante RIP)

Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route

Gateway of last resort is not set

R    10.1.2.0 [120/12] via 192.16.64.2, 00:03:28, Serial0

C    192.16.64.0/24 is directly connected, Serial0

Nei prossimi post ci soffermeremo sull’EIGRP. A presto.