OSPF podstawy
by admin · Luty 21, 2017
OSPF podstawowe informacje
OSPF (Open Shortest Path First) – wolnym tłumaczeniu „pierwszeństwo ma najkrótsza ścieżka” jest protokołem routingu typu IGP (Interior Gateway Protocol). OSPF został przedstawiony w 1998 jako protokół otwarty i takim jest do dnia dzisiejszego. Dla IPv4 korzystamy obecnie z OSPFv2, natomiast dla IPv6 z OSPFv3. OSPF jest dobrze skalowalny w większych sieciach, ponieważ umożliwia budowę struktury hierarchicznej opartej o obszary. OSPF jest protokołem typu link-state w ramach jednego obszaru, natomiast pomiędzy obszarami zachowuje się jak protokół typu distance-vector. OSPF wspiera VLSM (Variable Length Subnet Mask). Dystans administracyjny protokołu OSPF wynosi 110. W obrębie jednego obszaru wszystkie routery wymieniają się między sobą informacją o stanie łączy i każdy z nich przelicza trasy samodzielnie. OSPF korzysta z kosztu do wyznaczenia najlepszej trasy. Domyślnie koszt wynosi 10^8 / bandwidth w bits/s (dla 100Mbit łącza koszt wynosi 1). Poniżej znajduje się tabelka z domyślnymi kosztami dla poszczególnych pasm:
Bandwidth Koszt OSPF
100Gbps 1
40Gbps 1
10Gbps 1
1Gbps 1
100Mbps 1
10Mbps 10
1.544Mbps 64
768Kbps 133
128Kbps 781
W skrócie
- protokół routingu typu stan-łącza (link-state)
- protokół otwarty (IETF)
- korzysta z algorytmu Djikstry
- bezklasowy
- wspiera VLSM (variable length subnet mask)
- Aktualizacje są wysyłane na adresy multicast (224.0.0.5 i 224.0.0.6)
- metryka = koszt (koszt = 10^8/pasmo w bitach na sekundę)
- Dystans administracyjny = 110
- Umożliwia równoważenie obciążenia przez 4 ścieżki z takimi samymi kosztami
Nagłówek pakietu OSPF
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version # | Type | Packet length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Router ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Area ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Checksum | AuType |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Authentication |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Authentication |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Każdy pakiet OSPF zaczyna się standardowym 24 bajtowym nagłówkiem w skład którego wchodzą następujące pola:
Version (8 bitów) – numer wersji OSPF. Są 3 wersje OSPFv1, OSPFv2 (IPv4) i OSPFv3 (IPv6)
Type (8 bitów) – typ pakietu:
1- Hello packet
2- Database Descriptor packet
3- Link State Request packet
4- Link State Update packet
5- Link State Acknowledgment packet
Packet length (16 bitów) – długość pakietu OSPF
Router ID (32 bity) – identyfikator routera
Area ID (32 bity) – numer obszaru OSPF
Checksum (16 bitów) – suma kontrolna pakietu OSPF, bez pola Authentication
AuType (16 bitów) – typ uwierzytelniania
0- brak hasła
1- hasło w otwartym tekście
2- uwierzytelnianie MD5
Authentication (64 bity) – dane uwierzytelniające do weryfikacji integralności pakietu
Typy pakietów OSPF
- Hello – pakiety hello służą do utrzymywania i zestawiania relacji sąsiedztwa między routerami OSPF
- Database Description – pakiet zawierający bazę danych z trasami
- Link State Request – żądanie aktualnej informacji o stanie łączy od sąsiada
- Link State Update – aktualizacja informacji o stanie łączy danego routera
- Link State ACK – potwierdzenie otrzymania pakietu OSPF
Stany procesu OSPF
- Down
- Init
- 2 way
- Exstart
- Exchange
- Loading
- Full
Router z uruchomionym procesem OSPF może być w jednym z 7 stanów. Dokładny opis poszczególnych stanów wraz ze szczegółowymi informacjami można znaleźć pod tym linkiem.
Router ID
- Ustawiany ręcznie (polecenie router-id X.X.X.X)
- Najwyższy adres IP interfejsu logicznego
- Najwyższy adres IP aktywnego interfejsu fizycznego
Router(config)#router ospf 1
Router(config)#router-id 1.1.1.1
Designated Router i Backup Designated Router
W sieciach wielodostępowych (typu broadcast i non broadcast multiaccess) gdzie mamy dużo urządzeń na których uruchomiony jest protokół routingu OSPF pojawia się problem z dużą ilością relacji sąsiedztwa a co za tym idzie z duża ilością ruchu generowanego przez OSPF. Rozwiązaniem tego stanu jest router desygnowany oraz zapasowy. Dzięki routerowi desygnowanego routery w sieci nie wymieniają się informacjami o sieciach z wszystkimi pozostałymi routerami, a wymieniają się tylko z routerami DR i BDR.
Wybór DR i BDR
- Router z najwyższym priorytetem jest DR
- Router z drugim najwyższym priorytetem jest BDR
- Domyślny priorytet to 1
- Jeśli priorytet jest taki sam przy wyborze DR i BDR, DR zostaje router z wyższym router-id, a BDR router z drugim najwyższym router-id
- Router z priorytetem 0 nie może zostać DR ani BDR
- Router który nie jest DR ani BDR pełni rolę DROTHER
- Wybór DR i BDR nie działa w sposób preemptive
Konfiguracja OSPF w pojedynczym obszarze
Konfiguracja OSPF na routerach CISCO jest bardzo prosta. Wystaczy wydać komendę router ospf <numer_procesu> a następnie wpisać listę sieci, które chcemy rozgłaszać i na których chcemy uruchomić proces. Zbudujmy sobię prostą topologię złożoną z dwóch routerów i skonfigurujmy na nich OSPF.
hostname R1
!
interface FastEthernet 0/0
ip address 192.168.0.1 255.255.255.0
!
interface Loopback0
ip address 1.1.1.1 255.255.255.255
!
router ospf 1
network 192.168.0.0 0.0.0.255 area 0
network 1.1.1.1 0.0.0.0 area 0
hostname R2
!
interface FastEthernet 0/0
ip address 192.168.0.2 255.255.255.0
!
interface Loopback0
ip address 2.2.2.2 255.255.255.255
!
router ospf 1
network 192.168.0.0 0.0.0.255 area 0
network 2.2.2.2 0.0.0.0 area 0
R2#debug ip ospf adj
OSPF adjacency debugging is on
R2#clear ip ospf process
Reset ALL OSPF processes? [no]: yes
R2#
*Feb 21 10:30:50.395: OSPF-1 ADJ Lo0: Interface going Down
*Feb 21 10:30:50.395: OSPF-1 ADJ Lo0: 2.2.2.2 address 2.2.2.2 is dead, state DOWN
*Feb 21 10:30:50.395: OSPF-1 ADJ Fa0/0: Interface going Down
*Feb 21 10:30:50.395: OSPF-1 ADJ Fa0/0: 1.1.1.1 address 192.168.0.1 is dead, state DOWN
*Feb 21 10:30:50.395: %OSPF-5-ADJCHG: Process 1, Nbr 1.1.1.1 on FastEthernet0/0 from FULL to DOWN, Neighbor Down: Interface down or detached
*Feb 21 10:30:50.395: OSPF-1 ADJ Fa0/0: Neighbor change event
*Feb 21 10:30:50.399: OSPF-1 ADJ Fa0/0: DR/BDR election
*Feb 21 10:30:50.399: OSPF-1 ADJ Fa0/0: Elect BDR 2.2.2.2
*Feb 21 10:30:50.399: OSPF-1 ADJ Fa0/0: Elect DR 2.2.2.2
*Feb 21 10:30:50.399: OSPF-1 ADJ Fa0/0: Elect BDR 0.0.0.0
*Feb 21 10:30:50.399: OSPF-1 ADJ Fa0/0: Elect DR 2.2.2.2
*Feb 21 10:30:50.399: OSPF-1 ADJ Fa0/0: DR: 2.2.2.2 (Id) BDR: none
*Feb 21 10:30:50.399: OSPF-1 ADJ Fa0/0: Remember old DR 1.1.1.1 (id)
*Feb 21 10:30:50.399: OSPF-1 ADJ Fa0/0:
R2#2.2.2.2 address 192.168.0.2 is dead, state DOWN
*Feb 21 10:30:50.399: OSPF-1 ADJ Fa0/0: Neighbor change event
*Feb 21 10:30:50.399: OSPF-1 ADJ Fa0/0: DR/BDR election
*Feb 21 10:30:50.399: OSPF-1 ADJ Fa0/0: Elect BDR 0.0.0.0
*Feb 21 10:30:50.399: OSPF-1 ADJ Fa0/0: Elect DR 0.0.0.0
*Feb 21 10:30:50.399: OSPF-1 ADJ Fa0/0: Elect BDR 0.0.0.0
*Feb 21 10:30:50.399: OSPF-1 ADJ Fa0/0: Elect DR 0.0.0.0
*Feb 21 10:30:50.399: OSPF-1 ADJ Fa0/0: DR: none BDR: none
*Feb 21 10:30:50.399: OSPF-1 ADJ Fa0/0: Flush network LSA immediately
*Feb 21 10:30:50.399: OSPF-1 ADJ Fa0/0: Remember old DR 2.2.2.2 (id)
*Feb 21 10:30:50.403: OSPF-1 ADJ Lo0: Interface going Up
*Feb 21 10:30:50.403: OSPF-1 ADJ Fa0/0: Interface going Up
*Feb 21 10:30:50.427: OSPF-1 ADJ Fa0/0: 2 Way Communication to 1.1.1.1, state 2WAY
*Feb 21 10:30:50.427: OSPF-1 ADJ Fa0/0: Backup seen event before WAIT timer
*Feb 21 10:30:50.431: OSPF-1 ADJ Fa0/0: DR/BDR election
*Feb 21 10:30:50.431: OSPF-
R2#1 ADJ Fa0/0: Elect BDR 2.2.2.2
*Feb 21 10:30:50.431: OSPF-1 ADJ Fa0/0: Elect DR 1.1.1.1
*Feb 21 10:30:50.435: OSPF-1 ADJ Fa0/0: Elect BDR 2.2.2.2
*Feb 21 10:30:50.435: OSPF-1 ADJ Fa0/0: Elect DR 1.1.1.1
*Feb 21 10:30:50.439: OSPF-1 ADJ Fa0/0: DR: 1.1.1.1 (Id) BDR: 2.2.2.2 (Id)
*Feb 21 10:30:50.439: OSPF-1 ADJ Fa0/0: Nbr 1.1.1.1: Prepare dbase exchange
*Feb 21 10:30:50.443: OSPF-1 ADJ Fa0/0: Send DBD to 1.1.1.1 seq 0x962 opt 0x52 flag 0x7 len 32
*Feb 21 10:30:50.483: OSPF-1 ADJ Fa0/0: Rcv DBD from 1.1.1.1 seq 0x55A opt 0x52 flag 0x7 len 32 mtu 1500 state EXSTART
*Feb 21 10:30:50.483: OSPF-1 ADJ Fa0/0: First DBD and we are not SLAVE
*Feb 21 10:30:50.483: OSPF-1 ADJ Fa0/0: Rcv DBD from 1.1.1.1 seq 0x962 opt 0x52 flag 0x2 len 72 mtu 1500 state EXSTART
*Feb 21 10:30:50.483: OSPF-1 ADJ Fa0/0: NBR Negotiation Done. We are the MASTER
*Feb 21 10:30:50.483: OSPF-1 ADJ Fa0/0: Nbr 1.1.1.1: Summary list built, size 0
*Feb 21 10:30:50.483: OSPF-1 ADJ Fa0/0:
R2# Send DBD to 1.1.1.1 seq 0x963 opt 0x52 flag 0x1 len 32
*Feb 21 10:30:50.491: OSPF-1 ADJ Fa0/0: Rcv DBD from 1.1.1.1 seq 0x963 opt 0x52 flag 0x0 len 32 mtu 1500 state EXCHANGE
*Feb 21 10:30:50.491: OSPF-1 ADJ Fa0/0: Exchange Done with 1.1.1.1
*Feb 21 10:30:50.491: OSPF-1 ADJ Fa0/0: Send LS REQ to 1.1.1.1 length 48 LSA count 2
*Feb 21 10:30:50.503: OSPF-1 ADJ Fa0/0: Rcv LS UPD from 1.1.1.1 length 108 LSA count 2
*Feb 21 10:30:50.503: OSPF-1 ADJ Fa0/0: Synchronized with 1.1.1.1, state FULL
*Feb 21 10:30:50.503: %OSPF-5-ADJCHG: Process 1, Nbr 1.1.1.1 on FastEthernet0/0 from LOADING to FULL, Loading Done
*Feb 21 10:30:50.507: OSPF-1 ADJ Fa0/0: Nbr 1.1.1.1: Clean-up dbase exchange
*Feb 21 10:30:52.283: OSPF-1 ADJ Fa0/0: Neighbor change event
*Feb 21 10:30:52.283: OSPF-1 ADJ Fa0/0: DR/BDR election
*Feb 21 10:30:52.283: OSPF-1 ADJ Fa0/0: Elect BDR 2.2.2.2
*Feb 21 10:30:52.283: OSPF-1 ADJ Fa0/0: Elect DR 1.1.1.1
*Feb 21 10:30:52.283: OSPF-1 ADJ Fa0/0: DR: 1.
R2#1.1.1 (Id) BDR: 2.2.2.2 (Id)
R1#show ip ospf interface fastEthernet 0/0
FastEthernet0/0 is up, line protocol is up
Internet Address 192.168.0.1/24, Area 0, Attached via Network Statement
Process ID 1, Router ID 1.1.1.1, Network Type BROADCAST, Cost: 1
Topology-MTID Cost Disabled Shutdown Topology Name
0 1 no no Base
Transmit Delay is 1 sec, State DR, Priority 1
Designated Router (ID) 1.1.1.1, Interface address 192.168.0.1
Backup Designated router (ID) 2.2.2.2, Interface address 192.168.0.2
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
oob-resync timeout 40
Hello due in 00:00:03
Supports Link-local Signaling (LLS)
Cisco NSF helper support enabled
IETF NSF helper support enabled
Index 1/1, flood queue length 0
Next 0x0(0)/0x0(0)
Last flood scan length is 0, maximum is 1
Last flood scan time is 0 msec, maximum is 0 msec
Neighbor Count is 1, Adjacent neighbor count is 1
Adjacent with neighbor 2.2.2.2 (Backup Designated Router)
Suppress hello for 0 neighbor(s)
R2#show ip ospf interface fastEthernet 0/0
FastEthernet0/0 is up, line protocol is up
Internet Address 192.168.0.2/24, Area 0, Attached via Network Statement
Process ID 1, Router ID 2.2.2.2, Network Type BROADCAST, Cost: 1
Topology-MTID Cost Disabled Shutdown Topology Name
0 1 no no Base
Transmit Delay is 1 sec, State BDR, Priority 1
Designated Router (ID) 1.1.1.1, Interface address 192.168.0.1
Backup Designated router (ID) 2.2.2.2, Interface address 192.168.0.2
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
oob-resync timeout 40
Hello due in 00:00:05
Supports Link-local Signaling (LLS)
Cisco NSF helper support enabled
IETF NSF helper support enabled
Index 1/1, flood queue length 0
Next 0x0(0)/0x0(0)
Last flood scan length is 1, maximum is 1
Last flood scan time is 0 msec, maximum is 0 msec
Neighbor Count is 1, Adjacent neighbor count is 1
Adjacent with neighbor 1.1.1.1 (Designated Router)
Suppress hello for 0 neighbor(s)
Przydatne komendy
show ip ospf neighbor – wyświetlenie listy sąsiadów OSPF
show ip protocols – wyświetlenie podstawowych informacji o skonfigurowanym protokole routingu
show ip route ospf – wyświetlenie tablicy routingu OSPF
show ip ospf interface brief – wyświetlenie interfejsów z kosztami OSPF
show ip ospf database – wyświetlenie pełnej bazy danych OSPF