7. Bringing Up Adjacencies (Stabilimento delle adiacenze)
Questo capitolo descrive in dettaglio come i router OSPF stabiliscono e mantengono le relazioni di adiacenza. L'adiacenza è il nucleo del protocollo OSPF e determina quali router sincronizzeranno il loro database di stato dei collegamenti.
Panoramica del capitolo (Chapter Overview)
Lo stabilimento dell'adiacenza è un processo multi-fase che coinvolge:
- Scoperta dei vicini
- Conferma della comunicazione bidirezionale
- Negoziazione della relazione master/slave
- Sincronizzazione del database
- Raggiungimento dello stato di adiacenza completa
7.1 Relazione di vicinato vs Adiacenza (Neighbor vs Adjacency)
Distinzione concettuale
| Concetto | Definizione | Stato |
|---|---|---|
| Vicino (Neighbor) | Router direttamente connesso scoperto via Hello | 2-Way o superiore |
| Adiacenza (Adjacency) | Vicino che sincronizza LSDB | Stato Full |
7.2 Macchina a stati del vicino (Neighbor State Machine)
Diagramma di transizione di stato
Down → Init → 2-Way → ExStart → Exchange → Loading → Full
↓
(nessuna adiacenza)
Dettagli degli stati
1. Down (Inattivo)
- Stato iniziale
- Nessun pacchetto Hello ricevuto
- Vicino non raggiungibile
2. Init (Inizializzazione)
- Pacchetto Hello ricevuto dal vicino
- Hello non elenca questo router
- Comunicazione unidirezionale
3. 2-Way (Comunicazione bidirezionale)
- Hello ricevuto contiene l'ID di questo router
- Comunicazione bidirezionale stabilita
- Punto di decisione: stabilire o meno l'adiacenza
4. ExStart (Inizio scambio)
- Negoziazione della relazione master/slave
- Il Router ID più grande diventa Master
- Determina il numero di sequenza DD iniziale
5. Exchange (Descrizione del database)
- Scambio di pacchetti Database Description (DD)
- Descrive il contenuto della LSDB locale
- Solo intestazioni LSA, non LSA completi
6. Loading (Caricamento)
- Richiesta di LSA mancanti o scaduti
- Invia Link State Request (LSR)
- Riceve Link State Update (LSU)
7. Full (Adiacenza completa)
- Database completamente sincronizzato
- Stato operativo normale
- Calcolo delle rotte possibile
7.3 Decisione di formazione adiacenza (Adjacency Formation Decision)
Matrice di decisione
| Tipo di rete | Con chi stabilire adiacenza | Motivo |
|---|---|---|
| Punto-a-punto | Tutti i vicini | Un solo vicino |
| Punto-a-multipunto | Tutti i vicini | Trattato come multipli punto-a-punto |
| Broadcast | DR e BDR | Ridurre numero di adiacenze |
| NBMA | DR e BDR | Ridurre numero di adiacenze |
7.4 Elezione DR e BDR (DR/BDR Election)
Algoritmo di elezione
Momento dell'elezione
- Lo stato dell'interfaccia passa da Waiting a DR o DROther
- Il pacchetto Hello innesca un ricalcolo
Regole di elezione
-
Confronto di priorità
- Router Priority = 0: non partecipa all'elezione
- Priorità più alta è preferita
-
Confronto di Router ID
- In caso di priorità identica, il Router ID più grande vince
-
Elezione in due fasi
- Fase 1: Eleggere il BDR
- Fase 2: Eleggere il DR
7.5 Pacchetti Database Description (Database Description Packets)
Formato pacchetto DD
Campi intestazione
| Campo | Dimensione | Descrizione |
|---|---|---|
| Interface MTU | 16 bit | Dimensione MTU interfaccia |
| Options | 8 bit | Capacità opzionali |
| Flags | 8 bit | Flag I/M/MS |
| DD Sequence Number | 32 bit | Numero di sequenza |
Descrizione bit di flag
- I (Init): Primo pacchetto DD
- M (More): Altri pacchetti DD seguiranno
- MS (Master/Slave): 1=Master, 0=Slave
7.6 Pacchetti Link State Request (LSR Packets)
Momento di generazione LSR
Condizioni di attivazione
- Stato Exchange: il vicino ha LSA più recenti
- Stato Loading: continuare a richiedere LSA mancanti
- Stato Full: richiedere occasionalmente LSA mancanti
7.7 Pacchetti Link State Update (LSU Packets)
Scopo LSU
Scenari di utilizzo
- Risposta a LSR (unicast)
- Flooding di nuovi LSA (multicast/broadcast)
- Aggiornamento periodico LSA
7.8 Pacchetti Link State Acknowledgment (LSAck Packets)
Momento di conferma
Conferma ritardata
- Conferma batch dopo ricezione di più LSA
- Ritardo tipicamente < 1 secondo
- Riduce numero di pacchetti
Conferma immediata
- Ricezione di LSA duplicati
- Ricezione di istanza LSA più vecchia
7.9 Manutenzione adiacenza (Adjacency Maintenance)
Ruolo del protocollo Hello
Monitoraggio continuo
- Invio periodico di pacchetti Hello
- Monitoraggio degli Hello dei vicini
- Il vicino scade se nessun Hello entro Dead Interval
Intervallo Hello
- Punto-a-punto/Broadcast: 10 secondi
- NBMA: 30 secondi
Intervallo Dead
- Predefinito: Hello Interval × 4
- Punto-a-punto/Broadcast: 40 secondi
- NBMA: 120 secondi
7.10 Esempi di formazione adiacenza (Adjacency Formation Examples)
Esempio 1: Collegamento punto-a-punto
Router A ←────────→ Router B
Passo 1: Entrambi inviano Hello
A → B: Hello (lista vicini vuota)
B → A: Hello (lista vicini vuota)
Passo 2: Confermare comunicazione bidirezionale
A → B: Hello (lista vicini contiene B)
B → A: Hello (lista vicini contiene A)
Stato: 2-Way
Passo 3: Negoziare master/slave
A → B: DD (I, M, MS=1, Seq=X)
B → A: DD (I, M, MS=0, Seq=X)
A diventa Master
Passo 4: Scambiare descrizioni database
A → B: DD (M, MS=1, Seq=X+1) [Lista intestazioni LSA]
B → A: DD (M, MS=0, Seq=X+1) [Lista intestazioni LSA]
...continuare fino al completamento dello scambio
Passo 5: Richiedere LSA mancanti
A → B: LSR [richiede LSA 1, 2, 3]
B → A: LSU [LSA 1, 2, 3]
A → B: LSAck [conferma 1, 2, 3]
Passo 6: Raggiungere stato Full
Stato: Full
Calcolo rotte possibile
Riepilogo tecnico (Technical Summary)
Meccanismi chiave
-
Guidato da macchina a stati
- Transizioni di stato chiare
- 7 stati del vicino
- Comportamento guidato da eventi
-
Sincronizzazione affidabile
- Meccanismo numero di sequenza
- Conferma e ritrasmissione
- Coordinamento master/slave
-
Design ottimizzato
- DR/BDR riducono adiacenze
- Conferma batch riduce traffico
- Sincronizzazione database per fasi
Riferimenti (References)
- Testo completo: RFC 2328 Section 7
Nota (Note): Lo stabilimento dell'adiacenza è la base del protocollo OSPF. Comprendere le transizioni di stato e l'ordine di scambio dei pacchetti è cruciale per la risoluzione dei problemi.