[successivo] [precedente] [indice]

Open Shortest Path First

Il protocollo OSPF deriva il suo nome dal fatto che si tratta di una specifica "aperta" di un protocollo di classe SPF (Shortest Path First). La sua specifica e' nel documento ????????.

OSPF e' un protocollo link-state e come tale include specifiche di database distribuito, procedura di flooding, definizione di adiacenza e record speciali per percorsi esterni.

OSPF e' stato progettato con supporto speciale per:

Reti Broadcast

In una rete broadcazt con N router vi sono N(N-1)/2 router adiacenti. L'interscambio completo di messaggi tra tutti i router adiacenti crescerebbe come N**2.

Per ridurre questo numero OSPF elegge un router principale, il "router designato", e tutti gli altri router scambiano informazioni solo con esso. Questo ha il doppio vantaggio di ridurre il numero dei messaggi scambiati e di ridurre il numero dei link nel database. Il collegamento di adiacenza tra un router ed il router designato riceve metrica nulla.

Un altro vantaggio e' la riduzione del traffico nell'algoritmo di flooding. Viene determinato l'indirizzo di multicast 224.0.0.6 per tutti i router designati, mentre l'indirizzo di tutti i router OSPF e' definito 224.0.0.5.

Vi sono svantaggi potenziali. L'importanza del router designato fa' si che in ogni rete ne sia necessario uno di backup. Tutti i router designati devono mantenere database sincronizzati tra loro e con i router di backup. Il router di backup interviene solo al bisogno, normalmente rimane il piu' silenzioso possibile.

Reti Non Broadcast

Le reti non broadcast hanno difficolta' intrinseche per il broadcast di messaggi, che e' sostituito da N trasmissioni punto-punto, scalabile come N**2 e purtroppo spesso a pagamento proporzionale al traffico. Il tentativo di riduzione del numero di trasmissioni di messaggi di routing potrebbe non determinare il routing ottimale per destinazioni remote, aumentando quindi il traffico ed il costo dei pacchetti ordinari.

OSPF non opera distinzioni amministrative tra reti broadcast e non broadcast e quindi usa una serie di collegamenti punto-punto a tutti i router collegati. I collegamenti (circuiti virtuali) vengono stabiliti all'atto dell'uso e poi terminati; solo i collegamenti di router designati tra loro e con i router di backup vengono mantenuti sempre attivi.

Aree Multiple

OSPF usa il routing gerarchico, e suddivide reti complesse in un insieme di reti indipendenti piu' piccole chiamate aree.

Ogni area si comporta come rete indipendente: il database rappresenta solo l'area ed il flooding avviene solo entro l'area. Tra due aree vi sono dei router di congiunzione che appartengono ad entrambe le aree e che mantengono due database separati: questi router usano record di stato speciali per la connettivita' tra aree, simili ai record che descrivono connessioni a reti esterne. Inoltre spesso si configura la rete complessa con un'area "backbone", da cui tutte le altre aree possano essere raggiunte.

Un problema tipico del routing gerarchico e' il verificarsi di aree divise, in cui la connettivita' totale in un'area viene a mancare per la caduta di uno o piu' router. Ma in realta' OSPF non usa un modello di routing gerarchico stretto: i router di congiunzione aree generano record di link solo per i router raggiungibili di un'area, e non per tutti i router.

Il documento RFC1131 descrive la gestione delle aree con un modello a "mappa colorata".

Una situazione piu' difficile da gestire e' una caduta di connettivita' nell'area backbone. Questo problema viene gestito da OSPF con lo stabilimento di "link virtuali" attraverso aree adiacenti per compiere un by-pass del link caduto nell'area backbone.

Aree Stub

Un'area stub e' un'area in cui tutti i link esterni passano per lo stesso router di default. Il database descrittivo dell'area stub non contiene link esterni e riduce quindi la complessita' del database e il numero di messaggi trasferiti.

Un'area stub non puo' essere collegata direttamnete ad un border router, un router posto sul confine del sistema autonomo, che e' normalmente collegato all'area backbone.

Il Database dei Link State

Il database e' composto da record di stato dei link (LS), che insieme rappresentano la topologia dell'area. Vi sono 5 tipi di record LS:

Testata

Tutti i tipi hanno una testata comune.

Il Router Dichiarante e' un indirizzo IP del router che fornisce il record e serve da identificativo del router. L'Eta' LS indica il tempo in secondi da quando il record e' stato dichiarato la prima volta. Il campo Opzioni ha solo i due bit bassi definiti: 'E' per lik esterno e 'T' per tipo servizio; se 'T' e' settato il router supporta smistamento sulla base di richieste Type Of Service (TOS).

Il campo Tipo e' uno dei cinque valori di tipo record LS. L'Identificativo LS e' scelto dal router dichiarante ed ha significato diverso a seconda del tipo di record.

La combinazione Router Dichiarante, Tipo LS e ID LS identificano univocamente un record di link. Il Numero di Sequenza identifica un'istanza di aggiornamento.

Il campo Checksum e' calcolato con le normali regole IP. La Lunghezza e' del record totale, incluso i 20 byte della testata.

Il Numero di Sequenza e' calcolato con l'algoritmo detto "lecca-lecca".

Il numero massimo rappresentabile N e' 2**31. I numeri -N e N-1 non sono usati. I numeri usati variano da -N+1 a N-2 inizialmente in modo lineare (lo stecco del lecca-lecca) e quindi da 0 a N-2 in modo ciclico (la caramella del lecca-lecca). Se almeno uno dei numeri e' negativo viene compiuto un raffronto diretto tra i valori per decidere quale e' maggiore. Se entrambi i numeri sono positivi o nulli viene compiuto un raffronto ciclico: se i due numeri sono a e b e la differenza (b-a) e' inferiore a (N-1)/2 allora b e' maggiore di a, altrimenti e' minore.

Router Link

Il record Router LS descrive tutti i link che partono dal router dichiarante.

Nel primo byte i due bit meno significativi (codifica Big Endian) sono chiamati 'E' e 'B' ed indicano se il router e' a confine di area (E - esterno) o a confine di sistema autonomo (B - border). Segue il campo Numero di Link descritti, ed una serie di descrizioni di link.

Ciascuna descrizione di un link inizia con l'ID del Link seguito dal campo Tipo che puo' avere tre valori:

  1. link punto-punto ad un altro router
  2. link ad una rete di transito
  3. link ad un'area stub

Segue il Numero di TOS, numero dei campi di metrica per ciascun tipo di servizio supportato che seguono. Segue la metrica per il TOS numero 0, il default. Quindi vengono i campi di TOS, a triplette di Tipo TOS, byte a zero, metrica per il tipo TOS.

Network Link

I record Network LS sono dichiarati dai router designati ai router delle reti di transito. L'Identificativo LS e' l'indirizzo IP dell'interfaccia usata.

Il primo campo e' la MAschera di Sottorete ed e' seguito da una lista indirizzi di tutti i router che sono in adiacenza al router designato. La lunghezza della lista e' deducibile dal campo Lunghezza della testata.

Summary Link

I record Summary LS per reti IP (tipo 3) e per border routers (tipo 4) sono dichiarati dai ruter di confine di area, che emettono una dichiarazione per ciascuna destinazione.

Il contenuto e' una maschera di sottorete seguita da una lista di metriche, come nel caso del Router LS. La maschera e' quella della rete o sottorete corrente, ol il valore FFFFFFFF per un border router. Non vi e' campo Numero di TOS, questo e' dedotto dalla Lunghezza della testata principale.

External Link

I record External LS sono dichiarati dai border router, una dichiarazione per record.

Il campo ID LS della testata e' l'indirizzo IP della rete di destinazione. Il contenuto e' una maschera di sottorete seguita da un insiema di metriche.

La lista di metriche TOS differisce da quella dei record Router LS: include un bit 'E' (esterno) in prima posizione ed e' seguita da un campo Etichetta Esterna a 32 bit. Il bit 'E' indica che la metrica di questo TOS non e' paragonabile alle metriche interne del Sistema Autonomo e deve essere considerata piu' grande di ongni metrica interna possibile. Il campo Etichetta Esterna serve ai protocolli di routing esterno e non e' gestito da OSPF.

Determinazione dei Percorsi

Il calcolo dei percorsi possibili segue l'algoritmo tipico dei protocolli Link State: vengono calcolati il percorso piu' breve e percorsi di valore uguale a partire dalla stazione OSPF locale fino alla destinazione.

I percorsi sono dapprima calcolati per il TOS di default e quindi, se il router supporta le opzioni TOS, per tutti gli altri tipi di TOS. I router che non supportano opzioni di TOS lo dichiarano settndo a zero il bit 'T' nel campo opzioni della testata comune. Percorsi attraverso questi router non vengono normalmente usati quando una stazione inviante richiede un TOS specifico, a meno che non esista un percorso attraverso altri router. Se il percorso deve passare attraverso un router non TOS, viene usata da quel router la metrica di default.

Le formule per settare il valore di metrica delle opzioni TOS non sono definite dalla specifica OSPF, ma devono essere evidentemente le stesse per tutte le implementazioni usate sui vari router, pena la possibile creazione di loop.

I Protocolli di OSPF

Il protocollo OSPF e' implementato direttamente sopra il protocollo IP e consiste di tre sottoprotocolli: hello, exchange e flooding.

Tutti i messaggi OSPF hanno una testata comune.

Il numero di Versione corrente e' 2. Il campo Tipo esprime il tipo di messaggio OSPF. La lunghezza e' il numero totale di byte nel messaggio. Il Router ID e' l'identificativo IP del router che invia il messaggio, e l'Area ID e' l'identificativo di area, ove il valore 0 e' riservato per l'area backbone. Il checksum e' quello normale di IP, calcolato su tutto il messaggio.

Il campo Tipo Autorizzazione puo' avere due valori:

Il Protocollo Hello

Questo protocollo ha due compiti:

I pacchetti sono inviati ogni intervallo di hello misurato in secondi. Includono l'indirizzo del Router Designato e del backup o zero se ancora non ve n'e' uno, ed hanno una lista di tutti i vicini da cui un pacchetto di hello e' stato ricevuto nell'ultimo Intervallo Morto, misurato in secondi. Entrambi gli intervalli sono parametri settati dall'amministratore.

Nelle opzioni sono settati due bit: 'E' per indicare che il router e' in grado di smistare su percorsi esterni e 'T' per indicare capacita' di TOS.

Il link e' considerato pienamente operativo se i pacchetti possono essere scambiati in entrambe le direzioni e se vi e' accordo sullo stato dei bit 'E'. Se lo ID del router locale non e' incluso nella lista proveniente da un router remoto, il router remoto non ha ancora ricevuto i pacchetti hello del locale: il collegamento e' monodirezionale e non puo' essere ancora usato per il routing.

Non vi e' nessun altro requisito di qualifica dopo lo scambio a due vie di pacchetti di hello su link punto-punto. Su link broadcast si procede invece all'elezione di un router designato e di un backup.

Il router designato e' quello con il campo Priorita' piu' alto nel record di hello interscambiato. Se tale router viene a mancare, automaticamente viene scelto il prossimo router in sequenza di priorita' come backup. Se dopo la attivazione di un backup risale il router designato originale pero', non si torna ad uasare quello ma si continua ad usare il router di backup. Se due o piu' router hanno lo stesso valore di priorita' viene scelto quello con Identificativo piu' alto. Il campo di priorita' e' un settaggio amministrativo dei router.

Il Protocollo Exchange

Stabilita la connettivita' i router devono sincronizzare i propri database e questo avviene tramite il protocollo di exchange.

Il protocollo di exchange e' asimmetrico: una stazione funge da master e l'altra da slave. Il protocollo consiste nella determinazione dei ruoli seguita dallo scambio di record descrittivi dei database.

Il protocollo usa pacchetti descrittori.

Dopo la testata di pacchetto seguono 32 bit nulli ecccetto che per gli ultimi tre:

Segue il Numero di Sequenza DD del pacchetto quindi una serie di record LS, caratterizzati ciascuno dai campi Tipo Record, ID LS, Router Dichiarante, Numero Sequenza Record, Checksum ed Eta' del record.

Il router iniziante l'interscambio invia un pacchetto con i tre bit del flag posti ad 1 e si dichiara il master. Il campo Sequenza DD e' un valore casuale mai usato da altri router.

L'altro router dell'interscambio risponde con un pacchetto di conferma in cui il bit MS e' 0. In caso di rifiuto o di fallimento dell'interscambio il master riprova alcune volte.

Dopo la conferma il master invia dei pacchetti descrittivi. L'ultimo pacchetto descrittivo ha il bit M settato a 0. Lo slave risponde con un pacchetto di conferma ad ogni pacchetto del master, con lo stesso numero di sequenza ma il bit MS a 0. Lo slave 'approfitta' del pacchetto di conferma per accludervi i sui record descrittivi, in modalita' 'piggyback'.

I router continuano a scambiarsi pacchetti Hello a intervalli regolari anche durante lo scambio dati col protocollo Exchange e terminano lo scambio dati se la connettivita' viene meno.

Il Protocollo di Flooding

Gli aggiornamenti di record del database avvengono anche in seguito a pacchetti di richiesta espliciti.

La testata e' seguita dal Numero di Aggiornamenti e quindi dai record di aggiornamento. La diffusione avviene col protocollo di flooding.

Il ricevente i pacchetti ne da conferma con pacchetti di conferma.

Un pacchetto di conferma puo' dare conferma di piu' pacchetti di aggiornamento e, su reti broadcast, anche di pacchetti di aggiornamento da piu' router. Per diminuire il traffico la stazione rispondente ritarda alquanto, ma non troppo, l'istante di invio della conferma.

Invecchiamento dei Record

I record vecchi di stato dei link vengono rimossi, ma e' molto importante che la rimozione venga effettuata simultaneamente da tutti i router per mantenere la sincronizzazione del database.

Ogni record ha un'eta' corrente ed un'eta' massima di un'ora. L'eta' corrente viene incrementata di 1 al secondo e il record non viene piu' propagato quando la sua eta' corrente supera quella massima.

Per far si che i record validi non invecchino i router devono ritrasmetterli almeno ogni mezzora.