|
OSPF
OSPF e’ un
protocollo di routing in cui ogni router della rete mantiene il
grafo topologico dell’intera rete. Pertanto ogni router
della rete ha visibilita’ su tutta la struttura di rete. In
RIP, EIGRP, IGRP un router non ha idea dell’intera
struttura topologica della rete in cui si trova ma soltanto di
quella relativa ad esso e ai suoi suoi vicini. Per questa ragione OSPF
si chiama protocollo “link-state”. La
presenza del grafo dell’intera rete consente ad
ogni router, applicando l’algoritmo di Dijkstra
(shortest-path), di estrarre un albero dal grafo cosi’ da
determinare il percorso ottimale per raggiungere ogni
destinazione evitando loop e senza fare uso di hold-down timer
che sono causa della lenta la convergenza in RIP e IGRP. Ogni router
estrae un albero di cui lui stesso e’ la radice. Se due
percorsi hanno lo stesso costo OSPF distribuisce il carico tra i
due. Nella configurazione di OSPF non si fa uso di AS number ma
di process-id che e' cosa differente in quanto si puo' avere
differente process-id in router differenti. OSPF ha
pieno supporto della netmask, invia solo aggiornamenti e non
l’intera tabella di routing ai suoi vicini, e’ piu’
CPU intensive di RIP, IGRP ed EIGRP, ed e’ scalabile.
Poiche’ ogni router ha un grafo dell’intera
rete col crescere della stessa il ricalcolo con Dijstra puo'
impiegare eccessive risorse di CPU e memoria. Per questa ragione sono state
introdotte le AREE. Ogni router ha in realta' consapevolezza della struttura
dell’area a cui appartiene. Alcuni router, gli ABR, hanno
interfacce su aree diverse. L’area 0 e’ speciale ed
e’ sempre presente in una rete OSPF. Gli ASBR sono invece
quei router che ridistribuiscono in OSPF informazioni provenienti
da statiche o da altri algoritmi di routing.
Tutte le
informazioni di routing vengono scambiate tramite messaggi
chiamati LSA. RFC1247definisce gli
LSA ‘link-state advertisements’ e vengono inviati
all'indirizzo multicast 224.0.0.5. Vi sono 5 tipi di LSA:
type 1
Propaga informazioni
relative a tutte le reti collegate ad un router e
appartenenti alla sua stessa area. Gli LSA type 1 vengono
inviati ai router di un'area e non ne superano i confini;
type 2
Quando piu' router hanno un'interfaccia sullo stesso
segmento di LAN ne viene eletto uno, chiamato DR (Designated
Router), che ha il compito di inviare informazioni
per conto di tutti i router connessi al segmento. Gli LSA
type 2 vengono inviati ai router di un'area e non ne superano i
confini;
type 3,4
Questi messaggi passano da un'area ad un'altra adiacente.
Sono originati dagli ABR (Area Border Router). ABR invia ad
un’area informazioni relative ad un’altra area, sempre
di cui fa parte. I type 3 contengono
informazioni relative a route verso reti presenti nelle aree. I type 4
contengono informazioni di routing in direzione degli ASBR,
ovvero router che inseriscono in OSPF route di altri protocolli
come BGP;
type 5
Originati dagli ASBR e contenti
informazioni per route relative a destinazioni su AS esterni.
Sono di due tipi: E1 e E2. Di default E2. Le route esterne
(external routes) vengono propagate dagli ASBR tramite gli LSA
Type 5. Le route esterne si classificano a loro volta in:
·
external type 1 (E1)
·
external type 2 (E2)
La
tipologia E1 propaga la route nella nuvola OSPF aggiornandone il
costo con la propagazione. La tipologia E2 propaga la route nella
nuvola OSPF lasciandone inalterato il costo.
Per default gli LSA sono propagati attraverso
tutte le interfacce su una stessa area con esclusione dell’interfacce
da cui sono arrivati.
Due neighbor, anche adiacenti, si
scambiano pacchetti Hello ogni 10 secondi (Hello interval).
Se dopo quattro volte questo tempo (Dead interval) non
arrivano Hello la vicinanza col neighbor passa dallo stato “FULL”
allo stato “DOWN”.
Hello e’ 30 secondi per NBMA (Non Broadcast Multi Access come ATM e
Frame Relay).
Col comando "show ip ospf
neighbor" e' possibile individuare i router OSPF vicini con
i quali si ha una sessione attiva:
RTA#sh ip ospf nei
Neighbor ID
Pri State
Dead Time Address
Interface
172.121.139.253
1 FULL/ -
00:00:36 172.121.139.90 Serial2/0
Gli LSA hanno un aging time di 1h oltre
la quale sono cancellati. In ogni caso i router inviano ogni 30 minuti dei
refresh indipendentemente da eventuali cambiamenti di topologia.
C’e’ da
considerare che nelle versioni di OSPF meno recenti si inviano refresh
indiscriminatamente per tutti
gli LSA generati. In seguito si e' adottato un TIMER per ogni LSA. Cio’
consente di inviare solo gli LSA effettivamente vecchi. Comunque
questi ultimi vengono raggruppati per intervalli di 4 minuti di
default (pacing timer) per generare 1 solo pacchetto di
aggiornamento per piu’ LSA e meno spreco di banda e CPU.
OSPF
funziona in modalita' diverse a seconda della rete su cui opera. Si
distingue:
point-to-point
E’ il caso
dei collegamenti punto-punto tra router come un seriale con PPP o
HDLC o un ISDN. L’interfaccia puo’ essere unnumbered.
Se c’e’ l’ip il link e’ trattato come una
stub network;
broadcast networks
E’ il caso in
cui il router e’ collegato ad esempio ad una rete ethernet.
Se nella ethernet vi e’ un solo router con OSPF questa e’
trattata come stub network altrimenti si procede con l’elezione
di un DR e la rete e trattata come transit network;
point-to-multipoint non-broadcast
Si tratta delle reti Non Broadcast Multi Access come ATM e
Frame Relay. Col point-to-multipoint la rete e vista come un
insieme di collegamenti point-to-point. E’ il meno
efficiente per l'elevata bandwidth utilizzata per gli aggiornamenti.
Con il non-broadcast invece la rete viene vista come una rete
ethernet. Si elegge un DR. In questo caso pero’ ogni router
nella NBMA deve vedere gli altri cioe’ ci vuole una
configurazione full-mesh;
Esempi
Questo esempio mostra una tipica configurazione OSPF nel caso di
un router lato customer di una rete:
router ospf 4
log-adjacency-changes
network 192.168.65.12 0.0.0.3 area 0.0.5.0
<--- le interfacce che cadono in questa network avranno OSPF
attivo
distribute-list 82 out
distribute-list 81 in
access-list 81 permit 172.16.20.50
access-list 81 deny any
access-list 82 deny any
Per resettare il processo OSPF e
rigenerare la tabella di routing si usa "clear ip ospf
process". Ecco l'invio di un comando clear ad un router con
OSPF. La sequenza mostra tutto il processo
di avvio di una sessione OSPF e scambio di LSA:
prova-ct#
clear ip ospf process
Reset ALL OSPF processes? [no]: yes
prova-ct#
*Mar 10 16:07:06.810: OSPF:
Flushing External Links
*Mar 10 16:07:06.814: OSPF:
Inc retrans unit nbr count index 1 (0/1) to 1/1
#
#
10.121.139.253 e' il nostro unico Neighbor ID #
*Mar 10 16:07:06.814: OSPF:
Set Nbr 10.121.139.253 1 first flood info from 0 (0)
to 62D48788 (792)
*Mar 10 16:07:06.814: OSPF:
Init Nbr 10.121.139.253 1 next flood info to 62D48788
#
#
192.13.19.80 sono gli ip per la navigazione internet assegnati,
definiti
#
mediante statica e sono type 5 in quanto provengono da rete
esterna
#
# Quando si manda un LSA questo viene conservato in attesa dell'ACK
# Se questo non arriva entro il "retransmit-interval",
di default 5 sec.,
# e selezionabile tra 1 a 65535 con "ip ospf
retransmit-interval T"
# Gli LSA sono in una retransmission-list finche' non arriva ACK
*Mar
10 16:07:06.814: OSPF: Add Type 5 LSA ID 192.13.19.80 Adv rtr
10.121.139.89
Seq
80000023 to Serial2/0 10.121.139.253 retransmission list
*Mar
10 16:07:06.814: OSPF: Start Serial2/0 10.121.139.253 retrans
timer
*Mar
10 16:07:06.814: OSPF: Set idb next flood info from 0 (0) to
62D48788 (792)
*Mar
10 16:07:06.814: OSPF: Add Type 5 LSA ID 192.13.19.80 Adv rtr
10.121.139.89
Seq
80000023 to Serial2/0 flood list
*Mar
10 16:07:06.814: OSPF: Start Serial2/0 pacing timer for 33 msecs
*Mar
10 16:07:06.814: OSPF: Flushing Opaque AS Links
# Si trasmette LSA type 5 (si noti che siamo nello stesso
istante di prima)
*Mar
10 16:07:06.814: OSPF: Flooding update on Serial2/0 to 224.0.0.5
Area 0
*Mar
10 16:07:06.814: OSPF: Send Type 5, LSID 192.13.19.80, Adv rtr
10.121.139.8
9,
age 3600, seq 0x80000023 (0)
*Mar
10 16:07:06.814: OSPF: Create retrans unit 0x62D47E14/0x62D46CD4
1 (0/1) 1
*Mar
10 16:07:06.814: OSPF: Set nbr 1 (0/1) retrans to 4968 count to 1
*Mar
10 16:07:06.814: OSPF: Set idb next flood info from 62D48788
(792) to 0 (0)
*Mar
10 16:07:06.814: OSPF: Remove Type 5 LSA ID 192.13.19.80 Adv rtr
10.121.139
.89
Seq 80000023 from Serial2/0 flood list
*Mar
10 16:07:06.814: OSPF: Stop Serial2/0 flood timer
#
#
LSA type 5 per la rete 192.13.90.80 e' stato inviato
#
#
Finiti gli LSA type 5 adesso manda quello della seriale in
questo caso 10.121.139.89
#
che e' LSA type 1
#
*Mar 10 16:07:06.854: OSPF:
Flushing Link states in area 0
*Mar 10 16:07:06.854: OSPF:
Inc retrans unit nbr count index 1 (0/1) to 1/1
*Mar 10 16:07:06.854: OSPF:
Set Nbr 10.121.139.253 1 first flood info from 0 (0)
to 62D49024 (1000)
*Mar 10 16:07:06.854: OSPF:
Init Nbr 10.121.139.253 1 next flood info to 62D49024
*Mar 10 16:07:06.854: OSPF:
Add Type 1 LSA ID 10.121.139.89 Adv rtr 10.121.139.89 Seq 80000036 to Serial2/0
10.121.139.253 retransmission list
*Mar 10 16:07:06.854: OSPF:
Set idb next flood info from 0 (0) to 62D49024 (1000)
*Mar 10 16:07:06.854: OSPF:
Add Type 1 LSA ID 10.121.139.89 Adv rtr 10.121.139.89 Seq 80000036 to Serial2/0
flood list
*Mar 10 16:07:06.854: OSPF:
Start Serial2/0 pacing timer for 33 msecs
*Mar 10 16:07:06.854: OSPF:
Flooding update on Serial2/0 to 224.0.0.5 Area 0
*Mar 10 16:07:06.854: OSPF:
Send Type 1, LSID 10.121.139.89, Adv rtr 10.121.139.89, age 3600, seq
0x80000036 (0)
*Mar 10 16:07:06.854: OSPF:
Create retrans unit 0x62D47E44/0x62D46B94 1 (0/1) 1
*Mar 10 16:07:06.854: OSPF:
Set nbr 1 (0/1) retrans to 4736 count to 1
*Mar 10 16:07:06.854: OSPF:
Set idb next flood info from 62D49024 (1000) to 0 (0)
*Mar 10 16:07:06.854: OSPF:
Remove Type 1 LSA ID
10.121.139.89 Adv rtr
10.121.139.89 Seq 80000036 from Serial2/0 flood list
#
*Mar 10 16:07:06.854: OSPF:
Stop Serial2/0 flood timer
*Mar 10 16:07:06.894: OSPF:
Interface Serial2/0 going Down
*Mar 10 16:07:06.894:
%OSPF-5-ADJCHG: Process 10, Nbr 10.121.139.253 on Serial2/0 from
FULL to DOWN, Neighbor Down: Interface down or detached
*Mar 10 16:07:06.894: OSPF:
Dec retrans unit nbr count index 1 (0/1) to 0/0
*Mar 10 16:07:06.894: OSPF:
Free nbr retrans unit 0x62D47E44/0x62D46B94 0 total
0. Also Free nbr retrans
block
*Mar 10 16:07:06.894: OSPF:
Set Nbr 10.121.139.253 1 first flood info from 62D49024 (1000) to 0 (0)
*Mar 10 16:07:06.894: OSPF:
Adjust Nbr 10.121.139.253 1 next flood info to 0
*Mar 10 16:07:06.894: OSPF:
Remove Type 1 LSA ID 10.121.139.89 Adv rtr 10.121.139.89 Seq 80000036 from
10.121.139.253 retransmission list
*Mar 10 16:07:06.894: OSPF:
Dec retrans unit nbr count index 1 (0/1) to 0/0
*Mar 10 16:07:06.894: OSPF:
Free nbr retrans unit 0x62D47E14/0x62D46CD4 0 total0. Also Free nbr retrans
block
*Mar 10 16:07:06.894: OSPF:
Set Nbr 10.121.139.253 1 first flood info from 62D48788 (792) to 0 (0)
*Mar 10 16:07:06.894: OSPF:
Adjust Nbr 10.121.139.253 1 next flood info to 0
*Mar 10 16:07:06.894: OSPF:
Remove Type 5 LSA ID 192.13.19.80 Adv rtr 10.121.139.89 Seq 80000023 from
10.121.139.253 retransmission list
*Mar 10 16:07:06.894: OSPF:
Stop nbr 10.121.139.253 retransmission timer
*Mar 10 16:07:06.894: OSPF:
Interface Loopback1 going Down
*Mar
10 16:07:06.962: OSPF: Interface Serial2/0 going Up
*Mar
10 16:07:06.966: OSPF: Interface Loopback1 going Up
*Mar 10 16:07:07.394: OSPF:
Build router LSA for area 0, router ID 10.121.139.89, seq 0x80000001
#
#
Si passa allo stato 2WAY dopo che arriva hello dal vicino
#
#
Si passa allo stato EXSTART quando si stabilisce chi e' master e
chi slave
#
Il router con il piu' alto IP address diviene il master
#
E si manda un numero di sequenza che consente di determinare i
vecchi LSA
#
# DBD
sta per DataBaseDescriptor
#
EXCHANGE: In questo stato il router scambia pacchetti DBD, che
# descrivono l'intero link-state database
*Mar 10 16:07:08.274: OSPF:
Rcv hello from 10.121.139.253 area 0 from Serial2/0
10.121.139.90
*Mar 10 16:07:08.274: OSPF:
2 Way Communication to 10.121.139.253 on Serial2/0,state 2WAY
*Mar 10 16:07:08.274: OSPF:
Send DBD to 10.121.139.253 on Serial2/0 seq 0x2573 opt 0x42 flag 0x7 len 32
*Mar 10 16:07:08.278: OSPF:
End of hello processing
*Mar 10 16:07:08.294: OSPF:
Rcv DBD from 10.121.139.253 on Serial2/0 seq 0x14AF opt 0x42 flag 0x7 len 32
mtu 1500 state EXSTART
*Mar 10 16:07:08.294: OSPF:
NBR Negotiation Done. We are the SLAVE
*Mar 10 16:07:08.294: OSPF:
Send DBD to 10.121.139.253 on Serial2/0 seq 0x14AF opt 0x42 flag 0x2 len 72
*Mar 10 16:07:08.334: OSPF:
Rcv DBD from 10.121.139.253 on Serial2/0 seq 0x14B0 opt 0x42 flag 0x3 len 1472
mtu 1500 state EXCHANGE
*Mar 10 16:07:08.334: OSPF:
Send DBD to 10.121.139.253 on Serial2/0 seq 0x14B0 opt 0x42 flag 0x0 len 32
*Mar 10 16:07:08.338: OSPF:
Database request to 10.121.139.253
*Mar 10 16:07:08.338: OSPF:
sent LS REQ packet to 10.121.139.90,
length 864
# #NOTARE
L'INVIO DELLA MTU: #Note:Cisco IOS ®
Software Release 12.0(3) introduced interface MTU mismatch
detection. This detection involves OSPF advertising the interface
#MTU in the #DBD packets, which is in accordance with the
OSPF RFC 2178 , appendix G.9. When a router receives a DBD
packet advertising #a MTU larger than the router can receive,
the router ignores the DBD packet and the neighbor state remains
in exstart. This prevents an adjacency #from forming. To fix
this problem, make sure the MTU are the same on both ends of a
link. # #
*Mar 10 16:07:08.370: OSPF:
Rcv DBD from 10.121.139.253 on Serial2/0 seq 0x14B1 opt 0x42 flag 0x3 len 1472
mtu 1500 state EXCHANGE
*Mar 10 16:07:08.374: OSPF:
Send DBD to 10.121.139.253 on Serial2/0 seq 0x14B1 opt 0x42 flag 0x0 len 32
*Mar 10 16:07:08.390: OSPF:
received update from 10.121.139.253, Serial2/0
*Mar 10 16:07:08.390: OSPF:
Rcv Update Type 1, LSID 192.13.21.241, Adv rtr 192.13.21.241, age 1656, seq
0x80000879
*Mar 10 16:07:08.390: OSPF:
Rcv Update Type 1, LSID 192.13.21.209, Adv rtr 192.13.21.209, age 958, seq
0x80001220
*Mar 10 16:07:08.390: OSPF:
Rcv Update Type 1, LSID 192.13.21.197, Adv rtr 192.13.21.197, age 497, seq
0x80000FE3
*Mar 10 16:07:08.394: OSPF:
Rcv Update Type 1, LSID 192.13.21.194, Adv rtr 192.13.21.194, age 1133, seq
0x8000017E
*Mar 10 16:07:08.394: OSPF:
Rcv Update Type 1, LSID 192.13.21.189, Adv rtr 192.13.21.189, age 304, seq
0x80000E57
...
*Mar 10 16:07:08.546: OSPF:
Received same lsa
*Mar 10 16:07:08.546: OSPF:
Sending direct ACK on Serial2/0 to 10.121.139.253
*Mar 10 16:07:08.546: OSPF:
Ack Type 1, LSID 192.13.21.209, Adv rtr 192.13.21.209, age 959, seq 0x80001220
...
*Mar 10 16:07:08.558: OSPF:
Rcv Update Type 1, LSID 192.13.2.166, Adv rtr 192.13.2.166, age 1801, seq
0x800034BC
*Mar 10 16:07:08.558: OSPF:
Received same lsa
*Mar 10 16:07:08.558: OSPF:
Rcv Update Type 1, LSID 192.13.2.100, Adv rtr 192.13.2.100, age 237, seq
0x800060DA
*Mar 10 16:07:08.558: OSPF:
Received same lsa
*Mar 10 16:07:08.558: OSPF:
Rcv Update Type 1, LSID 192.13.2.15, Adv rtr 192.13.2.15, age 350, seq
0x800003DA
#
#
router che formano un loop si inviano LSA tra loro finche' non
c'e' un
#
"Received same lsa"
#
*Mar 10 16:07:08.562: OSPF:
Received same lsa
*Mar 10 16:07:08.562: OSPF:
Rcv Update Type 1, LSID 192.13.2.8, Adv rtr 192.13.2.8, age 1076, seq
0x80001805
...
*Mar 10 16:08:01.894: OSPF:
Rcv Update Type 3, LSID 10.121.131.4, Adv rtr 10.121.131.2, age 7, seq
0x80000679
*Mar 10 16:08:01.894:
Mask /30
*Mar 10 16:08:01.894: OSPF:
Rcv Update Type 3, LSID 10.121.131.8, Adv rtr 10.121.131.2, age 7, seq
0x80000EDC
*Mar 10 16:08:01.894:
Mask /30
*Mar 10 16:08:01.894: OSPF:
Rcv Update Type 3, LSID 10.121.131.12, Adv rtr 10.221.131.2, age 7, seq
0x800002F8
...
*Mar 10 16:08:04.410: OSPF:
Ack Type 3, LSID 192.13.21.237, Adv rtr 10.121.131.2, age 7, seq 0x80000B01
*Mar 10 16:08:04.410: OSPF:
Ack Type 4, LSID 192.13.21.237, Adv rtr 10.121.131.2, age 7, seq 0x80000B83
*Mar 10 16:08:04.410: OSPF:
Ack Type 5, LSID 10.121.156.39, Adv rtr 10.121.136.252, age 5, seq 0x80000080
*Mar 10 16:08:07.238: OSPF:
received update from 10.121.139.253, Serial2/0
*Mar 10 16:08:07.238: OSPF:
Rcv Update Type 1, LSID 192.13.29.94, Adv rtr 192.13.29.94, age 6, seq
0x80000623
*Mar 10 16:08:08.274: OSPF:
Rcv hello from 10.121.139.253 area 0 from Serial2/0 10.121.139.90
*Mar 10 16:08:08.274: OSPF:
End of hello processing
*Mar 10 16:08:09.738: OSPF:
Sending delayed ACK on Serial2/0
*Mar 10 16:08:09.738: OSPF:
Ack Type 1, LSID 192.13.29.94, Adv rtr 192.13.29.94, age 6, seq 0x80000623
prova-ct#undebug all
Articolo
versione beta 0.9 - ultima revisione 16/3/03
Altre
letture
Consiglio di consultare l’enorme documentazione disponibile
on-line nel sito della cisco http://www.cisco.com/
. E’ possibile trovare sempre tutto cio’ che si
cerca.
Copyright
2002-2004 Gianrico Fichera – ITESYS srl –
Il
materiale di questa pagina non e’ sponsorizzato o
sottoscritto da Cisco Systems, Inc. Ciscoâ
e’ un trademark di Cisco Systems, Inc. negli Stati Uniti e
in altri stati. L’autore di questa pagina non si assume
nessuna responsabilita’ e non da nessuna garanzia
riguardante l’accuratezza e la completezza delle
informazioni presenti nonche’ da conseguenze sull’uso
delle informazioni presenti in questa pagina. Il
sito web ufficiale della Cisco e’ http://www.cisco.com.
Nel caso si volesse utilizzare il contenuto di questa pagina
nella forma in cui e’ presentato rivolgersi all’autore
scrivendo a gianrico.fichera itesys.it.
|