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.
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.
| Caratteristica | Distance Vector | Link State |
|---|---|---|
| Informazione scambiata | Distanza e direzione verso ogni rete (la propria routing table) | Stato di ogni link diretto (topologia locale) |
| Visione della rete | Parziale — ogni router vede solo i vicini | Completa — ogni router ha la mappa dell’intera rete |
| Calcolo percorso | Bellman-Ford (distribuito) | Dijkstra SPF (locale su ogni router) |
| Convergenza | Lenta (decine di secondi o minuti) | Rapida (secondi) |
| Uso CPU/RAM | Basso | Alto (mantiene LSDB e ricalcola SPF) |
| Scalabilità | Limitata (max 15 hop in RIP) | Elevata (centinaia di router) |
| Protocolli | RIP, 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.
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
| Tecnica | Funzionamento |
|---|---|
| Split Horizon | Non pubblicare una route sull’interfaccia da cui è stata appresa. Se B ha appreso X da A, non re-annuncia X ad A |
| Route Poisoning | Quando una rete diventa irraggiungibile, annunciarla con metrica infinita (16 in RIP) invece di rimuoverla. Forza la convergenza immediata |
| Holddown Timer | Dopo 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 Update | Inviare 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
| Caratteristica | RIPv1 | RIPv2 |
|---|---|---|
| Aggiornamenti | Broadcast 255.255.255.255 | Multicast 224.0.0.9 |
| Subnet mask | Non inclusa — classful | Inclusa — classless (VLSM) |
| Autenticazione | Nessuna | MD5 supportato |
| Standard | RFC 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
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.
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
| Stato | Descrizione |
|---|---|
Down | Nessun pacchetto Hello ricevuto |
Init | Hello ricevuto ma il proprio Router ID non è ancora nella lista vicini |
2-Way | Comunicazione bidirezionale confermata. Qui avviene l’elezione DR/BDR |
ExStart | Negoziazione del master/slave per lo scambio di DBD |
Exchange | Scambio dei DBD (Database Description) — sommario dei LSDB |
Loading | Richiesta LSR degli LSA mancanti, risposta con LSU |
Full | LSDB 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
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
| Caratteristica | RIPv2 | OSPF |
|---|---|---|
| Algoritmo | Distance Vector (Bellman-Ford) | Link State (Dijkstra SPF) |
| Metrica | Hop count (max 15) | Cost = 10⁸/bandwidth |
| Aggiornamenti | Periodici ogni 30 s (multicast 224.0.0.9) | Triggered su cambio topologia (multicast 224.0.0.5/6) |
| Convergenza | Lenta (minuti in reti grandi) | Rapida (secondi) |
| Scalabilità | Max ~15 hop, non adatto a grandi reti | Centinaia di router, supporta aree |
| VLSM / CIDR | Sì (v2) | Sì |
| Administrative Distance | 120 | 110 |
| Standard | RFC 2453 | RFC 2328 (OSPFv2), RFC 5340 (OSPFv3 per IPv6) |
| Uso tipico | Reti piccole, lab didattici | Reti 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
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.
- 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 / networkper RIP;router ospf 1 / network [ip] [wildcard] area 0per OSPF