Routing dinamico: algoritmi e protocolli RIP e OSPF

// obiettivi di apprendimento
Distinguere i due algoritmi fondamentali di routing dinamico: Distance Vector e Link State
Spiegare il funzionamento di RIP (versioni 1 e 2), i suoi limiti e il problema del count-to-infinity
Descrivere l’algoritmo Dijkstra SPF e la struttura a aree di OSPF
Configurare RIP v2 e OSPF single-area su router Cisco IOS
🎬
Video
Routing dinamico: RIP v1
Guarda →
🎬
Video
Routing dinamico: RIP v2
Guarda →
🎬
Video
Routing dinamico: OSPF v2
Guarda →
🎬
Video
Routing dinamico: OSPF multi-area
Guarda →
📄
Slides
Routing dinamico: RIP e OSPF v2
🧪
Lab
Routing dinamico: RIP
GitHub →
🧪
Lab
Routing dinamico: RIPv2
GitHub →
🧪
Lab
Routing dinamico: RIPng
GitHub →
🧪
Lab
Routing OSPF Single Area
GitHub →
🧪
Lab
Routing OSPF Multi Area
GitHub →
🔗
Risorse
PKT Routing RIP
PKT →
🔗
Risorse
PKT Routing RIPv2
PKT →
🔗
Risorse
PKT Routing RIPng
PKT →
🔗
Risorse
PKT Routing ROAS-RIP
PKT →
🔗
Risorse
PKT Routing OSPF Single Area
PKT →
🔗
Risorse
PKT Routing OSPF Multi Area
PKT →

Perché il Routing Dinamico

Nella lezione precedente abbiamo visto che il routing statico funziona bene per reti piccole e stabili. Ma cosa succede in una rete con 200 router, link che cadono e nuove subnet che vengono aggiunte ogni settimana? Riscrivere manualmente le routing table di ogni router ad ogni cambiamento è impraticabile.

Il routing dinamico risolve questo: i router si parlano tra loro, scambiano informazioni sulle reti che conoscono e costruiscono automaticamente le proprie routing table. Se un link cade, la notizia si propaga e le route vengono aggiornate — senza intervento umano.

// definizione formale
Un protocollo di routing dinamico è un insieme di regole e algoritmi che i router usano per scoprire le reti raggiungibili, calcolare i percorsi migliori e propagare automaticamente le informazioni di raggiungibilità. I protocolli interni a un’organizzazione si chiamano IGP (Interior Gateway Protocol); quelli tra organizzazioni diverse EGP (Exterior Gateway Protocol).

I Due Grandi Algoritmi

Tutti i protocolli di routing dinamico si basano su uno di due algoritmi fondamentali. Il modo in cui ogni router “vede” la rete è completamente diverso nei due approcci.

CaratteristicaDistance VectorLink State
Informazione scambiataDistanza e direzione verso ogni rete (la propria routing table)Stato di ogni link diretto (topologia locale)
Visione della reteParziale — ogni router vede solo i viciniCompleta — ogni router ha la mappa dell’intera rete
Calcolo percorsoBellman-Ford (distribuito)Dijkstra SPF (locale su ogni router)
ConvergenzaLenta (decine di secondi o minuti)Rapida (secondi)
Uso CPU/RAMBassoAlto (mantiene LSDB e ricalcola SPF)
ScalabilitàLimitata (max 15 hop in RIP)Elevata (centinaia di router)
ProtocolliRIP, EIGRP (ibrido)OSPF, IS-IS

Distance Vector: l’algoritmo di Bellman-Ford

Nel modello Distance Vector ogni router conosce solo i propri vicini diretti. Periodicamente invia a ciascun vicino la propria routing table completa — “io so raggiungere queste reti con questo costo”. Il vicino riceve la tabella, aggiunge il costo del link verso il mittente e aggiorna la propria routing table se trova un percorso migliore.

La metafora: immagina di chiedere indicazioni in un paese straniero. Non conosci la mappa — chiedi alla persona accanto, che ti dice “il municipio è a 3 km da me”. Tu sei a 1 km da lei, quindi concludi che il municipio è a 4 km da te. Nessuno ha mai visto l’intera mappa.

// problema — count to infinity

Se un link cade, i router Distance Vector possono cadere in un loop di aggiornamenti: A dice a B “raggiungo X in 2 hop”, B (che aveva già rimosso X) aggiorna la sua tabella con 3 hop, A vede la tabella di B e aggiorna a 4, B aggiorna a 5… e così via fino a un valore massimo che indica irraggiungibilità (16 in RIP). Questo rallenta enormemente la convergenza.

Meccanismi anti-loop in Distance Vector

TecnicaFunzionamento
Split HorizonNon pubblicare una route sull’interfaccia da cui è stata appresa. Se B ha appreso X da A, non re-annuncia X ad A
Route PoisoningQuando una rete diventa irraggiungibile, annunciarla con metrica infinita (16 in RIP) invece di rimuoverla. Forza la convergenza immediata
Holddown TimerDopo aver ricevuto un route poisoning, ignorare aggiornamenti sulla stessa route per un certo tempo. Evita di accettare informazioni stantie da router non ancora aggiornati
Triggered UpdateInviare subito un aggiornamento quando lo stato di una route cambia, senza aspettare il timer periodico

RIP — Routing Information Protocol

RIP è il protocollo Distance Vector più semplice e storico. La sua metrica è il numero di hop — il numero di router attraversati per raggiungere una destinazione. È semplice da capire e configurare, ma ha limiti importanti.

RIP v1 vs RIP v2

CaratteristicaRIPv1RIPv2
AggiornamentiBroadcast 255.255.255.255Multicast 224.0.0.9
Subnet maskNon inclusa — classfulInclusa — classless (VLSM)
AutenticazioneNessunaMD5 supportato
StandardRFC 1058 (1988)RFC 2453 (1998)

Caratteristiche e limiti di RIP

  • Metrica: hop count. Massimo 15 hop — 16 significa irraggiungibile. Reti con più di 15 router non sono supportate
  • Aggiornamenti: inviati ogni 30 secondi (timer update), indipendentemente dai cambiamenti
  • Convergenza lenta: in reti grandi possono volerci minuti prima che tutti i router sappiano di un guasto
  • Nessuna metrica di banda: RIP preferisce il percorso con meno hop, anche se un link a 56 Kbps batte un link a 1 Gbps con un hop in più
  • Administrative Distance: 120 (bassa affidabilità rispetto a OSPF)

Configurazione RIPv2 su IOS

Router(config)# router rip
Router(config-router)# version 2
Router(config-router)# no auto-summary          ! disabilita il summarizing classful
Router(config-router)# network 192.168.1.0      ! annuncia la rete direttamente connessa
Router(config-router)# network 10.0.0.0         ! annuncia un'altra rete connessa
Router(config-router)# passive-interface GigabitEthernet0/0  ! non invia RIP su questa interfaccia

! Verifica
Router# show ip rip database
Router# show ip protocols
Router# debug ip rip                            ! mostra aggiornamenti RIP in real-time
// nota — passive-interface

Il comando passive-interface dice al router di annunciare la rete su quell’interfaccia (così gli altri router la conoscono) ma di non inviare aggiornamenti RIP su quella porta. Si usa tipicamente verso le interfacce LAN o verso host — non ha senso inviare aggiornamenti di routing agli switch o ai PC.

Link State: l’algoritmo di Dijkstra (SPF)

Nel modello Link State ogni router conosce l’intera topologia della rete. Come? Ogni router genera un LSA (Link State Advertisement) — un annuncio che descrive i propri link diretti e il loro stato/costo. Gli LSA vengono inondati (flooded) a tutta la rete: ogni router riceve gli LSA di tutti gli altri e li conserva nel LSDB (Link State Database).

Con la mappa completa in mano, ogni router esegue localmente l’algoritmo di Dijkstra (SPF — Shortest Path First) per calcolare il percorso più breve verso ogni destinazione. Il risultato alimenta la routing table.

La metafora: anziché chiedere indicazioni a caso, hai Google Maps con la mappa completa della città. Puoi calcolare il percorso ottimale da solo, senza dover fidarti di nessuno.

OSPF — Open Shortest Path First

OSPF è il protocollo Link State più diffuso nelle reti enterprise. È aperto (non proprietario), scala bene e converge rapidamente. La sua metrica è il cost, calcolato come 10⁸ / bandwidth dell’interfaccia in bps (default IOS).

Struttura a Aree

OSPF organizza i router in aree. Ogni area ha il proprio LSDB — i router all’interno di un’area conoscono la topologia dettagliata solo della propria area. I router di bordo (ABR — Area Border Router) riassumono le informazioni tra aree diverse.

// struttura aree OSPF
Area 0 (Backbone): obbligatoria, è la “spina dorsale”. Tutte le altre aree devono connettersi ad essa
Aree normali (1, 2, …): aree non-backbone. Ricevono tutte le route dall’area 0
ABR (Area Border Router): connette due o più aree, ha LSDB per ciascuna
ASBR (AS Boundary Router): redistribuisce route da altri protocolli (es. RIP → OSPF)

Per reti piccole si usa OSPF single-area: tutti i router appartengono ad Area 0. Semplice, non richiede ABR.

DR e BDR su reti broadcast

Su reti con accesso multiplo (Ethernet con uno switch e N router), invece di far scambiare LSA a tutte le coppie di router (O(n²) messaggi), OSPF elegge un DR (Designated Router) e un BDR (Backup DR). Tutti i router inviano i loro LSA solo al DR/BDR, che poi li distribuisce agli altri. Riduce drasticamente il traffico di controllo.

L’elezione avviene in base alla Router Priority (default 1, valore più alto vince) e in caso di parità al Router ID più alto (IP più alto tra le interfacce loopback, o l’IP più alto tra le interfacce fisiche).

Processo di adiacenza OSPF — stati

StatoDescrizione
DownNessun pacchetto Hello ricevuto
InitHello ricevuto ma il proprio Router ID non è ancora nella lista vicini
2-WayComunicazione bidirezionale confermata. Qui avviene l’elezione DR/BDR
ExStartNegoziazione del master/slave per lo scambio di DBD
ExchangeScambio dei DBD (Database Description) — sommario dei LSDB
LoadingRichiesta LSR degli LSA mancanti, risposta con LSU
FullLSDB sincronizzato. Adiacenza completa ✅

Configurazione OSPF single-area su IOS

! Configurazione base OSPF area 0
Router(config)# router ospf 1                   ! 1 = process ID (locale, non deve coincidere tra router)
Router(config-router)# router-id 1.1.1.1        ! assegna manualmente il Router ID
Router(config-router)# network 192.168.1.0 0.0.0.255 area 0   ! wildcard mask = inverso della subnet
Router(config-router)# network 10.0.0.0 0.0.0.3 area 0
Router(config-router)# passive-interface GigabitEthernet0/0   ! interfaccia LAN, non inviare Hello

! Modificare il costo di un'interfaccia
Router(config-if)# ip ospf cost 10

! Verifica
Router# show ip ospf neighbor                   ! stato delle adiacenze
Router# show ip ospf database                   ! contenuto del LSDB
Router# show ip route ospf                      ! solo le route apprese da OSPF
Router# show ip ospf interface brief            ! costo, DR/BDR, stato per interfaccia
// attenzione — wildcard mask

In OSPF il comando network usa la wildcard mask (inverso della subnet mask). Per /24 la wildcard è 0.0.0.255, per /30 è 0.0.0.3, per /32 (host) è 0.0.0.0. Non confonderla con la subnet mask — un errore qui è causa frequente di adiacenze mancate in laboratorio.

Confronto RIP vs OSPF

CaratteristicaRIPv2OSPF
AlgoritmoDistance Vector (Bellman-Ford)Link State (Dijkstra SPF)
MetricaHop count (max 15)Cost = 10⁸/bandwidth
AggiornamentiPeriodici ogni 30 s (multicast 224.0.0.9)Triggered su cambio topologia (multicast 224.0.0.5/6)
ConvergenzaLenta (minuti in reti grandi)Rapida (secondi)
ScalabilitàMax ~15 hop, non adatto a grandi retiCentinaia di router, supporta aree
VLSM / CIDRSì (v2)
Administrative Distance120110
StandardRFC 2453RFC 2328 (OSPFv2), RFC 5340 (OSPFv3 per IPv6)
Uso tipicoReti piccole, lab didatticiReti enterprise, provider regionali

Ridistribuzione tra protocolli

In alcuni scenari coesistono reti con protocolli diversi (es. una filiale ancora su RIP integrata in un’infrastruttura OSPF). La ridistribuzione permette di importare route da un protocollo in un altro:

! Ridistribuzione di RIP in OSPF
Router(config)# router ospf 1
Router(config-router)# redistribute rip subnets metric 20

! Ridistribuzione di OSPF in RIP
Router(config)# router rip
Router(config-router)# redistribute ospf 1 metric 5
// attenzione — routing loops da ridistribuzione

La ridistribuzione bidirezionale tra due protocolli è un’operazione delicata: può generare loop di routing se non vengono usate route-map e tag per filtrare le route rientranti. In ambienti di produzione, la ridistribuzione va sempre pianificata e testata con attenzione.

📌 Riepilogo — Punti chiave
  • Il routing dinamico permette ai router di scoprire e aggiornare automaticamente i percorsi. I protocolli IGP operano all’interno di un’organizzazione
  • Distance Vector (RIP): ogni router conosce solo i vicini, convergenza lenta, soggetto a count-to-infinity. Contromisure: split horizon, route poisoning, holddown timer
  • Link State (OSPF): ogni router ha la mappa completa (LSDB), calcola SPF con Dijkstra, converge rapidamente
  • RIPv2 usa hop count (max 15), aggiornamenti ogni 30s, AD 120. Semplice ma limitato a reti piccole
  • OSPF usa cost (10⁸/bw), struttura ad aree con backbone Area 0, elezione DR/BDR, AD 110. Scalabile e rapido
  • In IOS: router rip / version 2 / network per RIP; router ospf 1 / network [ip] [wildcard] area 0 per OSPF

Lascia un commento