Il processo OSPFv2 e il router ID
OSPFv2 è un protocollo link-state che costruisce una mappa completa della topologia scambiando LSA (Link-State Advertisement) tra router che hanno stabilito una relazione di vicinato. Prima ancora di calcolare le rotte con l’algoritmo SPF, ogni router deve identificarsi e formare adiacenze con i vicini corretti.
Ogni processo OSPF è identificato da un router ID a 32 bit in formato IP. La selezione segue una gerarchia rigida:
- Valore configurato manualmente con
router-id A.B.C.D(priorità assoluta) - In assenza, l’IP più alto tra le interfacce loopback attive
- In assenza di loopback, l’IP più alto tra le interfacce fisiche attive (up/up)
Il router ID si “congela” all’avvio del processo: modificarlo dopo richiede clear ip ospf process (o un reload) per renderlo effettivo. Una loopback è la scelta preferita perché è sempre up, dando un ID stabile e prevedibile.
Attivare OSPF: network vs ip ospf
Ci sono due modi per abilitare OSPF su un’interfaccia. Sotto il processo di routing:
router ospf 1
network 10.1.1.0 0.0.0.255 area 0
La network usa una wildcard mask (inverso della subnet mask) e attiva OSPF su tutte le interfacce il cui IP ricade nel range, assegnandole all’area indicata. In alternativa, direttamente sull’interfaccia:
interface Gi0/0
ip ospf 1 area 0
Il process-id (1) è localmente significativo: due router possono usarne di diversi e formare comunque adiacenza.
Formazione dell’adiacenza e stati del neighbor
I router si scoprono scambiando pacchetti Hello sull’indirizzo multicast 224.0.0.5. La relazione attraversa gli stati: Down → Init → 2-Way → ExStart → Exchange → Loading → Full.
- Init: ho ricevuto un Hello dal vicino ma non vedo ancora il mio ID nella sua lista.
- 2-Way: reciproco riconoscimento; su reti broadcast qui avviene l’elezione DR/BDR.
- ExStart/Exchange: negoziazione master/slave e scambio dei DBD (Database Descriptor).
- Full: database sincronizzati, adiacenza completa.
Su reti broadcast i router DROTHER restano volutamente in 2-Way tra loro e raggiungono Full solo con DR e BDR: è normale, non un errore.
Parametri che DEVONO combaciare
Perché due router diventino vicini, sullo stesso segmento devono coincidere:
| Parametro | Se non combacia |
|---|---|
| Area ID | Nessuna adiacenza |
| Subnet / mask (stessa rete IP) | Nessuna adiacenza |
| Hello e Dead timer | Nessuna adiacenza (bloccato in Init) |
| Autenticazione (tipo + chiave) | Nessuna adiacenza |
| Flag di area (stub/NSSA) | Nessuna adiacenza |
| MTU dell’interfaccia | Bloccato in ExStart/Exchange |
I timer di default dipendono dal network type:
- Broadcast e point-to-point: Hello 10 s, Dead 40 s (Dead = 4 × Hello)
- Non-broadcast / point-to-multipoint: Hello 30 s, Dead 120 s
Hello e Dead non vengono negoziati: se differiscono, l’adiacenza non nasce.
Point-to-point vs broadcast
Il network type determina comportamento ed elezioni:
- Broadcast (default su Ethernet): elegge DR/BDR per ridurre gli scambi LSA; usa multicast 224.0.0.5 e 224.0.0.6 (DR/BDR).
- Point-to-point (default su seriali HDLC/PPP): nessun DR/BDR, adiacenza diretta, convergenza più rapida.
Su un link Ethernet punto-punto tra due router è prassi forzare ip ospf network point-to-point: elimina l’elezione DR/BDR inutile e velocizza la sincronizzazione. Attenzione: entrambi i lati devono avere lo stesso network type.
Trappole tipiche d’esame
- Adiacenza bloccata in ExStart/Exchange → è quasi sempre un MTU mismatch tra le due interfacce. Allinea l’MTU (o, come workaround,
ip ospf mtu-ignore). - Vicini in Init che non passano a 2-Way → tipicamente Hello/Dead timer diversi oppure autenticazione non corrispondente su un solo lato.
- Nessun neighbor pur avendo abilitato OSPF → interfacce in subnet/mask diverse o assegnate ad aree diverse; verifica anche che l’interfaccia non sia
passive-interface. - Router ID sbagliato dopo aver aggiunto una loopback → il router ID non cambia da solo: serve
clear ip ospf process. Ricorda la gerarchia: manuale > loopback più alta > interfaccia fisica attiva più alta. - Due DROTHER “fermi” in 2-Way su Ethernet → è il comportamento corretto: i DROTHER vanno in Full solo con DR e BDR, non tra loro.