Cisco OSPF

From HackerNet
Revision as of 19:39, 21 March 2016 by Helikopter (talk | contribs)
Jump to: navigation, search

Link-state routing protokoll 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. Open Shortest Path First kommunicerar med multicast som alltid har ttl satt till 1. OSPF använder IP protokoll #89. RFC 2328

  • Type: Link State
  • Algorithm: Dijkstra
  • AD: 110
  • Metric: Cost (Bandwidth)
  • Protocols: IP

Router ID

På Ciscoenheter väljs ID enligt följande ordning:

  1. router-id kommandot
  2. Högsta IP-adressen på ett no-shut loopback interface (som ej är assignat någon annan OSPF-process)
  3. 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

Paket-typer

  • Hello: Upptäcka grannar. Innehåller mask, timers, flaggor, DR/BDR (om det finns) och router-ID för grannar.
  • Database Description: Innehåller LSA headers under den initiala topologi-synken
  • Link-State Request: Innehåller vilka LSA:er som avsändaren vill ha alla detaljer om
  • Link-State Update: Innehåller alla 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
  • Authentication type
  • Kompatibla nätverkstyper, DR-election eller ej

Graceful shutdown, en OSPF router skickar ett HELLO utan grannar då tas grannskapet ner.

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

Styr grannskap/uppdateringar med passive-interface

passive-interface default
no passive-interface [interface]

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. 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>

Show

show ip ospf neighbor

LSA-typer

LSUer innehåller link-state advertisements, dessa beskriver länkar 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.

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.
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

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. 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 LSAer 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.
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 floodar. Den innehåller ASBRs RID och ABRs cost till ASBR. Typ 4 LSAer behöver inte finnas i samma area som ASBR utan 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, ifall det finns flera vägar som är lika används alla. Och 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). Default på Cisco är E2 för redistribution, dock är E1 prefered över E2.

  • Type 7, NSSA External:
show ip ospf database nssa-external

Se alla LSA:er

show ip ospf database

Typ 6 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.

Stub No LSA type 5

area 1 stub

Stub bit is sent in hello packets

Totally Stubby No LSA type 3,4,5. Default route only.
ABR

area 1 stub no-summary

Others

area 1 stub

NSSA LSA type 7

area 1 nssa

NSSA Totally Stubby LSA type 7. No LSA type 3,4.

area 1 nssa no-summary

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.

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.

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. 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

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.

Ändra nätverkstyp på ett interface.

interface gi0/0
 ip ospf network ?

Loopback

interface lo1
 ip ospf network point-to-point

Rekommendationer

  • Set your maximum LSA settings to keep from killing weak boxes
  • 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.

Konfiguration

Uppdatera reference bandwidth till 100G

router ospf 1
auto-cost reference-bandwidth 100000
exit
show ip ospf interface | i Cost

Enable routing on an IP network

network [network-number] [wildcard-mask] area [area-id]

Default route

default-information originate

Eller om man inte har någon gateway of last resort

default-information originate always

AD

router ospf 1
 distance ospf intra-area 200
 distance ospf inter-area 100
 distance ospf external 120

Advertise a maximum metric so that other routers do not prefer the router as an intermediate hop

max-metric router-lsa on-startup 60

Authentication

Enable MD5 authentication in Area 0

area 0 authentication message-digest

Enable OSPF authentication on an interface

interface [interface]
ip ospf 1 area 0
ip ospf message-digest-key 10 md5 [password]
exit

Key-chain

key chain TEST
key 1
key-string SECRET
cryptographic-algorithm hmac-sha-512
int gi2
ip ospf authentication key-chain TEST

OSPFv3, IPsec

int gi2
ospfv3 encryption ipsec spi 2001 esp aes-cbc 256 0 ABC123... sha1 0 CBA321...
ipv6 ospf encryption ipsec spi 2001 esp aes-cbc 256 0 ABC123... sha1 0 CBA321...

Summarization

ABR

router ospf 1
area 10 range 10.10.0.0 255.255.252.0
exit

ASBR

router ospf 1
summary-address 10.10.0.0 255.255.252.0
exit

Tuning protocol parameters

ip ospf hello-interval seconds
ip ospf dead-interval seconds
ip ospf retransmission-interval seconds
ip ospf transmit-delay seconds

Timers

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

Filtering

Inter-area

router ospf 1
area 1 filter-list prfix PFXLIST out
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

Intra-area
Går att göra med en distribute-list dock måste alla routrar vara konfade likadant annars kan det bli blackholing.

router ospf 1
 distribute-list 1
access-list 1 deny 172.16.3.1
access-list 1 permit any

Alternativt

summary-address 10.0.0.0 255.255.255.0 not-advertise

Virtual Link

Virtual link är rekommenderat som backup- eller temporär anslutning.

R1

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

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

Show

show ip ospf virtual-links

LFA

Loop-Free Alternate Fast Reroute

Diverse

MTU mismatch

ip ospf mtu-ignore

Discard

no discard-route external

Redistribution

Default seed metric: 20 (except BGP)

Static

redistribute static

RIP

redistribute rip subnets

EIGRP

redistribute eigrp 1 subnets 

Troubleshoot

ping 224.0.0.5
show ip ospf interface brief
show ip protocols
show ip ospf events
show ip ospf topology-info
show ip ospf database router
show ip ospf rib
show ip ospf statistics

Reset database and neighbors

clear ip ospf process