Sunday, February 06, 2011

OSPF

Open Shortest Path First

  • protocol de rutare link state
  • direct competitor pentru EIGRP (proprietar CISCO)
  • Protocol de rutare classless
  • Scalabil prin folosirea de zone

Metrica

  • valoare arbitrara denumita cost
  • CISCO IOS foloseste bandwidth administrativ in calculul metricii

Avantaje

  • Convergenta mai rapida decat RIP (exceptie o face EIGRP)
  • Toate routerele au harta retelei (similar cu a avea o harta a orasului)

Timeline

  • A inceput in 1987 de catre IETF OSPF Working Group
  • OSPFv1 publicat in 1989 RFC 1131
  • Au fost scrise doua implementari (una pentru routere alta pentru statiile de lucru UNIX). Cel din urma a devenit popular sub numele de GATED
  • OSPF v1 a fost un protocol experimental si nu a fost aplicat la scara larga.
  • In 1991 OSPFv2 a fost introdus in RFC 1247 de catre John Moy
  • Drastic imbunatatit fata de v1
  • ISO lucra la propriul protocol in aceasi perioada IS-IS
    (Intermediate System-to-Intermediate System)
  • IETF recomanda OSPF ca IGP-ul preferat
  • In 1998 OSPFv2 a fost actualizat la RFC 2328 si este standardul folosit la ora actuala.
  • In 1999 OSPFv3 pentru IPv6 a fost publicat in RFC 2740 scris de John Moy, Rob Coltun si Dennis Ferguson.

Structura mesajului

Layer 2 Ethernet Field
MAC Destination Address = Multicast: 01-00-5E-00-00-05 or 01-00-5E-00-00-06
MAC Source Address = Address Of Sending Interface

IP Packet
IP Source Address = Address of sending interface
IP Destination Address = Multicast 224.0.0.5 sau 224.0.0.6
Protocol field = 89 pentru OSPF

OSPF Packet Header
Type Code For OSPF Packet Type
Router ID and Area ID

OSPF Packet Type
0x01 Hello
0x02 Database Description (DD)
0x03 Link State Request
0x04 Link State Update
0x05 Link State Acknowledgement

Tipuri de pachete OSPF (Link State Packets)

Hello (0x01)
Folosit pentru a stabili si mentine adiacentele cu alte routere OSPF

DBD - Database Description (0x02)
Contine o lista abreviata a interfetei despre informatii link state si este folosita de interfata care primeste aceste informatii pentru a compara cu propria baza de date a interfetei locale.
Routerele fac schimb de DBD in faza creeari adiacentei.
Ideea este ca verifica bazele de date a routere-lor sa fie sincronizata

LSR – Link State Request (0x03)
Routerele destinatare pot cere informatii suplimentare in legatura cu orice inregistrare din DBD trimitand un pachet LSR sau pot cere bucati din baza de date a vecinilor pentru inregistrari mai acutale.
Ideea este ca pachetul asta cere informati specifice iar LSU trimite acele informatii specifice.

LSU  Link State Update (0x04)
O colectie de LSA-uri care sunt la un hop distanta de la origine sunt folosite ca Reply dar si pentru a anunta noi informatii. LSU-urile contin 11 tipuri de LSA-uri

LSA Type

LSAck – Link State Acknowledgement (0x05)
Cand un pachet LSU este primit, router-ul destinatar trimite un LSAck pentru a confirma primirea LSU-ului

Pachetul Hello (mai detaliat)

  • descopera vecinii OSPF si stabileste adiacentele intre ei
  • trimite parametrii asupra carora doua routere trebuie sa fie deacord ca sa fie vecini
  • se fac alegeri pentru asignarea DR-ului (Designated Router si a BDR-ului (Backup Designated Router) in retele multi-acces cum sunt cele Ethernet si Frame Relay

Campuri Importante:

  • Type:  OSPF Pachet Type: HELLO (1), DD (2), LS Request (3), LS Update (4), LS ACK (5)
  • Router ID: ID of the originating router
  • Area ID: area from which the packet originated
  • Network Mask: Subnet mask associated with the sending interface
  • Hello Interval: number of seconds between the sending router's hellos
  • Router Priority: Used in DR/BDR election (discussed later)
  • Designated Router (DR): Router ID of the DR, if any
  • Backup Designated Router (BDR): Router ID of the BDR, if any
  • List of Neighbors: lists the OSPF Router ID of the neighboring router(s)

OSPF Message Format

 

Pornirea procesului de rutare OSPF:

Sintaxa:

(c)#router ospf <process-id>

  • Process-id are valori intre 1-65534 (la fel ca si EIGRP)
  • Valorile 0 si 65535 sunt rezervate
  • Se alege de catre administrator
  • Nu este necesar sa fie aceleasi ID pe alt router conectat pentru a stabili adiacenta.
    (in EIGRP AS-ul trebuie sa fie similar ca doi vecini sa obtina adiacenta)

(c)#router ospf 1
(c-router)#

Comanda network

  • Orice interfata de pe un router care se potriveste cu adresa de retea din comanda network va fi activata sa trimita si sa primeasca pachete OSPF
  • Reteaua (sau subreteaua) va fi inclusa in update-urile de rutare OSPF

Sintaxa:

(c-router)network adresa de retea wildcard-mask area area-id

Exemplu:(c-router)#network 192.168.1.4 0.0.0.3 area 0

In EIGRP wildcard mask (masca de retea inversa) era optionala dar aici este necesara. Comanda network impreuna cu wildcard mask vor specifica interfetele sau o serie de interfete care vor fi active pentru OSPF

In IOS sistemul poate determina singur wildcard mask daca se introduce masca de retea simpla.

area area-id se referea la Zona OSPF

An OSPF area is a group of routers that share link-state information.

Router ID

Este o adresa IP care ajuta la identificarea unica a router-ului intr-un domeniu de rutare ce foloseste OSPF

CISCO deriva router-id-ul bazat pe trei criterii si cu aceste precedente.

Router ID
  1. Use the IP address configured with the OSPF router-id command.
  2. If the router-id is not configured, the router chooses highest IP address of any of its loopback interfaces.
  3. If no loopback interfaces are configured, the router chooses highest active IP address of any of its physical interfaces.

If an OSPF router is not configured with an OSPF router-id command and there are no loopback interfaces configured, the OSPF router ID will be the highest active IP address on any of its interfaces. The interface does not need to be enabled for OSPF, meaning that it does not need to be included in one of the OSPF network commands. However, the interface must be active - it must be in the up state.

Deci in principiu ori se da ip-ul cu comanda router-id, ori daca nu este configurat se alege ultima (sau cea mai mare) adresa IP de pe interfata de loopback, sau de pe interfetele fizice daca nu exista una de loopback

Defapt varianta a 3-a este cam asa: Un router mai multe interfete fizice, sa zicem doua, una seriala si un FastEthernet. Seriala este pe segmentul 126.10.1.15 si FastEthernet se afla pe segmentul 200.100.50.1. Ca router-id va fi aleasa adresa IP 200.100.50.1 pentru ca 200 e mai mare decat 126, nu sunt definite interfete de loopback si nu a fost specificata vreuna folosind comanda router-id.

Interfetele pot fi sau nu pot fi folosite de OSPF, adica nu conteaza daca au fost sau nu adaugate cu comanda network in procesul de rutare OSPF.

Metoda de stabilire a router-id-ului e importanta pentru ca pe baza lui se face BR si BDR

Comenzi de troubleshoot

#show ip protocols

#show ip ospf

  • OSPF Process-id
  • Router-id
  • OSPF Area Information
  • Last time the SPF algorithm was calculated
  • SPF schedule delay (delay-ul calculelor SPF)
SPF Schedule Delay
Initial SPF schedule delay 5000 msecs
Minimum hold time between two consecutive SPFs 10000 msecs
Maximum wait time between two consecutive SPFs 10000 msecs

In orice moment cand o informatie noua in legatura cu topologia (aduagare, stergere, modificarea unui link) router-ul trebuie sa re execute algoritmul SPF, sa creeze un nou SPF Tree si sa actualizeze tabela de rutare.

Algoritmul SPF pune stress pe procesor si timpul pentru completarea calculelor depinde de marimea zonei. Marimea zonei depinde de numarul routerelor si marimea bazei de date link state.

O retea care cade si revine la loc in intervale scurte de timp mai este referita ca si un link ce face flapping.
Un link care face flapping poate face ca routerele OSPF intr-o zona sa recalculeze constant algoritmul SPF, impiedicand convergenta. Pentru a reduce problema routerul asteapta 5 secunde (5000 msec) dupa primirea unui LSU inainte sa ruleze algoritmul. Mai este cunoscut si sub numele de SPF Schedule delay.

Pentru a preveni un router sa ruleze constant algoritmul SPF, mai exista un timp denumit Hold Time de 10 secunde. Router-ul asteapta 10 secunde dupa ce a rulat algoritmul pentru a-l rula din nou.

#show ip ospf interfaces

Pot fi folosite pentru a verifica OSPF process-id, router-id retelele pe care face advertising router-ul, vecinii de la care primeste update-uri, distanta administrativa (def.110), etc.

 

Pentru a adauga un router-id (metoda 1)

Router(config)#router ospf process-id
Router(config-router)#router-id ip-address

Despre BR si BDR

Intro:
Metoda folosita pentru a reduce traficul OSPF pe retele multiacces. Se alege un DR si BDR. DR-ul este responsabil pentru actualizarea celorlalte routere care ruleaza OSPF (denumite DROthers) cand o schimbare are loc intr-o retea multiacces. BDR in schimb monitorizeaza DR-ul si preia functiile DR-ului in cazul in care DR-ul curent pica.

Cum functioneaza?

Monitorizarea procesului de alegere al DR-ului si BDR-ului
#debug ip ospf adj

#show ip ospf neighbor

show ip ospf neighbor
  1. Neighbor ID Pri State Dead Time Address Interface
  2. 192.168.31.11 1 FULL/BDR 00:00:39 192.168.1.1 FastEthernet0/0
  3. 192.168.31.22 1 FULL/DR 00:00:39 192.168.1.2 FastEthernet0/0

Permite vizualizarea a:

  • Neighbor ID -  Router ID a router-ului cu care este vecin
  • Pri(oritatea) (implicit este 1) cu valoare de la 0 la 255. Ajuta la fixarea DR-ului si BDR-ului fara a fi necesar pornirea echipamentelor unul pe rand.
  • Prioritatea se modifica per interfata de iesire cu comanda.
    (config-if)#ip ospf priority <nr>
  • Starea FULL inseamna ca router-ul si vecinul sau au baze de date link state identice
  • Dead Time – cat timp sa astepte pana sa primeasca un pachet hello pana sa zica ca e down. Valoarea e resetata atunci cand se primeste un hello
  • Adresa = adresa IP a interfetei vecinului la care acest router e conectat
  • Interface = interfata pe care acest router a format adiacente cu vecinul

Two routers may not form an OSPF adjacency if:

  • The subnet masks do not match, causing the routers to be on separate networks.
  • OSPF Hello or Dead Timers do not match.
  • OSPF Network Types do not match.
  • There is a missing or incorrect OSPF network command.

Ruta default

Propagarea rutei implicite
Routerul conectat la ISP si prescris ca propagator de ruta implicita este numit:

  • Edge
  • Entrance
  • Gateway router

In EIGRP si RIP iar in OSPF este denumit:

    • ASBR – Autonomus System Boundary Router
      • este un router ce se afla intre un domeniu de rutare (un sistem autonom) OSPF si o retea non-OSPF
      • ASBR-urile ruleaza pot rula mai multe protocoale de rutare cum ar fi RIP
      • Trebuie sa fie localizate intr-o zona non-stub

Pentru propagarea rutei se foloseste ca la RIP default-information originate pentru a face advertise la reteaua 0.0.0.0/0 catre celelalte router-e din aceasi zona.

Sintaxa:

(config-router)#default-information originate

In tabela de rutare inregistrarea va aparea asa:

O*E2 0.0.0.0/0 [110/1] via 192.168.10.10, 00:05:34, Serial0/0/1

unde E2 arata o ruta externa de tip 2 (External Type 2 route. )

Rutele externe OSPF se incadreaza in doua categorii

E1 sau E2 (External Type 1 sau External Type 2)

Diferenta consta in felul in care OSPF calculeaza costul la fiecare router OSPF acumuleaza costul pentru o ruta E1 ce este propagata in toata zona. Acest proces este identic cu calculele pentru cost in operatiunea normala a protocolului pentru rute interne.

In cazul E2 este doar costul extern redat la fiecare router, netinand cont de costul rutelor interne pentru a ajunge la acea ruta.

Deci daca o ruta externa are un cost de 1 aceasta va aparea in toata zona ca ruta default cu un cost de 1

Se pot insa schimba valorile lor implicite.

Schimbarea bandwidth-ului de referinta.

    • Implicit setat la 10^8
    • masurat in bps
    • formula: 10^8 bps / bw administrativ

Probleme:

    • avem conexiuni GigE si 10GigE
    • daca se aplica formua de mai sus orice retea care ar bw administrativ mai mare de 100.000.000 bps va avea un cost de 1 (la fel ca in EIGRP metrica se rotunjeste)

Solutia:

  • Pentru a calcula un cost corect poate fi folosit auto-cost reference-bandwidth <nr>
  • Trebuie aplicat pe toate routere-le

    (config-router)#auto-cost reference-bandwidth ?
    1-4294967 The reference bandwidth in terms of Mbits per second

  • Se masoare in Mbit/s deci pentru 10GigE numarul este 10000

Nota:

    • in tabela de rutare va aparea cu o metrica mai mare din cauza impartirii. In loc de 391 va fi 39162.

 

Schimbarea intervalelor OSPF

Dead time

    • Default 40s retele multiacces
    • Default 120s la retele NBMA
    • reset la 40s odata la 10s cand primeste hello de la vecini
    • reset la 120s odata la 30s pe segmente NBMA
    • Are o valoare de 4xHello

Hello time

    • se trimite odata la 10s pentru retele multiacces si segmente point-to-point
    • se trimite odata la 30s pe segmente NBMA (Frame Relay, X-25, ATM)
    • este un keep-alive

Problema:

    • Este nevoie de convergenta mai rapida
    • Routerele ar trebui sa detecteze caderi de retea mai repede

Solutia:

    • Router(config-if)#ip ospf dead-interval <secunde>
    • Router(config-if)#ip ospf hello-interval <secunde>

Note:

    • IOS poate sa faca automat din schimbarea hello-time si dead time dar se recomanda schimbarea lor explicita
    • Ca adiacenta sa aibe loc timerii trebuie sa corespunda intre echipamente
    • Se pot verifica pierderi de adiacente cu comanda show ip ospf neighbors
    • Nu se afecteaza adiacentele cu vecini deja conectati si care au inca metrica neschimbata
    • Se pot verifica timerii cu comanda show ip ospf interface <interfata locala>
    • In EIGRP acesti timeri nu sunt nevoiti sa se potriveasca pentru a obtine adiacenta.


No comments:

Post a Comment