Difference between revisions of "Cisco OSPF"
Helikopter (talk | contribs) |
Helikopter (talk | contribs) |
||
Line 1: | Line 1: | ||
− | Open Shortest Path First (RFC 2328) är ett link-state routing protokoll och vilket betyder att enheterna känner till alla länkar i topologin och deras ''operational states'' och lagrar detta i en LSDB. Routrar måste ha ett OSPF-id för att kunna skicka meddelanden. OSPF kommunicerar med multicast som alltid har ttl satt till 1. OSPF använder IP protokoll #89. Se även [[Cisco_OSPFv3|OSPFv3]]. | + | Open Shortest Path First (RFC 2328) är ett link-state routing protokoll och vilket betyder att enheterna känner till alla länkar i topologin och deras ''operational states'' och lagrar detta i en LSDB. Routrar måste ha ett OSPF-id för att kunna skicka meddelanden. OSPF kommunicerar med multicast som alltid har ttl satt till 1 alternativt unicast på vissa nätverkstyper. OSPF använder IP protokoll #89. Se även [[Cisco_OSPFv3|OSPFv3]]. |
'''Type:''' Link State | '''Type:''' Link State | ||
Line 15: | Line 15: | ||
==Packets== | ==Packets== | ||
Alla paket kan vara unicast eller multicast, det avgörs av nätverkstyp. | Alla paket kan vara unicast eller multicast, det avgörs av nätverkstyp. | ||
− | * Hello: Används för att upptäcka grannar. Innehåller mask, timers, flaggor (capabilities), DR/BDR (om det finns) och router-ID för grannar. | + | * '''Hello:''' Används för att upptäcka grannar. Innehåller mask, timers, flaggor (capabilities), DR/BDR (om det finns) och router-ID för grannar. |
− | * Database Description: Används först för att avgöra master/slave i grannskapet, högst router-id blir master. | + | <div class="mw-collapsible mw-collapsed" style="width:250px"> |
− | * Link-State Request: Innehåller vilka LSA:er som avsändaren vill ha alla detaljer om. | + | Exempel: |
− | * Link-State Update: Innehåller alla typer och detaljer om LSA:er och skickas på förfrågan eller vid topologiändring | + | <div class="mw-collapsible-content"> |
− | * Link-State Acknowledgment: LSU confirmation. | + | [[File:Cisco_OSPF_Hello.PNG]] |
+ | </div> | ||
+ | </div> | ||
+ | |||
+ | * '''Database Description:''' Innehåller LSA headers under den initiala topologi-synken. Används först för att avgöra master/slave i grannskapet, högst router-id blir master. | ||
+ | <div class="mw-collapsible mw-collapsed" style="width:250px"> | ||
+ | Exempel: | ||
+ | <div class="mw-collapsible-content"> | ||
+ | [[File:Cisco_OSPF_DD.PNG]] | ||
+ | </div> | ||
+ | </div> | ||
+ | |||
+ | * '''Link-State Request:''' Innehåller vilka LSA:er som avsändaren vill ha alla detaljer om. | ||
+ | <div class="mw-collapsible mw-collapsed" style="width:250px"> | ||
+ | Exempel: | ||
+ | <div class="mw-collapsible-content"> | ||
+ | [[File:Cisco_OSPF_Request.PNG]] | ||
+ | </div> | ||
+ | </div> | ||
+ | |||
+ | * '''Link-State Update:''' Innehåller alla typer och detaljer om LSA:er och skickas på förfrågan eller vid topologiändring | ||
+ | <div class="mw-collapsible mw-collapsed" style="width:250px"> | ||
+ | Exempel: | ||
+ | <div class="mw-collapsible-content"> | ||
+ | [[File:Cisco_OSPF_Update.PNG]] | ||
+ | </div> | ||
+ | </div> | ||
+ | |||
+ | * '''Link-State Acknowledgment:''' LSU confirmation. | ||
+ | <div class="mw-collapsible mw-collapsed" style="width:250px"> | ||
+ | Exempel: | ||
+ | <div class="mw-collapsible-content"> | ||
+ | [[File:Cisco_OSPF_Ack.PNG]] | ||
+ | </div> | ||
+ | </div> | ||
==Grannskap== | ==Grannskap== | ||
Line 56: | Line 90: | ||
router ospf 1 | router ospf 1 | ||
neighbor 10.0.0.2 | neighbor 10.0.0.2 | ||
− | Man kan sätta prioritet på sina grannar. Default är detta 0 men om man har flera neighbor statements och någon har icke-noll så kommer routern att först skicka Hellos till denna. Endast när DR/BDR election är klart så börjar det skickas Hellos till de övriga grannarna. Detta är en mekanism som ökar chansen att DR och BDR blir de routrar man vill. OBS detta har inget med vinnare av DR/BDR att göra. | + | Man kan sätta prioritet på sina grannar om man kör unicast. Default är detta 0 men om man har flera neighbor statements och någon har icke-noll så kommer routern att först skicka Hellos till denna. Endast när DR/BDR election är klart så börjar det skickas Hellos till de övriga grannarna. Detta är en mekanism som ökar chansen att DR och BDR blir de routrar man vill. OBS detta har inget med vinnare av DR/BDR att göra. |
router ospf 1 | router ospf 1 | ||
neighbor 10.0.0.5 priority <0-255> | neighbor 10.0.0.5 priority <0-255> | ||
− | Verify | + | '''Verify''' |
show ip ospf neighbor | show ip ospf neighbor | ||
show ip ospf interface brief | show ip ospf interface brief | ||
Line 76: | Line 110: | ||
nsf | nsf | ||
nsr | nsr | ||
+ | |||
show ip ospf nsf | show ip ospf nsf | ||
show ip ospf nsr | show ip ospf nsr | ||
Line 97: | Line 132: | ||
show ip ospf database network | show ip ospf database network | ||
− | Typ 1 och 2 räcker för att alla routrar inom arean ska kunna känna till topologin och köra SPF för att bestämma bästa vägarna. | + | Note: Typ 1 och 2 räcker för att alla routrar inom arean ska kunna känna till topologin och köra SPF för att bestämma bästa vägarna. |
− | * '''Type 3, Net Summary:''' <br/> Typ 1 och 2 går ej till andra areor utan istället skapar ABR (router med ben i 2 areor) typ 3 LSA:er | + | * '''Type 3, Net Summary:''' <br/> Typ 1 och 2 går ej till andra areor utan istället skapar ABR (router med ben i 2 areor) typ 3 LSA:er (en ABR genererar aldrig summary LSA om den inte har ett ben i area 0). Det som annonseras är samma men den enda infon som skickas med är: subnät, mask och costen för ABR att nå dit. Typ 3 LSA:er korsar aldrig areor, istället har ABR en intern OSPF-routingtabell som innehåller allt som har kommit i backbone-arean och för varje intra- eller inter-area route skapas det nya typ 3 LSAer som floodas i nonbackbone-arean. OBS ABR accepterar endast typ 3 LSA:er från backbone area, detta för att förhindra routingloopar. |
show ip ospf border-routers | show ip ospf border-routers | ||
show ip ospf database summary | show ip ospf database summary | ||
− | * '''Type 4, ASBR Summary:''' <br/> När en ABR floodar vidare en typ 5 LSA in i sin area vet inte övriga routrar i arean hur långt det är till ASBR. Därför skapar den en LSA typ 4 som den floodar. Den innehåller ASBRs RID och ABRs cost till ASBR. Typ 4 | + | * '''Type 4, ASBR Summary:''' <br/> När en ABR floodar vidare en typ 5 LSA in i sin area vet inte övriga routrar i arean hur långt det är till ASBR. Därför skapar den en LSA typ 4 som den också floodar. Den innehåller ASBRs RID och ABRs cost till ASBR. Typ 4 LSA:er behöver inte finnas i samma area som ASBR eftersom där berättar ASBR om sig själv med typ 1 LSA med E-biten satt utan dessa behövs i övriga areor. |
show ip ospf database asbr-summary | show ip ospf database asbr-summary | ||
− | * '''Type 5, AS External:''' <br/> När en ASBR skickar in en extern route skapar den en typ 5 LSA som innehåller metric och metric type. Det som är intressant för övriga routrar att veta är hur långt det är till ASBR | + | * '''Type 5, AS External:''' <br/> När en ASBR skickar in en extern route skapar den en typ 5 LSA som innehåller metric och metric type. Det som är intressant för övriga routrar att veta är hur långt det är till ASBR och ifall det finns flera vägar som är lika används alla. Finns det flera ASBR används den som är närmast internt enligt SPF. |
show ip ospf border-routers | show ip ospf border-routers | ||
show ip ospf database external | show ip ospf database external | ||
Line 113: | Line 148: | ||
* '''Type 7, NSSA External:''' | * '''Type 7, NSSA External:''' | ||
− | Floodas inom egna arean, översätts till LSA typ 5 av ABR med högst RID för att lämna arean. | + | Floodas inom egna NSSA-arean, översätts till LSA typ 5 av ABR med högst RID för att lämna arean. |
show ip ospf database nssa-external | show ip ospf database nssa-external | ||
− | Se alla LSA:er | + | Se alla LSA:er och RIB. |
show ip ospf database | show ip ospf database | ||
+ | show ip ospf rib | ||
+ | show ip ospf topology-info | ||
+ | Kolla vilka LSA:er en viss nod annonserar ut. | ||
+ | show ip ospf database adv-router <RID> | ||
− | Typ 6 (MOSPF) och 8 stöds inte på Cisco-routrar och 9-11 är Opaque. | + | * '''Others:''' Typ 6 (MOSPF) och 8 stöds inte på Cisco-routrar och 9-11 är Opaque. |
==Area types== | ==Area types== | ||
Line 144: | Line 183: | ||
'''NSSA Totally Stubby''' <br/> | '''NSSA Totally Stubby''' <br/> | ||
− | NSSA Totally Stubby är samma som NSSA fast alla LSA typ 3 blockas också förutom default routen, samt att default routen injiceras default. Inga LSA typ 3,4,5. | + | NSSA Totally Stubby är samma som NSSA fast alla LSA typ 3 blockas också förutom default routen, samt att default routen injiceras default. Inga LSA typ 3,4,5. Ett ben i area 0 krävs för detta kommando. |
area 1 nssa no-summary | area 1 nssa no-summary | ||
+ | |||
+ | '''Transit''' <br/> | ||
+ | Är på default vilket betyder att intra-area routes är prefered över inter-area routes via area 0. Preference overrides metric. | ||
+ | router ospf 1 | ||
+ | capability transit | ||
+ | show ip ospf | i transit | ||
==Nätverkstyper== | ==Nätverkstyper== | ||
Line 161: | Line 206: | ||
OSPF optimerar flooding-processen på multiaccess-länkar genom att använda ''designated routers'' och ''backup designated routers''. Annars hade varenda router på ett sådant segment behövt upprätta fulla grannskap med alla andra. Med en DR räcker det med att alla utbyter LSDB endast med den, detta resulterar i mindre trafik. Varje router har fullt grannskap med DR och BDR, 2-way med övriga. DR har två syften, det är också så att det är DRs som skapar typ 2 LSAn som representerar multiaccess-segmentet, annars hade det behövts för varje grannskap och det hade inte blivit någon vacker LSDB. | OSPF optimerar flooding-processen på multiaccess-länkar genom att använda ''designated routers'' och ''backup designated routers''. Annars hade varenda router på ett sådant segment behövt upprätta fulla grannskap med alla andra. Med en DR räcker det med att alla utbyter LSDB endast med den, detta resulterar i mindre trafik. Varje router har fullt grannskap med DR och BDR, 2-way med övriga. DR har två syften, det är också så att det är DRs som skapar typ 2 LSAn som representerar multiaccess-segmentet, annars hade det behövts för varje grannskap och det hade inte blivit någon vacker LSDB. | ||
− | Behöver en DR skicka ut en LSU gör den det till 224.0.0.5 som alla DROther lyssnar på. Behöver en DROther skicka en uppdatering gör den det till 224.0.0.6 som DR och BDR lyssnar på. Alla enheter som får en LSU ackar den med en unicast LSAck till avsändaren, med undantag om LSUn kom från sig själv. I topologier utan DR används 224.0.0.5 för allt. | + | Behöver en DR skicka ut en LSU gör den det till 224.0.0.5 som alla DROther lyssnar på. Behöver en DROther skicka en uppdatering gör den det till 224.0.0.6 som DR och BDR lyssnar på (det är av denna anledning det behövs en BDR). Alla enheter som får en LSU ackar den med en unicast LSAck till avsändaren, med undantag om LSUn kom från sig själv. I topologier utan DR används 224.0.0.5 för allt. |
DR election görs mellan 2-way och ExStart i och med att Hellos innehåller DR/BDR om det finns. Om det kommer in en Hello med DR satt till 0.0.0.0 betyder det att det inte finns någon DR än, t.ex. efter ett outage. Då väntar routern en liten stund för att ge andra en chans att komma upp. Detta kallas OSPF wait time och är ställt till samma som Dead time på det interfacet. Under wait time lyssnar routern in RID och prioritet från sina grannar. Val av DR/BDR görs först efter wait time är över. Election görs lokalt på routern utifrån de värden som kommit in. Dock slutar det alltid med att alla har samma. | DR election görs mellan 2-way och ExStart i och med att Hellos innehåller DR/BDR om det finns. Om det kommer in en Hello med DR satt till 0.0.0.0 betyder det att det inte finns någon DR än, t.ex. efter ett outage. Då väntar routern en liten stund för att ge andra en chans att komma upp. Detta kallas OSPF wait time och är ställt till samma som Dead time på det interfacet. Under wait time lyssnar routern in RID och prioritet från sina grannar. Val av DR/BDR görs först efter wait time är över. Election görs lokalt på routern utifrån de värden som kommit in. Dock slutar det alltid med att alla har samma. | ||
Line 187: | Line 232: | ||
show ip ospf interface | i Cost | show ip ospf interface | i Cost | ||
− | ''' | + | '''Administrative Distance''' |
router ospf 1 | router ospf 1 | ||
distance ospf intra-area 110 inter-area 110 external 110 | distance ospf intra-area 110 inter-area 110 external 110 | ||
show ip protocols | i Distance | show ip protocols | i Distance | ||
− | Advertise a maximum metric so that other routers do not prefer the router as an intermediate hop | + | Advertise a maximum metric so that other routers do not prefer the router as an intermediate hop for 60 seconds. |
max-metric router-lsa on-startup 60 | max-metric router-lsa on-startup 60 | ||
Line 201: | Line 246: | ||
no discard-route external | no discard-route external | ||
− | ''' | + | '''Allmänna rekommendationer''' |
− | * Set your maximum LSA settings to keep from killing weak boxes | + | * Set your maximum LSA settings to keep from killing weak boxes, '''max-lsa''' |
* Baseline your network so you know how many LSAs normally float around | * Baseline your network so you know how many LSAs normally float around | ||
* Configure LSA warnings to alert of problems | * Configure LSA warnings to alert of problems | ||
Line 267: | Line 312: | ||
==Convergence== | ==Convergence== | ||
− | Tuning protocol parameters per interface | + | Tuning protocol parameters per interface. |
ip ospf hello-interval ''seconds'' | ip ospf hello-interval ''seconds'' | ||
ip ospf dead-interval ''seconds'' | ip ospf dead-interval ''seconds'' | ||
ip ospf retransmission-interval ''seconds'' | ip ospf retransmission-interval ''seconds'' | ||
ip ospf transmit-delay ''seconds'' | ip ospf transmit-delay ''seconds'' | ||
+ | |||
+ | Fast Hellos | ||
+ | ip ospf dead-interval minimal hello-multiplier 3 | ||
Timers: LSA & SPF | Timers: LSA & SPF | ||
Line 280: | Line 328: | ||
timers throttle lsa all 10 4000 6000 | timers throttle lsa all 10 4000 6000 | ||
timers lsa arrival 2000 | timers lsa arrival 2000 | ||
+ | Med Group Pacing kan LSA:er "samåka" i refresh-paket. | ||
+ | |||
+ | Stäng av periodic refresh av LSA:er på ett interface. | ||
+ | ip ospf flood-reduction | ||
'''iSPF''' <br/> | '''iSPF''' <br/> | ||
Line 294: | Line 346: | ||
int gig2 | int gig2 | ||
ip ospf bfd disable | ip ospf bfd disable | ||
+ | |||
+ | '''Prefix Suppression''' <br/> | ||
+ | För att få Loopback till Loopback-konnektivitet mellan alla routrar med minimal belastning på routingtabellen kan man skippa att ha med OSPF-länknäten i RIB. Alla noder bör stödja detta. | ||
+ | |||
+ | Global | ||
+ | router ospf 1 | ||
+ | prefix-suppression | ||
+ | Per interface | ||
+ | interface gi2 | ||
+ | ip ospf prefix-suppression | ||
+ | Verify | ||
+ | show ip ospf interface | i Ethernet|Prefix-suppression | ||
'''LFA''' <br/> | '''LFA''' <br/> | ||
Line 300: | Line 364: | ||
==Filtering== | ==Filtering== | ||
+ | Non-local filtering för OSPF kan endast göras på ABR och ASBR. | ||
+ | |||
'''Intra-area''' <br/> | '''Intra-area''' <br/> | ||
− | Går att göra med en distribute-list dock måste alla routrar vara konfade likadant annars kan det bli blackholing. | + | Filtering påverkar inte LSDB eller flooding utan endast det som hamnar i RIB. Går att göra med en distribute-list dock måste alla routrar vara konfade likadant annars kan det bli blackholing. |
access-list 1 deny 172.16.3.1 | access-list 1 deny 172.16.3.1 | ||
access-list 1 permit any | access-list 1 permit any | ||
router ospf 1 | router ospf 1 | ||
− | distribute-list 1 | + | distribute-list 1 in |
Alternativt | Alternativt | ||
summary-address 10.0.0.0 255.255.255.0 not-advertise | summary-address 10.0.0.0 255.255.255.0 not-advertise | ||
Administrative Distance | Administrative Distance | ||
+ | access-list 10 permit 10.0.0.0 0.0.0.255 | ||
router ospf 1 | router ospf 1 | ||
distance 255 <RID> 0.0.0.0 10 | distance 255 <RID> 0.0.0.0 10 | ||
− | + | ||
+ | LSA Type-3 Filtering | ||
+ | area 1 range 10.0.0.0 255.255.255.0 not-advertise | ||
'''Inter-area''' | '''Inter-area''' | ||
+ | ip prefix-list PFXLIST seq 5 deny 10.10.0.0/24 | ||
+ | ip prefix-list PFXLIST seq 10 permit 0.0.0.0/0 le 32 | ||
+ | |||
router ospf 1 | router ospf 1 | ||
area 1 filter-list prfix PFXLIST out | area 1 filter-list prfix PFXLIST out | ||
− | + | '''Database Filtering''' <br/> | |
− | ip | + | Förhindrar OSPF-processen från att skicka några LSA:er, görs per interface alternativt neighbor. Bör endast användas där all flooding är unnecessary, t.ex. NBMA subnets där det finns många routrar. |
+ | ip ospf database-filter all out | ||
− | + | Route-Maps* | |
− | |||
− | |||
− | Route-Maps | ||
− | |||
==Virtual Link== | ==Virtual Link== | ||
− | OSPF kräver att alla areor är anslutna till area 0. I vissa scenarior kan det vara svårlöst och då kan man använda sig av virtual links för att tunnla OSPF-paket över en annan nonbackbone-area. ABR:n som ej har en direktanslutning till area 0 kan på så sätt få en full kopia av LSDB i area 0. Det har inget med data plane att göra utan endast OSPF control plane. En virtual link syns i LSDB som en unnumbered point-to-point länk. Arean som tunneln går över blir en transit area och den måste vara en vanlig area, dvs ingen stub eller nssa. Detta pga av att data plane går därigenom som vanlig routad trafik så den arean måste känna till allt, intra-, inter- och external routes. Interface MTU skickas ej med i DBD-paket över en VL. Virtual link är rekommenderat som backup- eller temporär anslutning. | + | OSPF kräver att alla areor är anslutna till area 0. I vissa scenarior kan det vara svårlöst och då kan man använda sig av virtual links för att tunnla OSPF-paket över en annan nonbackbone-area. ABR:n som ej har en direktanslutning till area 0 kan på så sätt få en full kopia av LSDB:n i area 0. Det har inget med data plane att göra utan endast OSPF control plane. En virtual link syns i LSDB som en unnumbered point-to-point länk och LSU:er som skickas har DoNotAge-biten satt. Arean som tunneln går över blir en transit area och den måste vara en vanlig area, dvs ingen stub eller nssa. Detta pga av att data plane går därigenom som vanlig routad trafik så den arean måste känna till allt, intra-, inter- och external routes. VL fungerar som en demand circuit därför bör man ta ner och upp interfacet vid konfigurationsändringar. Interface MTU skickas ej med i DBD-paket över en VL. Virtual link är rekommenderat som backup- eller temporär anslutning. |
'''R1''' ABR mellan area 0 och 1 | '''R1''' ABR mellan area 0 och 1 | ||
Line 361: | Line 430: | ||
'''[[Cisco_BGP|BGP]],''' seed metric för bgp är 1 | '''[[Cisco_BGP|BGP]],''' seed metric för bgp är 1 | ||
redistribute bgp 100 subnets | redistribute bgp 100 subnets | ||
+ | |||
+ | '''Filtering''' <br/> | ||
+ | LSA type 5 floodas genom hela OSPF-domänen så man får filtrera vid redistributionspunkterna. | ||
+ | route-map RIP_TO_OSPF | ||
+ | match ip address 10 | ||
+ | router ospf 1 | ||
+ | redistribute rip route-map RIP_TO_OSPF | ||
Limit | Limit |
Revision as of 15:32, 18 July 2016
Open Shortest Path First (RFC 2328) är ett link-state routing protokoll och vilket betyder att enheterna känner till alla länkar i topologin och deras operational states och lagrar detta i en LSDB. Routrar måste ha ett OSPF-id för att kunna skicka meddelanden. OSPF kommunicerar med multicast som alltid har ttl satt till 1 alternativt unicast på vissa nätverkstyper. OSPF använder IP protokoll #89. Se även OSPFv3.
Type: Link State
Algorithm: Dijkstra
AD: 110
Metric: Cost (Bandwidth)
Protocols: IP
Packets: 5
Contents
Packets
Alla paket kan vara unicast eller multicast, det avgörs av nätverkstyp.
- Hello: Används för att upptäcka grannar. Innehåller mask, timers, flaggor (capabilities), DR/BDR (om det finns) och router-ID för grannar.
- Database Description: Innehåller LSA headers under den initiala topologi-synken. Används först för att avgöra master/slave i grannskapet, högst router-id blir master.
- Link-State Request: Innehåller vilka LSA:er som avsändaren vill ha alla detaljer om.
- Link-State Update: Innehåller alla typer och detaljer om LSA:er och skickas på förfrågan eller vid topologiändring
- Link-State Acknowledgment: LSU confirmation.
Grannskap
Neighbors måste komma överens om:
- Subnät/Mask
- Area
- Timers
- Olika router-ID
- Flaggor: Stub, NSSA
- MTU (kollas endast på broadcast-nätverk)
- Authentication type
- Kompatibla nätverkstyper, DR-election eller ej
Neighbor states
Kronologisk ordning
- Down: Initial state. Om det inte kommer in några OSPF-paket under Dead interval blir grannen down.
- Attempt: Gäller endast NBMA och point-to-multipoint nonbroadcast.
- Init: Ett hello (utan mottagarens router-ID) har tagits emot.
- 2-way: Ett hello med mottagarens router-ID har tagits emot.
- ExStart: Utbyta tomma DD för att bestämma master/slave.
- Exchange: Utbyta database description
- Loading: LSA:er tankas över
- Full: Allt klart
Logga ändringar i neighbor state
router ospf 1 log-adjacency-changes show ip ospf events
Styr grannskap/uppdateringar med passive-interface
passive-interface default no passive-interface [interface] show ip ospf interface | i Ethernet|Passive
Specificera granne manuellt, detta måste göras på NBMA och point-to-multipoint nonbroadcast. Det räcker att göra detta på ena sidan för att grannskap ska bildas men best practice är att köra detta på båda sidor.
router ospf 1 neighbor 10.0.0.2
Man kan sätta prioritet på sina grannar om man kör unicast. Default är detta 0 men om man har flera neighbor statements och någon har icke-noll så kommer routern att först skicka Hellos till denna. Endast när DR/BDR election är klart så börjar det skickas Hellos till de övriga grannarna. Detta är en mekanism som ökar chansen att DR och BDR blir de routrar man vill. OBS detta har inget med vinnare av DR/BDR att göra.
router ospf 1 neighbor 10.0.0.5 priority <0-255>
Verify
show ip ospf neighbor show ip ospf interface brief ping 224.0.0.5
Clearing routing process
clear ip ospf process debug ip ospf adj
Per neighbor cost/metric
neighbor 10.0.0.5 cost 1000
Graceful restart
En router kan starta om OSPF-grannskap och ändå fortsätta forwarda paket som vanligt med hjälp av Graceful OSPF Restart (RFC 3623). Cisco har även en egen variant av detta som kallas NSF (Non Stop Forwarding) men routrarna har stöd för båda varianterna. Den som restartar hamnar i restart mode och directly connected grannar måste stödja helper mode för att detta ska lira. Helpers måste ignorera att det uteblir Hellos under antydd period och låtsas som att grannskapet är uppe och DR är densamme. Överskrids tidsgränsen rivs adjacency direkt. NSF-aware (helper support) finns på de flesta enheter och är på default. NSF-capable finns på high-end plattformar. GR/NSF utnyttjar att modernare enheter sköter data plane och control plane i olika hårdvara.
router ospf 1 nsf nsr show ip ospf nsf show ip ospf nsr
Graceful shutdown
Droppa adjacencies, flusha LSAer och skicka ut Hello med tom neighbor list för att trigga att grannens adjacency går direkt till Init state.
router ospf 1 shutdown
Per interface
int gi2 ip ospf shutdowm
LSA-typer
LSUer innehåller link-state advertisements, dessa beskriver länkar och enheter i nätverket. Det är endast den router som en LSA härstammar ifrån som får modifiera eller ta bort LSA:n. Andra routrar måste processa och skicka den omodifierad vidare inom sitt flodding scope, de får ej droppa den innan maximum lifetime har gått ut. Detta säkerställer att alla routrar har identiska LSDB men det medför också att man blir begränsad i var man kan aggregera och filtrera routes. För att ta bort en LSA snabbt sätts age till 3600 sekunder (maximum lifetime) och den kommer då att tas bort direkt. En LSA header är vanligtvis 20 bytes.
De vanligaste LSAerna.
-
Type 1, Router:
Alla routrar skapar och floodar en LSA som representerar sig själv. Det finns information om vilka interface och grannar som finns i den arean. Floodas endast inom origin area. ABR sätter B-biten och ASBR sätter E-biten för att informera arean om sin roll.
show ip ospf database router
-
Type 2, Network:
Dessa representerar transit subnät och skapas endast om det finns en DR på det subnätet, dvs multiaccess-segment. LSID sätts till DRs interface IP på subnätet men innehåller också information (RID) om alla grannar till DR på det subnätet. Floodas endast inom origin area.
show ip ospf database network
Note: Typ 1 och 2 räcker för att alla routrar inom arean ska kunna känna till topologin och köra SPF för att bestämma bästa vägarna.
-
Type 3, Net Summary:
Typ 1 och 2 går ej till andra areor utan istället skapar ABR (router med ben i 2 areor) typ 3 LSA:er (en ABR genererar aldrig summary LSA om den inte har ett ben i area 0). Det som annonseras är samma men den enda infon som skickas med är: subnät, mask och costen för ABR att nå dit. Typ 3 LSA:er korsar aldrig areor, istället har ABR en intern OSPF-routingtabell som innehåller allt som har kommit i backbone-arean och för varje intra- eller inter-area route skapas det nya typ 3 LSAer som floodas i nonbackbone-arean. OBS ABR accepterar endast typ 3 LSA:er från backbone area, detta för att förhindra routingloopar.
show ip ospf border-routers show ip ospf database summary
-
Type 4, ASBR Summary:
När en ABR floodar vidare en typ 5 LSA in i sin area vet inte övriga routrar i arean hur långt det är till ASBR. Därför skapar den en LSA typ 4 som den också floodar. Den innehåller ASBRs RID och ABRs cost till ASBR. Typ 4 LSA:er behöver inte finnas i samma area som ASBR eftersom där berättar ASBR om sig själv med typ 1 LSA med E-biten satt utan dessa behövs i övriga areor.
show ip ospf database asbr-summary
-
Type 5, AS External:
När en ASBR skickar in en extern route skapar den en typ 5 LSA som innehåller metric och metric type. Det som är intressant för övriga routrar att veta är hur långt det är till ASBR och ifall det finns flera vägar som är lika används alla. Finns det flera ASBR används den som är närmast internt enligt SPF.
show ip ospf border-routers show ip ospf database external
Det finns två typer av externa routes, E1 (increment metric) och E2 (do not increment metric). Detta avgörs beroende på vad ASBR sätter för flagga på LSAn. Default på Cisco är E2 för redistribution, dock är E1 prefered över E2. Externa routes måste även innehålla en Forwarding Address. Vanligtvis sätts 0.0.0.0, det innebär att det ska skickas till ASBR själv. Det finns dock situationer när man vill ha något annat (nonzero) för att undvika suboptimal routing. Denna adress måste kännas till intra- eller interarea annars installeras inte routen i routingtabellen.
- Type 7, NSSA External:
Floodas inom egna NSSA-arean, översätts till LSA typ 5 av ABR med högst RID för att lämna arean.
show ip ospf database nssa-external
Se alla LSA:er och RIB.
show ip ospf database show ip ospf rib show ip ospf topology-info
Kolla vilka LSA:er en viss nod annonserar ut.
show ip ospf database adv-router <RID>
- Others: Typ 6 (MOSPF) och 8 stöds inte på Cisco-routrar och 9-11 är Opaque.
Area types
Att dela upp sitt nätverk i OSPF-areor är grunden för att göra OSPF mer skalbart eftersom det sparar på SPF-beräkningar. Förutom vanliga areor finns det flera andra typer.
Stub
Alla areor behöver inte känna till alla externa nätverk. Då kan man reducera overhead genom att ha areor där man endast skickar in LSA typ 3. Dvs det finns ingen ASBR och LSA typ 4 och 5 stoppas vid ABR. Skulle det komma en LSA 4/5 från någon så ignoreras den. För att hitta ut ur arean så skickar ABR:er in default route med en LSA typ 3.
router ospf 1 area 1 stub
Stub bit is sent in hello packets
Totally Stubby
Totally stubby är samma som stubby fast alla LSA typ 3 blockas också förutom default routen. Inga LSA typ 3,4,5 gör att LSDB reduceras ytterligare.
ABR
area 1 stub no-summary
Others
area 1 stub
NSSA
Om man vill effektivisera OSPF samtidigt som man behöver injicera in routes från något att protokoll genom någon router i en stubby area så kommer det inte att funka eftersom LSA 4/5 ignoreras. Då får man använda en not-so-stubby area och då skapar ASBR LSA typ 7 istället. NSSA är en kompromiss som tillåter att externa routes kan laddas upp till backbone-arean medans all information från övriga areor ej behöver tas in i arean. I en NSSA kommer inte default routen att annonseras default som i övriga stubby areas.
router ospf 1 area 1 nssa area 1 nssa default-information-originate
NSSA Totally Stubby
NSSA Totally Stubby är samma som NSSA fast alla LSA typ 3 blockas också förutom default routen, samt att default routen injiceras default. Inga LSA typ 3,4,5. Ett ben i area 0 krävs för detta kommando.
area 1 nssa no-summary
Transit
Är på default vilket betyder att intra-area routes är prefered över inter-area routes via area 0. Preference overrides metric.
router ospf 1 capability transit show ip ospf | i transit
Nätverkstyper
Det finns olika typer av nätverk och pga hur OSPF fungerar måste man konfigurera det lite olika beroende på typ. T.ex. DR/BDR election hålls endast på broadcast och NBMA. Om frame relay används måste DR och BDR ha PVC till alla andra routrar annars får inte alla uppdateringar. På multiaccess och point-to-point (ethernet) används default nätverkstypen BROADCAST. Beroende på nätverkstyp behövs neighbor-kommandot användas eller ej.
show ip ospf interface | i protocol|Network Type
Ändra nätverkstyp på ett interface.
interface gi0/0 ip ospf network ?
Loopback annonseras default som /32, detta ändras med point-to-point.
interface lo0 ip ospf network point-to-point
Designated Router
OSPF optimerar flooding-processen på multiaccess-länkar genom att använda designated routers och backup designated routers. Annars hade varenda router på ett sådant segment behövt upprätta fulla grannskap med alla andra. Med en DR räcker det med att alla utbyter LSDB endast med den, detta resulterar i mindre trafik. Varje router har fullt grannskap med DR och BDR, 2-way med övriga. DR har två syften, det är också så att det är DRs som skapar typ 2 LSAn som representerar multiaccess-segmentet, annars hade det behövts för varje grannskap och det hade inte blivit någon vacker LSDB.
Behöver en DR skicka ut en LSU gör den det till 224.0.0.5 som alla DROther lyssnar på. Behöver en DROther skicka en uppdatering gör den det till 224.0.0.6 som DR och BDR lyssnar på (det är av denna anledning det behövs en BDR). Alla enheter som får en LSU ackar den med en unicast LSAck till avsändaren, med undantag om LSUn kom från sig själv. I topologier utan DR används 224.0.0.5 för allt.
DR election görs mellan 2-way och ExStart i och med att Hellos innehåller DR/BDR om det finns. Om det kommer in en Hello med DR satt till 0.0.0.0 betyder det att det inte finns någon DR än, t.ex. efter ett outage. Då väntar routern en liten stund för att ge andra en chans att komma upp. Detta kallas OSPF wait time och är ställt till samma som Dead time på det interfacet. Under wait time lyssnar routern in RID och prioritet från sina grannar. Val av DR/BDR görs först efter wait time är över. Election görs lokalt på routern utifrån de värden som kommit in. Dock slutar det alltid med att alla har samma.
Finns det en DR RID i ett Hello som kommer in så har någon annat gjort valet och man kan direkt hoppa till election, dvs skippa resten av wait time. Det som görs då är att man fyller den roll som ej är fylld, t.ex. BDR genom att ta den högsta prioriteten och högsta router id som man känner till. Detta gör att det inte finns någon preemption. Däremot kan det tillfälligt existera routrar som är klara med election och som har kommit fram till olika slutsatser. Då byter man DR/BDR till de med högst prio/id när man upptäcker krocken. Om man kör samma prio på alla och stöter på att det inte högsta RID som är DR är det för att den med lägre RID har kommit upp först. Det finns som sagt ingen preemption.
Alla routrar med OSPF priority 1-255 är med i election, 1 är default och sätter man 0 ignoreras DR/BDR election på den enheten.
interface gi0/0 ip ospf priority 50
Konfiguration
Router ID, på Ciscoenheter väljs ID enligt följande ordning:
- router-id kommandot
- Högsta IP-adressen på ett no-shut loopback interface (som ej är assignat någon annan OSPF-process)
- Högsta IP-adressen på ett no-shut interface (som ej är assignat någon annan OSPF-process)
Interfacen behöver inte vara nåbara eller ha något med OSPF att göra utan alla interface jämförs. ID ändras endast när processen startas om eller router-id-kommandot körs.
router-id for this OSPF process (in IPv4 address format)
router ospf 1 router-id 1.1.1.1
Uppdatera reference bandwidth till 100G. Om man stänger av auto-cost får alla länkar samma cost (10) oavsett bandbredd, så som IS-IS fungerar.
router ospf 1 auto-cost reference-bandwidth 100000 #Mbits per second show ip ospf interface | i Cost
Administrative Distance
router ospf 1 distance ospf intra-area 110 inter-area 110 external 110 show ip protocols | i Distance
Advertise a maximum metric so that other routers do not prefer the router as an intermediate hop for 60 seconds.
max-metric router-lsa on-startup 60
MTU mismatch
ip ospf mtu-ignore
Discard
no discard-route external
Allmänna rekommendationer
- Set your maximum LSA settings to keep from killing weak boxes, max-lsa
- Baseline your network so you know how many LSAs normally float around
- Configure LSA warnings to alert of problems
- Crash each type of box on your network in a lab environment so you know what it will do under stress.
MPLS
Om man kör OSPF kan man autoenablea LDP på alla OSPF-interface. Se även Cisco MPLS.
mpls ldp autoconfig show ip ospf mpls ldp interface
Authentication
Klassisk OSPF authentication är none/null, clear-text eller MD5. Default är none och man slår på det per interface. Man kan ha multipla nycklar per interface, då gäller högst key id först. Går även att köra authentication på virtual links, se det stycket.
Enable clear-text authentication on area 0
router ospf 1 area 0 authentication interface gi0/1 ip ospf authentication-key [password]
Enable MD5 authentication on area 0
area 0 authentication message-digest interface gi0/1 ip ospf message-digest-key 10 md5 [password]
Enable MD5 authentication on an interface
interface gi0/1 ip ospf authentication message-digest ip ospf message-digest-key 10 md5 [password]
Verify
show ip ospf interface | i Ethernet|authentication
Extended cryptographic authentication finns i modernare implementationer av OSPF och har stöd för key-chains och SHA-HMAC. Nyckel med högst id används ifall det finns flera nycklar som är aktiva. Key-chain
key chain HACKER key 1 key-string SECRET cryptographic-algorithm hmac-sha-512
Per interface, det finns inget area-kommando som slår på key-chain auth på alla interface som vid klassisk konfiguration.
int gi2 ip ospf authentication key-chain HACKER
Default Routing
Kräver gateway of last resort.
default-information originate
Om man inte har någon gateway of last resort kan man ändå annonsera ut en default route.
default-information originate always
NSSA
En NSSA ABR genererar inte en default route by default (om den inte konfas som totally stubby) eftersom man inte vet om gateway of last resort ska vara i en annan area eller externt (type 7). En NSSA ASBR måste ha en default route i routingtabellen för att kunna skicka ut en default route. En NSSA ABR behöver inte det:
area 1 nssa default-information-originate
Summarization
OSPF-routrar inom samma area måste ha identiska LSDB efter att flooding är färdigt vilket gör att summering endast tillåts vid ABR eller ASBR. Med hjälp av not-advertise i slutet av kommandona kan man styra om de mer specifika prefixen ska annonseras också eller ej.
ABR
router ospf 1 area 10 range 10.10.0.0 255.255.252.0
Area 10 säger var summeringen kommer ifrån så den skickas till alla andra areor. Cost för summeringen tas från den component route med lägst metric om man inte anger något specifikt.
ASBR
router ospf 1 summary-address 10.10.0.0 255.255.252.0
Convergence
Tuning protocol parameters per interface.
ip ospf hello-interval seconds ip ospf dead-interval seconds ip ospf retransmission-interval seconds ip ospf transmit-delay seconds
Fast Hellos
ip ospf dead-interval minimal hello-multiplier 3
Timers: LSA & SPF
router ospf 1 timers throttle spf 100 1000 10000 timers pacing flood 50 timers paciong retransmission 75 timers throttle lsa all 10 4000 6000 timers lsa arrival 2000
Med Group Pacing kan LSA:er "samåka" i refresh-paket.
Stäng av periodic refresh av LSA:er på ett interface.
ip ospf flood-reduction
iSPF
SPF-algoritmen behöver inte köras för alla länkar varje gång det sker en topologi-förändring. Med incremental SPF körs endast algoritmen för de delar som har påverkats av förändringen för att spara CPU-cykler. Detta går att styra individuellt på enheterna med ispf-kommandot. Det kan vara svårt att veta exakt hur mycket skillnad detta gör men generellt ju större topologi ju större skillnad.
router ospf 1 ispf show ip ospf | i Incremental
BFD
Se även BFD.
router ospf 1 bfd all-interfaces
Disable per interface
int gig2 ip ospf bfd disable
Prefix Suppression
För att få Loopback till Loopback-konnektivitet mellan alla routrar med minimal belastning på routingtabellen kan man skippa att ha med OSPF-länknäten i RIB. Alla noder bör stödja detta.
Global
router ospf 1 prefix-suppression
Per interface
interface gi2 ip ospf prefix-suppression
Verify
show ip ospf interface | i Ethernet|Prefix-suppression
LFA
Loop-Free Alternate Fast Reroute. Single Hop LFA / IP FRR.
show ip ospf fast-reroute
Filtering
Non-local filtering för OSPF kan endast göras på ABR och ASBR.
Intra-area
Filtering påverkar inte LSDB eller flooding utan endast det som hamnar i RIB. Går att göra med en distribute-list dock måste alla routrar vara konfade likadant annars kan det bli blackholing.
access-list 1 deny 172.16.3.1 access-list 1 permit any router ospf 1 distribute-list 1 in
Alternativt
summary-address 10.0.0.0 255.255.255.0 not-advertise
Administrative Distance
access-list 10 permit 10.0.0.0 0.0.0.255 router ospf 1 distance 255 <RID> 0.0.0.0 10
LSA Type-3 Filtering
area 1 range 10.0.0.0 255.255.255.0 not-advertise
Inter-area
ip prefix-list PFXLIST seq 5 deny 10.10.0.0/24 ip prefix-list PFXLIST seq 10 permit 0.0.0.0/0 le 32 router ospf 1 area 1 filter-list prfix PFXLIST out
Database Filtering
Förhindrar OSPF-processen från att skicka några LSA:er, görs per interface alternativt neighbor. Bör endast användas där all flooding är unnecessary, t.ex. NBMA subnets där det finns många routrar.
ip ospf database-filter all out
Route-Maps*
Virtual Link
OSPF kräver att alla areor är anslutna till area 0. I vissa scenarior kan det vara svårlöst och då kan man använda sig av virtual links för att tunnla OSPF-paket över en annan nonbackbone-area. ABR:n som ej har en direktanslutning till area 0 kan på så sätt få en full kopia av LSDB:n i area 0. Det har inget med data plane att göra utan endast OSPF control plane. En virtual link syns i LSDB som en unnumbered point-to-point länk och LSU:er som skickas har DoNotAge-biten satt. Arean som tunneln går över blir en transit area och den måste vara en vanlig area, dvs ingen stub eller nssa. Detta pga av att data plane går därigenom som vanlig routad trafik så den arean måste känna till allt, intra-, inter- och external routes. VL fungerar som en demand circuit därför bör man ta ner och upp interfacet vid konfigurationsändringar. Interface MTU skickas ej med i DBD-paket över en VL. Virtual link är rekommenderat som backup- eller temporär anslutning.
R1 ABR mellan area 0 och 1
router ospf 1 network 10.0.1.0 0.0.0.255 area 1 network 1.1.1.0 0.0.0.255 area 0 area 1 virtual-link 3.3.3.3 #Router-ID
R3 ABR mellan area 1 och 2
router ospf 1 network 10.0.1.0 0.0.0.255 area 1 network 10.0.2.0 0.0.0.255 area 2 network 3.3.3.0 0.0.0.255 area 2 area 1 virtual-link 1.1.1.1 #Router-ID
Verify
show ip ospf virtual-links
Authentication
area 2 virtual-link 2.2.2.2 authentication message-digest message-digest-key 10 md5 CISCO
Redistribution
Default seed metric: 20 (except BGP)
Med OSPF behövs ordet subnets annars redistribueras endast classful networks.
Static
redistribute
redistribute rip subnets
redistribute eigrp 1 subnets
BGP, seed metric för bgp är 1
redistribute bgp 100 subnets
Filtering
LSA type 5 floodas genom hela OSPF-domänen så man får filtrera vid redistributionspunkterna.
route-map RIP_TO_OSPF match ip address 10 router ospf 1 redistribute rip route-map RIP_TO_OSPF
Limit
redistribute maximum-prefix