Il processo di adiacenza
OSPF è un protocollo link-state (IP protocol 89) che scopre i vicini scambiando pacchetti Hello sull’indirizzo multicast 224.0.0.5 (AllSPFRouters). Due router diventano neighbor quando ciascuno si riconosce nell’Hello dell’altro (stato 2-Way), ma raggiungono l’adiacenza completa (Full) solo dopo aver sincronizzato il Link-State Database attraverso le fasi ExStart → Exchange → Loading, durante le quali si scambiano i DBD (Database Description) e le LSA richieste.
Perché l’Hello venga accettato e l’adiacenza si formi, alcuni parametri devono coincidere sull’interfaccia condivisa:
| Parametro | Deve combaciare? | Note |
|---|---|---|
| Area ID | Sì | Interfaccia nella stessa area |
| Subnet / netmask | Sì (su broadcast) | Non verificata sui link point-to-point |
| Hello / Dead timer | Sì | Broadcast 10/40 s, non-broadcast 30/120 s |
| Authentication | Sì | Tipo e chiave |
| Stub flag / area type | Sì | Entrambi stub, o entrambi normali |
| MTU | Sì | Verificata nel DBD (fase Exchange) |
Il Router-ID deve invece essere univoco: due router con lo stesso RID non formano adiacenza.
Network type: point-to-point e broadcast
Il network type dell’interfaccia determina il comportamento delle adiacenze.
- Point-to-point (default su interfacce seriali/subinterface P2P): un solo vicino possibile, nessuna elezione, adiacenza diretta. La netmask non viene controllata, quindi un mismatch di prefisso può passare inosservato.
- Broadcast (default su Ethernet): elezione di DR e BDR per ridurre le adiacenze e centralizzare il flooding. I router non-DR (DROTHER) formano Full solo con DR e BDR, restando in 2-Way tra loro — comportamento normale, non un guasto.
L’elezione DR/BDR segue la OSPF priority (default 1): vince la priorità più alta; a parità, il Router-ID più alto. Una priorità di 0 esclude il router dall’elezione. L’elezione è non-preemptive: un router acceso dopo non spodesta un DR già eletto. Il DR usa 224.0.0.6 (AllDRouters) per ricevere gli aggiornamenti.
Struttura ad aree e LSA principali
OSPF è gerarchico: l’area 0 (backbone) collega tutte le altre. Un ABR (Area Border Router) sta su più aree; un ASBR ridistribuisce rotte esterne. Ogni tipo di LSA ha uno scope di flooding preciso:
| Tipo | Nome | Generato da | Scope |
|---|---|---|---|
| 1 | Router LSA | Ogni router | Intra-area |
| 2 | Network LSA | DR del segmento multi-access | Intra-area |
| 3 | Summary LSA | ABR | Inter-area |
| 4 | ASBR Summary | ABR | Verso l’ASBR |
| 5 | AS External | ASBR | Tutto il dominio (tranne stub/NSSA) |
Il Type 1 descrive router e stato dei suoi link; il Type 2 è emesso dal DR e lista i router sul segmento broadcast; il Type 3 propaga i prefissi di un’area verso le altre (l’ABR li riannuncia, non li flooda tal quali); il Type 5 trasporta rotte redistribuite (es. da BGP o static).
Le aree stub bloccano i Type 5 (e i Type 4): l’ABR inietta una default route tramite un Type 3. Le totally stubby bloccano anche i Type 3, lasciando solo il default. Le NSSA ammettono rotte esterne tramite Type 7 (convertite in Type 5 dall’ABR) ma continuano a rifiutare i Type 5 nativi.
Trappole tipiche d’esame
- Adiacenza bloccata in ExStart/Exchange → quasi sempre MTU mismatch: i router non riescono a scambiare i DBD. La soluzione corretta è allineare l’MTU o usare
ip ospf mtu-ignoresull’interfaccia. - Neighbor fermo in Init/mai formato → mismatch di Hello/Dead timer, area ID o authentication. Ricorda che sui link broadcast anche subnet/netmask devono coincidere, mentre sui point-to-point la maschera non è verificata.
- Route esterne assenti in un’area → è configurata come stub: non accetta Type 5. Se servono le external mantenendo il filtraggio, la risposta è NSSA (Type 7), non stub.
- Due DROTHER restano in 2-Way → comportamento atteso su segmento broadcast, non un problema da risolvere.
- DR “sbagliato” dopo un reload → l’elezione è non-preemptive: per forzare il DR desiderato si agisce sulla OSPF priority e si resetta il processo con
clear ip ospf process, non basta il RID più alto.