Syftet med denna demonstration är att synliggöra hur OSPF arbetar internt som ett link-state-protokoll – från att routrar hittar grannar till att de bygger en gemensam topologibild, kör SPF och installerar rutter. Målet är att eleverna ska kunna koppla OSPF:s process till konkret utdata från routrar.
I denna demo används en topologi med fem PT-routrar och loopback-baserade LAN, vilket gör det möjligt att observera både alternativa vägar och konvergens vid förändring.
Link-State-processen i OSPF
OSPF uppnår konvergens genom en länkstatusbaserad arbetskedja. Det viktiga är att OSPF inte “skickar rutter” mellan routrar. I stället sprider protokollet topologiinformation (LSAs), så att varje router kan beräkna sina bästa vägar lokalt. Detta görs i följande steg:
- Establish Neighbor Adjacencies
- Exchange Link-State Advertisements
- Build the Link State Database
- Execute the SPF Algorithm
- Choose the Best Route
Steg 1: Etablera grannar och adjacencies
Processen startar med Hello-paket på OSPF-aktiverade interface. Routrar upptäcker varandra och kontrollerar att grundparametrar matchar (t.ex. timers och area).
Detta ska kunna observeras i utdata via kommando: show ip ospf neighbor:
- grannar syns och når FULL
- på Ethernet kan DR/BDR förekomma
Steg 2: Utbyte av databasinformation och LSAs
När adjacency byggs börjar routrar utbyta information om sin topologi. Detta sker genom att routrar sprider LSAs som beskriver länkar, nät och kostnader.
Detta ska kunna observeras i utdata:
- att LSDB fylls med Router-LSA för samtliga routrar i area 0
- att broadcast-segment representeras av Network-LSA
Kommandon att koppla till steget:
- show ip ospf database
- show ip ospf database router
- show ip ospf database network
Steg 3: Bygga LSDB – en gemensam topologibild via kommando show ip ospf database
Alla mottagna LSAs lagras i Link-State Database (LSDB). En avgörande egenskap i OSPF är att alla routrar i samma area ska ha en identisk LSDB.
Detta ska kunna observeras i utdata:
- samma LSAs (och i praktiken samma innehåll) på flera routrar
- LSDB representerar hela topologin, inte bara närmaste hopp
Steg 4: SPF-beräkning (Dijkstra) och vägval via kommando show ip route ospf
När LSDB är synkroniserad kör varje router SPF-algoritmen lokalt. Routern placerar sig själv som “rot” och beräknar kortaste vägar baserat på ackumulerad cost.
Detta ska kunna observeras i utdata:
- loopback-LAN från alla routrar installeras som OSPF-rutter
- vissa nät kan ge ECMP (två next-hops) om kostnaderna är lika
Steg 5: Konvergens vid förändring
En central del i link-state-operation är att OSPF snabbt kan reagera på förändringar. När en länk går ner skapas nya LSAs, LSDB uppdateras och SPF körs om.
Detta ska kunna observeras i utdata (före/efter förändring):
- uppdaterade LSAs (nya sequence numbers)
- ändrade next-hops i routingtabellen
Kommandon att koppla till steget:
- show ip ospf database
- show ip route ospf
Topologi
Topologin består av fem routrar, där R1, R2, R5 och R4 bildar en kvadrat. R3 är placerad inne i kvadraten och har länkar till R1 och R4. Varje router har ett simulerat LAN via loopback-interface.

Konfigurationer
Konfigurationerna i demonstrationen är utformade för att stödja ovanstående syfte och möjliggöra observation av OSPF:s link-state-process i praktiken.
- R1(config)# no ip domain-lookup
- R1(config)# interface fa0/0
- R1(config-if)# description R1-R2 (10.2.0.0/16)
- R1(config-if)# ip address 10.2.0.1 255.255.0.0
- R1(config-if)# no shutdown
- R1(config-if)# exit
- R1(config)# interface fa1/0
- R1(config-if)# description R1-R3 (10.3.0.0/16)
- R1(config-if)# ip address 10.3.0.1 255.255.0.0
- R1(config-if)# no shutdown
- R1(config-if)# exit
- R1(config)# interface fa2/0
- R1(config-if)# description R1-R4 (10.4.0.0/16)
- R1(config-if)# ip address 10.4.0.1 255.255.0.0
- R1(config-if)# no shutdown
- R1(config-if)# exit
- R1(config)# interface loopback1
- R1(config-if)# description R1-LAN (10.1.0.0/16)
- R1(config-if)# ip address 10.1.0.1 255.255.0.0
- R1(config)# router ospf 10
- R1(config-router)# router-id 1.1.1.1
- R1(config-router)# network 10.2.0.0 0.0.255.255 area 0
- R1(config-router)# network 10.3.0.0 0.0.255.255 area 0
- R1(config-router)# network 10.4.0.0 0.0.255.255 area 0
- R1(config-router)# network 10.1.0.0 0.0.255.255 area 0
- R1(config-router)# passive-interface loopback1
- R1(config-router)# exit
- R1(config)# end
- R1# write memory
- R2(config)# no ip domain-lookup
- R2(config)# interface fa0/0
- R2(config-if)# description R2-R1 (10.2.0.0/16)
- R2(config-if)# ip address 10.2.0.2 255.255.0.0
- R2(config-if)# no shutdown
- R2(config-if)# exit
- R2(config)# interface fa1/0
- R2(config-if)# description R2-R5 (10.9.0.0/16)
- R2(config-if)# ip address 10.9.0.1 255.255.0.0
- R2(config-if)# no shutdown
- R2(config-if)# exit
- R2(config)# interface loopback2
- R2(config-if)# description R2-LAN (10.5.0.0/16)
- R2(config-if)# ip address 10.5.0.1 255.255.0.0
- R2(config-if)# exit
- R2(config)# router ospf 10
- R2(config-router)# router-id 2.2.2.2
- R2(config-router)# network 10.2.0.0 0.0.255.255 area 0
- R2(config-router)# network 10.9.0.0 0.0.255.255 area 0
- R2(config-router)# network 10.5.0.0 0.0.255.255 area 0
- R2(config-router)# passive-interface loopback2
- R2(config-router)# exit
- R2(config)# end
- R2# write memory
- R3(config)# no ip domain-lookup
- R3(config)# interface fa1/0
- R3(config-if)# description R3-R1 (10.3.0.0/16)
- R3(config-if)# ip address 10.3.0.2 255.255.0.0
- R3(config-if)# no shutdown
- R3(config-if)# exit
- R3(config)# interface fa0/0
- R3(config-if)# description R3-R4 (10.7.0.0/16)
- R3(config-if)# ip address 10.7.0.2 255.255.0.0
- R3(config-if)# no shutdown
- R3(config-if)# exit
- R3(config)# interface loopback3
- R3(config-if)# description R3-LAN (10.6.0.0/16)
- R3(config-if)# ip address 10.6.0.1 255.255.0.0
- R3(config-if)# exit
- R3(config)# router ospf 10
- R3(config-router)# router-id 3.3.3.3
- R3(config-router)# network 10.3.0.0 0.0.255.255 area 0
- R3(config-router)# network 10.7.0.0 0.0.255.255 area 0
- R3(config-router)# network 10.6.0.0 0.0.255.255 area 0
- R3(config-router)# passive-interface loopback3
- R3(config-router)# exit
- R3(config)# end
- R3# write memory
- R4(config)# no ip domain-lookup
- R4(config)# interface fa0/0
- R4(config-if)# description R4-R5 (10.10.0.0/16)
- R4(config-if)# ip address 10.10.0.1 255.255.0.0
- R4(config-if)# no shutdown
- R4(config-if)# exit
- R4(config)# interface fa1/0
- R4(config-if)# description R4-R3 (10.7.0.0/16)
- R4(config-if)# ip address 10.7.0.1 255.255.0.0
- R4(config-if)# no shutdown
- R4(config-if)# exit
- R4(config)# interface fa2/0
- R4(config-if)# description R4-R1 (10.4.0.0/16)
- R4(config-if)# ip address 10.4.0.2 255.255.0.0
- R4(config-if)# no shutdown
- R4(config-if)# exit
- R4(config)# interface loopback4
- R4(config-if)# description R4-LAN (10.8.0.0/16)
- R4(config-if)# ip address 10.8.0.1 255.255.0.0
- R4(config-if)# exit
- R4(config)# router ospf 10
- R4(config-router)# router-id 4.4.4.4
- R4(config-router)# network 10.10.0.0 0.0.255.255 area 0
- R4(config-router)# network 10.7.0.0 0.0.255.255 area 0
- R4(config-router)# network 10.4.0.0 0.0.255.255 area 0
- R4(config-router)# network 10.8.0.0 0.0.255.255 area 0
- R4(config-router)# passive-interface loopback4
- R4(config-router)# exit
- R4(config)# end
- R4#
- R5(config)# no ip domain-lookup
- R5(config)# interface fa0/0
- R5(config-if)# description R5-R4 (10.10.0.0/16)
- R5(config-if)# ip address 10.10.0.2 255.255.0.0
- R5(config-if)# no shutdown
- R5(config-if)# exit
- R5(config)# interface fa1/0
- R5(config-if)# description R5-R2 (10.9.0.0/16)
- R5(config-if)# ip address 10.9.0.2 255.255.0.0
- R5(config-if)# no shutdown
- R5(config-if)# exit
- R5(config)# interface loopback5
- R5(config-if)# description R5-LAN (10.11.0.0/16)
- R5(config-if)# ip address 10.11.0.1 255.255.0.0
- R5(config-if)# exit
- R5(config)# router ospf 10
- R5(config-router)# router-id 5.5.5.5
- R5(config-router)# network 10.10.0.0 0.0.255.255 area 0
- R5(config-router)# network 10.9.0.0 0.0.255.255 area 0
- R5(config-router)# network 10.11.0.0 0.0.255.255 area 0
- R5(config-router)# passive-interface loopback5
- R5(config-router)# exit
- R5(config)# end
- R5# write memory
Sammanfattning
- Routingtabellen på R1 visar att OSPF har installerat rutter till samtliga loopback-LAN i topologin.
- Detta bekräftar att LSDB är synkroniserad och att SPF-algoritmen har beräknat bästa vägarna.
- För vissa destinationer, exempelvis nätet 10.7.0.0 och R5:s loopback 10.11.0.1, installeras två next-hops vilket visar ECMP (Equal-Cost Multi-Path). Detta sker när OSPF beräknar två alternativa vägar med samma ackumulerade kostnad.
R1#show ip route ospf
10.0.0.0/8 is variably subnetted, 11 subnets, 2 masks
O 10.5.0.1 [110/2] via 10.2.0.2, 00:05:49, FastEthernet0/0
O 10.6.0.1 [110/2] via 10.3.0.2, 00:05:23, FastEthernet1/0
O 10.7.0.0 [110/2] via 10.3.0.2, 00:04:41, FastEthernet1/0
[110/2] via 10.4.0.2, 00:04:41, FastEthernet2/0
O 10.8.0.1 [110/2] via 10.4.0.2, 00:04:41, FastEthernet2/0
O 10.9.0.0 [110/2] via 10.2.0.2, 00:04:31, FastEthernet0/0
O 10.10.0.0 [110/2] via 10.4.0.2, 00:04:31, FastEthernet2/0
O 10.11.0.1 [110/3] via 10.2.0.2, 00:04:31, FastEthernet0/0
[110/3] via 10.4.0.2, 00:04:31, FastEthernet2/0
Sammanfattning
För att bekräfta att SPF-algoritmen körs lokalt på varje router visas routingtabellen från ytterligare en router i topologin.
Att visa samtliga routrars routingtabeller tillför inget ytterligare pedagogiskt värde, eftersom de alla baseras på samma Link-State Database.
Routingtabellen på R2 visar att OSPF-rutter installeras baserat på lokala SPF-beräkningar. Trots att samtliga routrar delar samma Link-State Database kan bästa väg och next-hop skilja sig mellan routrar beroende på deras position i topologin.
Förekomsten av ECMP i routingtabellen bekräftar att OSPF installerar flera vägar när den ackumulerade kostnaden är lika.
R2#show ip route ospf
10.0.0.0/8 is variably subnetted, 11 subnets, 2 masks
O 10.1.0.1 [110/2] via 10.2.0.1, 00:17:41, FastEthernet0/0
O 10.3.0.0 [110/2] via 10.2.0.1, 00:17:10, FastEthernet0/0
O 10.4.0.0 [110/2] via 10.2.0.1, 00:16:44, FastEthernet0/0
O 10.6.0.1 [110/3] via 10.2.0.1, 00:17:10, FastEthernet0/0
O 10.7.0.0 [110/3] via 10.2.0.1, 00:16:20, FastEthernet0/0
[110/3] via 10.9.0.2, 00:16:20, FastEthernet1/0
O 10.8.0.1 [110/3] via 10.2.0.1, 00:16:20, FastEthernet0/0
[110/3] via 10.9.0.2, 00:16:20, FastEthernet1/0
O 10.10.0.0 [110/2] via 10.9.0.2, 00:16:20, FastEthernet1/0
O 10.11.0.1 [110/2] via 10.9.0.2, 00:16:20, FastEthernet1/0
Standardkostnad i demonstrationen
I utgångsläget används OSPF:s automatiskt beräknade kostnad på samtliga router-till-router-länkar. Eftersom länkarna i topologin är FastEthernet (100 Mb/s) och OSPF:s standardreferensbandbredd är 100 Mb/s, blir den resulterande kostnaden 1 per länk.
Detta innebär att alla länkar initialt har samma vikt i SPF-beräkningen, vilket leder till att OSPF ofta identifierar flera vägar med lika ackumulerad kostnad och därmed installerar ECMP (Equal-Cost Multi-Path) i routingtabellen.
Cost-justering på R1 och R4
R1(config)# interface FastEthernet2/0
R1(config-if)# ip ospf cost 15
R1(config-if)# end
R1#
Motsvarande konfiguration på R2
R1#show ip route ospf
10.0.0.0/8 is variably subnetted, 11 subnets, 2 masks
O 10.5.0.1 [110/2] via 10.2.0.2, 00:36:56, FastEthernet0/0
O 10.6.0.1 [110/2] via 10.3.0.2, 00:36:30, FastEthernet1/0
O 10.7.0.0 [110/2] via 10.3.0.2, 00:08:34, FastEthernet1/0
O 10.8.0.1 [110/3] via 10.3.0.2, 00:08:34, FastEthernet1/0
O 10.9.0.0 [110/2] via 10.2.0.2, 00:35:38, FastEthernet0/0
O 10.10.0.0 [110/3] via 10.2.0.2, 00:08:34, FastEthernet0/0
[110/3] via 10.3.0.2, 00:08:34, FastEthernet1/0
O 10.11.0.1 [110/3] via 10.2.0.2, 00:08:34, FastEthernet0/0
När kostnaden på länken mellan R1 och R4 ökades från 1 till 15, uppdaterade OSPF sina Router-LSAs och körde SPF-algoritmen på nytt. Detta ledde till att vägar som använde länken R1–R4 inte längre var optimala. Till exempel från R1 till R5 LAN 10.11.0.0
Routingtabellen på R1 uppdaterades därför så att trafiken i stället dirigeras via alternativa vägar med lägre ackumulerad kostnad. För vissa destinationer försvann ECMP, medan det för andra uppstod på nytt.