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:

  1. Valore configurato manualmente con router-id A.B.C.D (priorità assoluta)
  2. In assenza, l’IP più alto tra le interfacce loopback attive
  3. 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.