**Open Shortest Path First** (**OSPF**) er en Internal Gateway Protocol (IGP) som opererer I Lag 3 i OSI-modellen. Den er en link-state routing protokoll som kjører innenfor et Autonomous System. OSPF ble funnet opp som ett alternativ til Routing Information Protocol (RIP) for å håndtere begrensningene denne hadde. Den bygger et tre som definerer nettverkstopologien og ved hjelp av Dijkstras algoritme regner den ut korteste veien til destinasjoner/nettverk.

Opprinnelse
-----------

OSPF er en routingprotokoll utviklet av Interior Gateway Protocol (IGP) gruppen av Internet Engineering Task Force(IETF). Gruppen ble formet i 1988 for å designe en IGP basert på Shortest Path First (SPF) algoritmen.

Protokollen stammer fra forskning fra blant annet Richard Bolt, Leo Beranek og Robert Newman sin SPF algoritme utviklet i 1978 for ARPANET, deres senere arbeid med Area Routing i 1986, Radia Perlman sin forskning på feil-tolerant broadcasting av rutinginformasjon i 1988 og en tidlig versjon av Intermediate System-to-Intermediate System (IS-IS) rutingprotokollen.

Den er en åpen standard som hvem som helst kan implementere uten lisenskostnader. Dette har gjort at mange leverandører av nettverksutstyr støtter protokollen. Som en følge av dette har OSPF blitt populær som en erstatning for proprietære rutingprotokoller.

Virkemåte
---------

OSPF er en Link-state Rutingprotokoll i motsetning til den eldre Router Information Protocol som baserer seg på Distance Vector Routing. Ideen med Link State Ruting at alle rutere på nettverket samler informasjon om de andre ruterene og lager seg en database som beskriver nettverkstopologien. Denne databasen er lik på alle rutere og ut fra denne kalkuleres den korteste veien til alle destinasjoner på nettverket, resultatene legges i rutingtabellen.

Det første en OSPF ruter må gjøre er å finne og opprette relasjoner til sine naborutere. Dette gjøres ved hjelp av "Hello" pakker. Disse danner relasjoner og opprettholder de ved å fortsette å sende "Hello" til naboen. Med Hello Interval defineres antall sekunder mellom hver gang en ruter sender "Hello" pakker. Router Dead Interval definerer hvor lang tid ruteren skal vente på å få svar før naboen deklareres død.

Når relasjonene er opprettet er OSPF ruterene klare for å utveksle databaseinformasjon. Dette gjøres med noe som kalles Link State Advertisements(LSA). Rutere utveksler LSA med hverandre og bygger opp hver Link State Databases(LSDB). Det er viktig at LSDBene på alle rutere er like slik at det ikke oppstår rutingloops, LSDBene må derfor synkroniseres jevnlig.

En utfordring oppstår når LSDBene skal synkroniseres, hvordan forteller man naboen om alle sine LSA uten å sende over hele databasen? For å overkomme dette problemet bruker OSPF Database Description og Link State Request meldinger. Istedenfor å sende hele innholdet sendes en Database Description som inneholder en liste over tilgjengelige oppføringer uten å inkludere data fra oppføringene. Ruteren som mottar denne leter i sin egen database og sender en Link State Request over oppføringer den mangler. 

OSPF rutere i nettverket har funnet hverandre, naborelasjoner har blitt dannet, LSA har blitt utvekslet og LSDB er synkronisert. Rutere bruker informasjonen i sin LSDB sammen med Dijkstras algoritme for å regne ut den korteste veien til alle nettverk i tilhørende Area og plasserer oppføringene i rutingtabellen sin.

OSPF Area typer
---------------

* Normal Areas
* Stubby Areas
* Not-so-stubby-areas

OSPF Rutertyper
---------------

* Internal Router – Har alle sine interface i samme area.
* Area Border Router – Har interface tilkoblet I mer enn ett area og har ansvaret for å generere oppsummeringsannonseringer for ett eller flere areas.
* Autonomous System Boundary Router – Fungerer som en gateway mellom OSPF og andre routing protokoller og har ansvaret for å generere AS-eksterne annonseringer.

OSPF Nettverkstyper
-------------------

* Broadcast nettverk (Ethernet)
* Point-to-Point nettverk
* Non-broadcast Multi access (NBMA) nettverk
* Point-to-Multipoint nettverk

Designated Router Types
-----------------------

Hvis alle routere I ett broadcast nettverk utveksler ruter med hverandre kan dette bidra til mye trafikk og begrense båndbredden spesielt på trege linker. For å redusere trafikk velger alle broadcast nettverk en Designert Ruter(DR). En DR lytter til LSAer på All Designated Routers multicast-adresse 224.0.0.6. Dette er for å forhindre at andre routere tar imot og bruker ressurser på å prosessere meldinger som ikke er adressert til dem. Den sender ut nettverks LSA til andre rutere på 224.0.0.5 dette forsikrer alle at alle rutere har den samme Link State Databasen. Backup Designated Router (BDR) lytter også på LSA på multicast-adressen 224.0.0.6. BDR sikrer kjapp failover hvis den designerte ruteren skulle bli utilgjengelig.

Andre OSPF rutere sender LSA til DR og BDR med multicast-adressen 224.0.0.6 og lytter til nettverks LSAer på 224.0.0.5. Point-to-point og point-to-multipoint nettverk velger ikke DR og BDR.

Referanser
----------

1. 1 2 3  Cisco Technology Handbook

Litteratur
----------

* Douglas E. Comer: *TCP/IP: Principles, protocols and architecture Fifth Edition*. ISBN 0-13-1876716
* Adrian Farrel: *The Internet and its protocols: A comparative approach*. ISBN 1-55860-913-X

|  |  |
| --- | --- |
| Oppslagsverk/autoritetsdata | LCCN
 |