8. Protocol Packet Processing (Elaborazione pacchetti di protocollo)
Questo capitolo descrive in dettaglio come i router OSPF elaborano i pacchetti di protocollo ricevuti. Questa è la parte centrale dell'implementazione OSPF, coprendo la logica di elaborazione di tutti i tipi di pacchetti.
Panoramica del capitolo (Chapter Overview)
OSPF utilizza 5 diversi tipi di pacchetti di protocollo, ciascuno con un flusso di elaborazione specifico:
- Pacchetti Hello
- Pacchetti Database Description (DD)
- Pacchetti Link State Request (LSR)
- Pacchetti Link State Update (LSU)
- Pacchetti Link State Acknowledgment (LSAck)
8.1 Ricezione di pacchetti di protocollo (Receiving Protocol Packets)
Elaborazione generale di ricezione (General Reception Processing)
Passo 1: Ricezione livello IP
- Indirizzo di destinazione: 224.0.0.5 (AllSPFRouters) o 224.0.0.6 (AllDRouters) o unicast
- Numero di protocollo: 89 (OSPF)
- IP TTL: Deve essere 1 (tranne collegamenti virtuali)
Passo 2: Validazione intestazione OSPF
| Elemento di controllo | Requisito | Elaborazione in caso di fallimento |
|---|---|---|
| Version Number | Deve essere 2 | Scartare il pacchetto |
| Packet Type | 1-5 valido | Scartare il pacchetto |
| Checksum | Deve essere corretto | Scartare il pacchetto |
| Area ID | Deve corrispondere | Scartare il pacchetto |
| Authentication | Deve passare | Scartare il pacchetto |
8.2 Elaborazione pacchetti Hello (Hello Packet Processing)
Ricezione pacchetti Hello
Flusso di elaborazione
Ricevere Hello
↓
Validare parametri Hello
↓
Cercare/Creare vicino
↓
Aggiornare stato vicino
↓
Verificare elezione DR/BDR
Validazione parametri Hello
Parametri che devono corrispondere
| Parametro | Descrizione | Elaborazione in caso di non corrispondenza |
|---|---|---|
| Network Mask | Maschera di rete | Scartare il pacchetto |
| Hello Interval | Intervallo invio Hello | Scartare il pacchetto |
| Dead Interval | Intervallo scadenza vicino | Scartare il pacchetto |
| Options | Flag opzioni | Scartare il pacchetto |
8.3 Elaborazione pacchetti Database Description (DD Packet Processing)
Ricezione pacchetti DD
Prerequisito
- Lo stato del vicino deve essere >= ExStart
- Altrimenti scartare il pacchetto
Rami logici di elaborazione
Ramo 1: Stato ExStart
Determinazione Master
if (DD ricevuto contiene flag I, M, MS):
if (Router ID vicino > Router ID locale):
Questo router diventa Slave
Il vicino diventa Master
Accettare il numero di sequenza del vicino
else:
Ignorare questo DD
8.4 Elaborazione pacchetti Link State Request (LSR Packet Processing)
Ricezione pacchetti LSR
Prerequisito
- Lo stato del vicino deve essere >= Exchange
- Altrimenti scartare il pacchetto
Flusso di elaborazione
Ricevere LSR
↓
Attraversare la lista delle richieste
↓
Cercare ogni LSA in LSDB
↓
Trovato: Aggiungere alla risposta LSU
Non trovato: Evento BadLSReq
↓
Inviare pacchetto LSU
8.5 Elaborazione pacchetti Link State Update (LSU Packet Processing)
Ricezione pacchetti LSU
Complessità dell'elaborazione
- LSU può contenere più LSA
- Ogni LSA è elaborato indipendentemente
- Tipo di pacchetto più complesso
Validazione LSA
Passo 1: Validazione di base
| Elemento di controllo | Requisito |
|---|---|
| LS Checksum | Deve essere corretto |
| LS Type | Deve essere un tipo conosciuto |
| LS Age | Deve essere <= MaxAge (3600s) |
8.6 Elaborazione pacchetti Link State Acknowledgment (LSAck Packet Processing)
Ricezione pacchetti LSAck
Flusso di elaborazione
Ricevere LSAck
↓
Attraversare lista intestazioni LSA confermate
↓
Cercare in Link State Retransmission List
↓
Trovato e corrisponde: Rimuovere dalla lista ritrasmissione
Non trovato o non corrisponde: Ignorare questa conferma
8.7 Invio di pacchetti di protocollo (Sending Protocol Packets)
Decisione di invio
Pacchetti Hello
- Invio periodico (Hello Interval)
- Destinazione: AllSPFRouters (224.0.0.5)
Pacchetti DD
- Durante la sincronizzazione del database
- Destinazione: Indirizzo unicast del vicino
Pacchetti LSU
- Risposta a LSR: Unicast
- Flooding di nuovi LSA: Multicast o unicast
8.8 Meccanismo di ritrasmissione (Retransmission Mechanism)
Link State Retransmission List
Scopo
- Tracciare LSA non confermati
- Ogni vicino mantiene una lista indipendente
RxmtInterval
- Valore predefinito: 5 secondi
- Configurabile
- Dovrebbe essere aumentato per collegamenti ad alta latenza
Riepilogo tecnico (Technical Summary)
Principi chiave di elaborazione
-
Validazione rigorosa
- Tutti i pacchetti devono passare più livelli di validazione
- Qualsiasi non corrispondenza porta allo scarto immediato
- Garantisce la sicurezza del protocollo
-
Guidato da stato
- Lo stato del vicino determina la logica di elaborazione
- Transizioni di stato chiare
- Evita operazioni non valide
-
Trasmissione affidabile
- Meccanismo di conferma
- Meccanismo di ritrasmissione
- Rilevamento numero di sequenza
Riferimenti (References)
- Testo completo: RFC 2328 Section 8
Nota (Note): L'elaborazione dei pacchetti di protocollo è il nucleo dell'implementazione OSPF. Comprendere il flusso di elaborazione di ogni tipo di pacchetto è essenziale per un'implementazione corretta e la risoluzione dei problemi.