Il protocollo OSPF si fonda sul concetto di area : un'area e' definita come un insieme di reti, host e router aventi le interfacce sulle quelle reti. Ogni area ha il proprio database topologico o grafo ed esegue la propria copia dell'algoritmo di routing. La caratteristica di ogni area e' che la propria organizzazione interna (struttura topologica) e' nascosta alle altre aree, cosi' come i router interni all'area non conoscono in dettaglio la topologia delle aree esterne. La conseguenza immediata, che e' anche il vantaggio di tale organizzazione, e' la sensibile riduzione del traffico di routing, rispetto ad un'organizzazione centralizzata. Altra conseguenza immediata e' che i router non hanno tutti lo stesso database topologico, ma ognuno possiede quello relativo alla propria area; e' ovvio pero' che i router di una stessa area avranno lo stesso database topologico e che i router collegati a piu' aree avranno un database per ogni area. Con questo tipo di organizzazione si hanno due tipi di routing, anzi due livelli : routing intra-area, quando la sorgente e il destinatario dei pacchetti si trovano nella stessa area ; routing inter-area quando la destinazione si trova in un'area differente da quella della sorgente. Nel primo livello di routing, intra-area, non si utilizzano informazioni di routing provenienti dall'esterno.
La backbone consiste di tutte quelle reti che non appartengono a nessuna area, dei router collegati ad esse e di tutti quei router che appartengono a piu' aree. Non e' necessario che la backbone sia contigua, infatti si possono utilizzare i link virtuali per ripristinare la connettivita'. Questi link virtuali sono configurati tra coppie di router backbone con l'interfaccia su aree non-backbone, e sono parte integrante della backbone. Grazie a questi link virtuali, i router collegati sono connessi come reti point-to-point non numerate. Dal punto di vista del grafo, si ha che il costo del link si ottiene come somma delle distanze intra-area tra i due router; si parla di distanza intra-area perche' si utilizza solo il routing intra-area per i link virtuali. Dal punto di vista topologico la backbone e' un'area, con le stesse caratteristiche e proprieta' di tutte le altre.
Per mandare un pacchetto ad un'area esterna occorre utilizzare la backbone; si puo' dividere il cammino che effettua il pacchetto in tre parti:
Questi cammini devono essere, ovviamente, quelli con costo minimo.
E' dunque la topologia backbone a stabilire i cammini fra le aree, cammini
che possono essere creati anche con link virtuali. Come ben si puo' notare,
il router di confine dell'area ha il compito fondamentale di fornire i
costi per il collegamento a tutte le reti esterne all'area, costi che si
sommano a quelli interni all'area e che si ottengono dalle informazioni
risiedenti nel database topologico del router di frontiera dell'area.
Router interni: router che sono connessi direttamente alle reti
appartenenti alla stessa area; fanno parte di questa categoria anche quei
router che interfacce sono sulla backbone.
Router di confine dell'area: router collegati a piu' aree. Essi
eseguono una copia dell'algoritmo per ogni area collegata, piu' una copia
per la backbone.
Router backbone: router che hanno un'interfaccia sulla backbone.
Da sottolineare che i router che hanno solo interfacce sulla backbone sono
da considerare router interni.
Router di confine dell'AS: router che scambiano informazioni
con altri AS. Tutti i router dell'AS conoscono i cammini che portano a
questi router, che sono gli unici a poter instradare l'informazione verso
l'esterno.
Per un esempio di configurazione di un AS vedere RFC 1583 pagg. 24-30.
Il protocollo OSPF associa, ad ogni strada che viene resa nota, una
maschera di indirizzo IP, che ha il compito di stabilire quale range
di indirizzi si puo' descrivere con quella strada. Come esempio, supponiamo
che un summary advertisement per la destinazione 128.185.0.0 abbia
maschera 0xffff0000; esso coprira' il range di indirizzi 128.185.0.0
- 128.185.255.255.
L'introduzione della maschera all'interno di ogni avviso per le destinazioni
consente l'implementazione del subnetting a lunghezza variabile, cioe'
le reti IP di classe A, B o C possono essere divise in sottoreti di lunghezza
variabile. La modalita' per dividere una rete in piu' sottoreti di lunghezza
variabile sono diverse, l'unica cosa che si puo' dire e' che nel protocollo
si hanno queste linee guida: i pacchetti inoltrati, sono inoltrati sempre
verso quelle destinazioni i cui indirizzi matchano meglio, cioe' sono quelli
piu' vicini o piu' specifici. Occorre, a questo punto, specificare meglio
il concetto di area, che cronologicamente e' stato introdotto dopo il concetto
di subnet; l'area e'definita come lista di range di indirizzi, dove
il range di indirizzi e' definito come coppia [indirizzo, maschera].
Quindi come una rete di sottoreti e' costituita da piu' sottoreti separate,
cosi' piu' reti separate possono essere contenute nello stesso range di
indirizzi.
Il protocollo OSPF permette di poter definire le aree stub la
cui caratteristica principale e' quella di non far fluire gli annunci esterni
all'AS, cioe' l'operazione di routing e' basata essenzialmente su scambi
di informazioni con l'interno dell'area. Il vantaggio immediato che si
ha dall'utilizzo di tali aree e' che la dimensione dei database topologici
si riduce sostanzialmente, cosi' come la richiesta di memoria da parte
dei router interni all'area. Nelle stub area si utilizza il routing di
default, cioe' il router o i router di confine dell'area annunciano alle
aree stub la strada di default che esse devono seguire; questa informazione,
pero', viene inoltrata solo alle aree stub e non oltre.
Quando un'area e' definita essere stub? Si definisce tale quando l'area
ha un singolo "punto di uscita" oppure quando la scelta del punto
di uscita non puo' essere fatta in base alla destinazione esterna.
Il protocollo OSPF assicura comunque che la definizione di area stub
e' presa in accordo con tutti i router appartenenti all'area, questo per
evitare confusione quando si inoltrano le informazioni.
Ci sono anche delle limitazioni nell'uso delle aree stub, infatti i
link virtuali non possono prevedere l'utilizzo di aree stub cosi' come
i router di frontiere dell'AS non si possono trovare all'interno di aree
stub.
E' possibile suddividere le aree stesse in
piu' componenti, facendo diventare ogni componente un'area a se stante.
Ovviamente anche il routing della backbone terra' conto della nuova conformazione
topologica.
E' sicuramente importante non partizionare la backbone perche' cio'
causerebbe la non raggiungibilita' di parte dell'AS, anche se questo problema
potrebbe essere risolto configurando un link virtuale.
Un'altra modo per poter partizionare le aree e' la seguente:
prendiamo in considerazione il grafo dell'AS e consideriamo gli identificativi
delle aree come colori degli archi; un gruppo di archi tutti colorati allo
stesso modo e connessi da vertici rappresenta un'area. Se la topologia
resta immutata si avranno molte regioni con piu' colori, ogni colore appartenente
ad un'Area ID differente. Se la topologia viene modificata le aree
possono essere partizionate in piu' aree aventi lo stesso colore. Il routing
sara' comunque effettuato come se le regioni aventi lo stesso colore siano
connesse da una singola regione backbone.
In ogni area viene eseguita una copia separata dell'algoritmo di routing;
per quei routing che sono collegati su piu' aree si avra' una copia dell'algoritmo
per ogni area.
Presentiamo in linee generali l'algoritmo di routing.
La prima operazione che si compie quando un router si attiva e' l'inizializzazione
delle strutture dati per il protocollo di routing e si attende, poi, dai
protocolli dei livelli sottostanti la conferma che tutte le interfacce
sono in funzione; A questo punto si attiva il protocollo Hello per
poter individuare i neighbors (vicini): il router invia pacchetti
hello ai router vicini e a sua volta ne riceve. Sulle reti broadcast
e
Ogni router, ad intervalli prestabiliti, comunica il suo stato, detto
anche link state; questa comunicazione o avviso di link state e'
fornito anche quando il router cambia il suo stato in seguito al verificarsi
di un evento. Anche tramite le adiacenze e' possibile tenere sotto controllo
lo stato del link, potendo stabilire eventuali stati di errore o di caduta
del router; gli avvisi di link state sono inoltrati attraverso tutta l'area
per poter tenere sempre aggiornato lo stato di tutti i router e affinche'
tutti i router di un'area abbiano gli stessi database topologici che a
questo punto possiamo definire come liste di avvisi di link state attraverso
i quali poter costruire il minimum spanning tree e da questo il protocollo
per le routing table.
Per poter effettuare il routing inter-area oltre alle informazioni precedenti, che sono sufficienti per il routing intra-area, occorrono delle informazioni aggiuntive ottenute dai router di confine dell'area, che hanno proprio il compito di fornire informazioni sulla restante parte dell'AS. Come detto in precedenza, ogni router di confine dell'area e' collegato alla backbone e tramite questa a tutti gli altri router di confine delle altre aree ; grazie alle informazioni che tali router hanno il compito di memorizzare (la topologia interna dell'area) e grazie alle informazioni disponibili sulla topologia della backbone, ogni router puo' calcolare il cammino per ogni altra destinazione che si trova fuori della propria area di competenza. Calcolato il cammino, il router di confine trasmette queste informazioni ai router interni alla propria area, offrendo cosi' la possibilita' di ottenere il miglior cammino per ogni destinazione.
Il protocollo OSPF lavora al di sopra IP, utilizzando il protocollo
IP '89. Non e' prevista la funzione di frammentazione/riassemblamento,
in quanto se necessaria si utilizza quella di IP; infatti OSPF splitta
i pacchetti di grosse dimensioni in pacchetti piu' piccoli. I tipi di pacchetti
OSPF sono:
Hello | Individua e gestisce i routers vicini |
---|---|
Database Description | Descrive il contenuto del database |
Link State Request | Scaricamento del database |
Link State Update | Aggiornamento del database |
Link State Acknowledgement | inoltro dell'acknowledgement |
Da notare che i pacchetti di descrizione, aggiornamento e scaricamento
sono inviati solo ai router adiacenti, questo significa che i pacchetti
del protocollo OSPF attraversano un solo salto IP, tranne che per i pacchetti
inviati alle adiacenze virtuali. Inoltre l'indirizzo IP sorgente e' uno
dei due router adiacenti, mentre l'indirizzo IP destinazione puo' essere
sia l'altro router adiacente che un indirizzo multicast.
Esistono due tipi di timers: il primo, di breve durata, causa il verificarsi di un evento; il secondo, invece, scade ad intervalli regolari ed e' utilizzato per l'invio di quei pacchetti che devono essere spediti in tempi prestabiliti, come ad esempio i pacchetti di Hello. Entrambi i timers hanno una durata di un secondo.
Alcuni pacchetti OSPF prendono lo stesso formato dei datagrams multicast IP e siccome tali pacchetti non effettuano piu' di un hop, non e' necessario avere la capacita' di inoltrare tali datagrams.
E' possibile suddividere gli indirizzi delle reti di classe A, B o C in piu' sottoreti di lunghezza variabile.
E' possibile raggruppare reti IP di classe A, B o C in collezioni di reti contigue ottenendo le supernetting.
I protocolli a cui ci si riferisce, sono quelli relativi all'accesso alla rete a livello di linea dati. Le informazioni che si richiedono a tali protocolli riguardano essenzialmente lo stato dell'interfaccia.
Sulle reti non broadcast, come per le reti X.25 PDN, i livelli piu' bassi possono fornire informazioni sulla esistenza o il funzionamento di router tramite l'invio di messaggi che vengono inviati proprio al protocollo OSPF.
Molte caratteristiche e funzionalita' di OSPF sono offerte proprio in termini delle operazioni sulle liste di link state advertisement. Infatti e' proprio la gestione corretta di queste liste che vengono inviate ai router adiacenti che rende efficiente il protocollo, in special modo quando ci si riferisce all'invio di queste informazioni ai router adiacenti.
Il protocollo OSPF fornisce anche delle caratteristiche opzionali, indicate dai router tramite i pacchetti di Hello, di descrizione dei pacchetti o negli avvisi di link state. Alcune capacita' opzionali devono essere supportate da tutti i router di un'area, questo significa che i pacchetti dei router vicini che non supportano tali caratteristiche non possono essere accettati. E' possibile che anche la costruzione delle routing tables possa essere influenzata dalla mancanza di queste capacita' opzionali, evitando quei router deficitari. A volte queste capacita' si possono anche negoziare all'atto dello scambio dei database, specificandole nei pacchetti di descrizione. Le capacita' opzionali di OSPF sono le seguenti:
E' un numero a 32 bit che identifica in maniera univoca il router all'interno dell'AS. Se il Router ID e' stato modificato, il software OSPF del router deve essere riavviato affinche' la modifica abbia effetto.
Rappresenta la struttura dati su cui lavora l'algoritmo di base.
Come detto in precedenza, la backbone e' un'area a tutti gli effetti, per questo l'algoritmo di base lavora allo stesso modo anche sulla backbone, la stessa struttura dati dell'area.
Sono identificati dai Router ID di due router di confine di area. Tali router devono essere collegati ad un'area comune, che e' detta area di transito dei link virtuali. I link virtuali fanno parte della backbone e si comportano come se fossero reti point-to-point non numerate; su questi link si applica il routing intra-area.
Sono strade per raggiungere destinazioni esterne all'AS, ottenute tramite esperienza diretta con altri protocolli (come EGP), o tramite informazioni di configurazione o tramite un mix delle due. I router che gestiscono queste strade esterne sono i router di confine dell'AS.
Sono parte dei database topologici, originati dai router di confine dell'AS. Contengono le strade per le destinazioni esterne all'AS.
Si ottengono dai database topologici e sono costituite da diverse entrate contenenti ognuna un costo con associato uno o piu' cammini, descritti dal tipo e dal prossimo hop.
Indica se il router calcola strade differenti in base al servizio IP che si fornisce.
Questa struttura contiene le informazioni per elaborare l'algoritmo di routing, come ad esempio il database topologico. Ogni rete appartiene ad una singola area cosi' come l'interfaccia del router connette ad una singola area. Anche il router adiacente appartiene ad una singola area. Come detto in precedenza, la backbone ha le stesse caratteristiche di un'area, dunque anche la stessa struttura. Il database topologico e' una collezione di link di router, di networks e di summary link state; il tutto e' fatto fluire attraverso la sola area di appartenenza.
Numero a 32 bit che identifica l'area; l'indirizzo 0.0.0.0 e' riservato alla backbone. Se si utilizzano le subnetting come aree separate, si puo' utilizzare l'indirizzo IP della rete come Area ID.
Il range di indirizzi che definisce l'area e' dato dalla coppia [indirizzo, maschera] Ogni rete e' assegnata ad un'area in base al range di indirizzi a cui essa appartiene.
L'interfaccia di un router appartiene ad una e una sola area; se si tratta della backbone fanno parte dell'interfaccia anche i link virtuali, il cui costo e' dato dal costo del piu' piccolo cammino intra-area tra i due router.
Questa lista, costruita da ogni router, descrive lo stato delle interfacce del router sull'area.
Descrive i router attualmente connessi all'area. Gli avvisi di link della rete sono generati per ogni transito della rete multi-access nell'area.
I summary link advertisement sono generati dai router di confine dell'area. Questa lista descrive le strade per l'interno e l'esterno dell'AS.
E' l'albero dei minimi cammini per l'area, con il router stesso come radice. E' costruito utilizzando l'algoritmo di Dijkstra.
Indica il tipo di autenticazione che si utilizza per lo scambio dei pacchetti.
Indica se l'area e' un'area di transito.
E' un parametro che puo' essere configurato; tramite questo valore si definiscono le aree stub.
Questo valore indica il costo di default del summary link che il router
di confine dell'area dovrebbe inviare come informazione nell'area. Se sono
supportati piu' servizi IP si possono avere piu' costi separati, uno per
ogni servizio.