# Open Shortest Path First

Il protocollo Open Shortest Path First o OSPF è uno dei protocolli di routing (instradamento) di tipo link state più diffusi, su reti IP. Utilizza il flooding (inondazione) di informazioni riguardo allo stato dei collegamenti, e l'algoritmo di Dijkstra per la determinazione del percorso a costo minimo INTRA-AS (cioè all'interno di uno stesso sistema autonomo). I costi dei collegamenti sono fissati a priori dall'amministratore di sistema. Ad esempio, fissando un costo unitario per ogni link, si effettua un instradamento di tipo "Distance Metric", ossia con il minimo numero di hop.
Esso è uno standard non proprietario descritto da RFC 2328, per IPv4, e da RFC 5340 per IPv6, che aggiunge proprietà aggiuntive ai classici algoritmi di tipo link state come:
* Autenticazione dei messaggi
* Bilanciamento del carico
* Aggiunta di un ulteriore grado di gerarchia nei domini
Una situazione di questo tipo porta ad una condizione in cui il nodo pubblicizzante tale possibilità riceve una quantità di pacchetti non gestibile. In questo caso l'instradamento fallisce dato che molti pacchetti vengono persi, soprattutto in caso di grosso carico di dati. Una forma di autenticazione come quella realizzata dal protocollo OSPF è in grado di garantire un buon grado di sicurezza (protocollo TCP) anche contro utenti esterni malintenzionati. Tale caratteristica è stata introdotta anche in altri protocolli di instradamento importanti e diffusi come ad esempio RIP.

## Bilanciamento del carico

Il protocollo è in grado anche di gestire casi in cui percorsi diretti verso la stessa destinazione abbiano costi differenti. Supponiamo ad esempio di avere un host sender che vuole inviare 100Mb di dati attraverso la rete e che gli apparati intermedi non trovino nessun path (percorso) che possa supportare 100Mb. Siccome i router con OSPF usano link state, hanno una visione completa della topologia della rete (a differenza di distance vector che è "miope", conosce solo il prossimo hop per una destinazione), possono accorgersi che, anche se non esiste un percorso che possa far transitare 100Mb, magari ne esistono 4 che ne possono far transitare 25.

## Grado di gerarchia aggiuntivo

Le reti in cui gli apparati utilizzano OSPF, possono presentare un approccio gerarchico se il sistema autonomo è grande abbastanza da necessitarne. Per sistemi autonomi piccoli infatti, si usa semplicemente link state su tutto il sistema, trovando il path migliore per ogni coppia di router, dove migliore intendiamo secondo il grafo pesato della rete in base a una particolare metrica. I gradi di gerarchia sono molto importanti nelle reti di calcolatori dato che questi garantiscono maggiore scalabilità della struttura. Esso permette infatti la divisione di un dominio anche di grandi dimensioni in aree di dimensioni inferiori. Ciascun router non ha quindi più la necessità di essere in grado di raggiungere tutte le reti del dominio, ma è sufficiente che esso sia in grado di raggiungere la corretta area.

## Tipi di aree

Una rete OSPF è divisa in aree. Esse sono gruppi logici non sovrapposti di router le cui informazioni possono essere sommarizzate rispetto al resto della rete. Diversi tipi di aree "speciali" sono definite:

### Area Backbone

L'area backbone (conosciuta anche come area zero) rappresenta il cuore di una rete OSPF. Tutte le altre aree sono collegate ad essa e il routing inter-area passa tramite un router di questa rete.

### Stub area

Per Stub Area si intendono quei tipi di area che non ricevono route esterne. Le route esterne saranno poi definite e distribuite da un altro protocollo di Routing. Quindi, le stub area necessitano di relegare ad una route di default lo scambio per il traffico con quelle esterne al dominio di appartenenza

### Totally stubby area

Una totally stubby area è simile ad una stub area, tuttavia quest'area non permette route riassuntive oltre che le route esterne. L'unico modo in cui il traffico esce dall'area è una route di default che è l'unica di Tipo-3 LSA pubblicata nell'area. Quando c'è solo una route per uscire dall'area, devono essere effettuate meno decisioni di routing dal processore di route, con minore utilizzo di risorse di sistema. Questa è la versione Cisco della NSSA.

### Not-so-stubby area

Identificata anche come NSSA, una not-so-stubby area è un tipo di stub area che può importare route esterne di AS e mandarle al backbone, ma non può ricevere tali route esterne di AS dal backbone o da altre aree. Cisco implementa anche una versione proprietaria di NSSA chiamata NSSA Totally Stubby area. Si prende la responsabilità di una Totally Stubby area, col significato che route riassuntive di tipo 3 e 4 non vanno ad inondare questo tipo di area.

## Tipi di router OSPF

OSPF definisce vari tipi di router. Sono definizioni logiche, e un router che usa OSPF potrebbe essere classificato come diversi dei seguenti tipi. Per esempio, un router connesso a più di un'area, e che riceve route da un processo BGP connesso ad un altro AS, è sia un ABR che un ASBR.

### Area Border Router

Un'Area Border Router (ABR) è un router che connette una o più aree OSPF all'area di backbone. È membro di tutte le aree alle quali è connesso. Un ABR mantiene in memoria copie multiple del database link-state, uno per ciascuna area alla quale appartiene.

### Autonomous System Boundary Router

Un ASBR è un router connesso a più di un Autonomous system (AS), che scambia informazioni di routing con router in altri AS. Gli ASBR tipicamente utilizzano anche un protocollo di routing non-IGP, come il BGP. Un ASBR viene utilizzato per distribuire le rotte ricevute dagli altri AS attraverso il proprio AS.

### Internal router

Un router viene chiamato internal router (IR, router interno) se ha solo adiacenze OSPF con router nella stessa area.

### Backbone router

Un backbone router (BR) è un router con un'interfaccia verso l'area backbone. Un ABR è anche un BR, anche se non è necessario che sia vero l'inverso.

### Designated router

Un designated router (DR, router designato) è un router eletto tramite procedura di Hello dagli altri router appartenenti al suo segmento. Il DR viene eletto in base ai seguenti criteri di default:
* Se la selezione di priorità su un router OSPF è settata a 0, significa che tale router non potrà MAI divenire un DR o un BDR (Backup Designated Router).
* Quando un DR si guasta e il BDR lo sostituisce, c'è una nuova elezione per chi farà da BDR.
* Il router che manda i pacchetti Hello con la priorità highest.
* Se due o più router si legano con la selezione di priorità più alta, vince il router che manda l'Hello con il più alto RID (Router ID).
* (NOTA) Un RID è l'indirizzo IP logico (di loopback) più alto configurato su un router, se nessun indirizzo IP logico/di loopback è selezionato allora il Router usa il più alto indirizzo IP configurato sulle sue interfacce. (ad esempio 192.168.0.1 è più alto di 10.1.1.2)
* Di solito il router con il secondo maggiore numero di priorità diventa il BDR
* Il range di valori di priorità va da 1 a 255, un valore più alto incrementa la probabilità di diventare DR o BDR.
* SE un router OSPF con priorità più alta si mette in linea DOPO che l'elezione è avvenuta, non diventerà DR o BDR finché (almeno) il DR e il BDR si guastano.
Il DR esiste con lo scopo di ridurre il traffico di rete fornendo una sorgente per aggiornamenti di routing, il DR memorizza una tabella completa sulla topologia della rete e manda gli aggiornamenti agli altri router attraverso il multicast. In questo modo tutti i router non devono costantemente aggiornarsi l'un l'altro, e possono ricevere tutti gli aggiornamenti da una singola sorgente. L'uso del multicasting riduce ulteriormente il carico di rete. I DR e i BDR sono sempre configurati/eletti da reti Broadcast (Ethernet). I DR possono essere eletti anche su reti NBMA (Non-Broadcast Multi-Access) come Frame Relay. DR e BDR non si configurano su collegamenti punto-punto (come i collegamenti punto-punto WAN) perché la larghezza di banda tra due host singoli non può essere ulteriormente ottimizzata.

### Backup Designated Router

Un backup designated router (BDR, router di backup predefinito) è un router che diventa il principale se il router principale in uso ha un problema o si guasta. Il BDR è il router OSPF secondo per priorità nel momento dell'ultima selezione.