Linkkien tilaan perustuva reititys OSPF- Linkkien tilaan perustuva reititys Tavoitteena on välttää V-protokollan luomat silmukat ja skaalautua laajempiin verkkoihin ja monenlaisiin topologioihin. Linkintilaprotokolla ylläpitää verkon topologiakarttaa. Jokaisessa solmussa on sama topologiakartta Kun topologia muuttuu, kartat päivitetään nopeasti. Karttoja käytetään reittilaskennassa OSPF (Open Shortest Path First) on ITF:n määrittelemä linkintilaprotokolla Internetiä varten. OSPF on suositeltu RIP:n seuraaja. OSPF-2
Kartta esitetään täydellisenä linkkien luettelona simerkkiverkko 2 3 4 5 6 Kustakin rivistä vastaa tietty solmu Linkin suunnat esitetään erillisinä Jokaisessa solmussa sama kartta Silmukoita ei voi syntyä Mistä Mihin Linkki täisyys 3 2 4 2 5 3 6 4 5 6 OSPF-3 Reititystaulu muodostetaan linkkikannan tiedoista Mistä Mihin Linkki täisyys 3 2 4 2 5 3 6 4 5 6 Linkkikanta ijkstran lyhin-polku-ensin algoritmi Mistä Mihin Linkki täisyys local 0 2 3 3 2 :n reititystaulu OSPF-4
Levitysprotokolla (flooding protocol) levittää tiedot topologiamuutoksista Päivityssanomat levitetään koko verkkoon 2 4 5 6 Mistä Mihin Linkki täisyys Mnumero inf 2 Mistä Mihin Linkki täisyys Mnumero inf 2 OSPF-5 Levitysprotokolla (flooding protocol) levittää tiedot topologiamuutoksista Levitysalgoritmi: m vastaanotettu tietue L vastaava rivi linkkikannassa Vastaanota tietue m mn muutosnumero tsi vastaavaa riviä linkkikannasta L Löytyykö? L.mn < m.mn? ei Lisää tietue Päivitä tietue Lähetä tietue kaikille muille Lähetä tietue kaikille muille ei L.mn = m.mn? ei Muodosta m L:stä Lähetä m lähettäjälle lopetus OSPF-6
Linkkikanta - vian levityksen jälkeen Muutosnumerojen laskenta alkaa käynnistyksessä :stä. Modulo aritmetiikka määrittelee mikä on vähän suurempi kuin muutosnumerolaskuri voi pyörähtää ympäri. 4294967295 + = 0 2 3 4 5 6 Mistä Mihin Linkki täisyys Mnumero inf 2 3 inf 2 2 4 2 5 3 6 4 5 6 OSPF-7 Kun verkko osittuu, puoliskojen kannat eroavat toisistaan 2 3 4 5 6 Mistä Mihin Linkki täisyys Mnumero inf 2 3 inf 2 2 4 2 5 3 6 inf 2 4 5 6 Mistä Mihin Linkki täisyys Mnumero inf 2 3 inf 2 2 4 2 5 3 6 4 5 6 inf 2 OSPF-8
Linkki 2 vikaantuu kannat eroavat lisää 2 3 4 5 6 :n, :n ja :n kannat: Mistä Mihin Linkki täisyys Mnumero inf 2 3 inf 2 2 inf 2 4 2 inf 2 5 3 6 4 5 6 inf 2 OSPF-9 Puoliskojen kannat eroavat toisistaan 2 3 4 5 6 Välittömästi tästä ei aiheudu ongelmaa, mutta jos linkki elpyy... Mistä Mihin Linkki täisyys Mnumero inf 2 3 inf 2 2 4 2 5 3 6 inf 2 4 5 6 Mistä Mihin Linkki täisyys Mnumero inf 2 3 inf 2 2 inf 2 4 2 inf 2 5 3 6 4 5 6 inf 2 OSPF-0
Linkki elpyy 2 3 4 5 6 Mistä Mihin Linkki täisyys Mnumero 3 3 3 2 4 2 5 3 6 inf 2 4 5 6 Mistä Mihin Linkki täisyys Mnumero 3 3 3 2 inf 2 4 2 inf 2 5 3 6 4 5 6 inf 2 Mistä Mihin Linkki täisyys Mnumero 3 3 3 2 inf 2 4 2 inf 2 5 3 6 inf 2 4 5 6 inf 2 OSPF- Osittuneen verkon jälleenyhdistyessä tarvitaan naapurusten yhteenkasvatusta Kannan kuvaus <link-id+mn> Kannan kuvaus <link-id+mn> m.mn>l.mn tai m.link-id ei löydy L:ssä Linkin tilakysely <kiinnostava link-id> Kyllä Muuttuneet tiedot Kannan päivitys ja levitys kaikille muille naapureille OSPF-2
Mitä jos reititin uudelleenkäynnistyy Verkossa voi olla :n ennen uudellenkäynnistystä luomia ja levittämiä LS:ta. Resetin jälkeen reitin numeroi omat LS:nsa numerolla InitialSequenceNumber Naapuri vastaa, että sillä on uudempaa tietoa. Mikäli haluaa pitää oman LS:nsa voimassa, se kasvattaa muutosnumeron naapurilta saamaansa + ja levittää uudestaan. Mikäli naapurin tieto ei ole kuranttia resetin jälkeen, poistaa sen asettamalla iän Maxge arvoon ja levittämällä tietoa uudestaan. OSPF-3 Linkkikantojen yhtenäisyys on varmistettava Levityssanomat kuitataan linkki kerrallaan Kannan kuvaussanomien perillemeno varmistetaan Kannan kukin tietue suojataan vanhenemisajastimella, jos päivitys ei saavu ajoissa, tietue poistetaan Kannan tietueet on suojattu tarkistussummalla Sanomat sisältävät autentikointitietoa Mutta: päivityksen ollessa käynnissä toiset solmut ovat paremmin ajan tasalla kuin toiset reititysvirheitä OSPF-4
ijkstran lyhin-polku-ensin algoritmi OSPF-5 ijkstran lyhin-polku-ensin algoritmiin OSPF perustuu ijkstran lyhin-polku-ensin (SPF, shortest path first) algoritmiin. lgoritmin tavoitteena on tuottaa reititystaulu. ijkstran algoritmi laskee lyhimmän polun lähdesolmun S ja kaikkien muiden solmujen välillä. ijkstran algoritmi konvergoi nopeammin kuin ellman-ford. O(M log M) < O(N M) M on linkkien lukumäärä, N on solmujen lukumäärä Solmut jaetaan evaluoituihin, joista alkavat polut tunnetaan ja muihin R. Lisäksi tarvitaan polkujen järjestetty lista O. OSPF-6
ijkstran lyhin-polku-ensin algoritmi ={S}, R={muut solmut}, P = O={S:stä alkavat yhden askeleen polut} sort O = tai O[].etäisyys= ei p=o[]; O = O \ p; V=p.mihin Lopetus: P sisältää polut R=saavuttamattomat solmut S R O P lähdesolmu evaluoidut solmut muut solmut polkujen järjestetty lista <mistä, mihin, etäisyys> polut (tulos) V? ei = V, R = R \ V P = P p Kaikille V:stä alkaville linkeille L: O = O <V, L.mihin, p.etäisyys + L.etäisyys> sort O Huom: tässä poistetaan silmukat OSPF-7 ijkstran lyhin-polku-ensin algoritmi. ={S}, R={N-S}, O={kaikki S:stä lähtevät yhden hypyn polut} 2. Jos O on tyhjä tai jos O:n ensimmäisen polun pituus on ääretön: Merkitse loput R:n solmut saavuttamattomiksi Lopeta 3. P on listan O:n lyhin polku. Poista P O:sta. V on P:n viimeinen solmu. 4. Jos V on :ssä: Mene kohtaan 2 5. Luo joukko uusia polkuja lisäämällä P:hen kaikki V:stä lähtevät linkit. Polun pituus on vanha pituus + linkin kustannus. Lisää nämä polut O:hon pituusjärjestykseen. 6. Mene kohtaan 2 OSPF-8
L ijkstran lyhin-polku-ensin algoritmi esimerkki S 2 4 3 4 5 6 Mistä Mihin Linkki täisyys 4 3 4 2 4 2 5 3 6 4 5 6 ={}, R={,,, }, P = O={<,,>,<,,>,<,,>} sort O= tai O[].etäisyys= p=<,,>; O = O \ p; V=p.mihin= V = V, R = R \ V P = P p Lopetus: P sisältää polut R=saavuttamattomat solmut Kaikille V:stä alkaville linkeille L: O = O <V, L.mihin, p.etäisyys + L.etäisyys> sort O OSPF-9 ijkstran lyhin-polku-ensin algoritmi esimerkki 4 R,,, O <,,> <,,> <,,4> S ={}, R={,,, }, P = O={<,,>,<,,>,<,,>} sort O= tai O[].etäisyys= p=<,,>; O = O \ p; V=p.mihin= V = V, R = R \ V P = P p Lopetus: P sisältää polut R=saavuttamattomat solmut Kaikille V:stä alkaville linkeille L: O = O <V, L.mihin, p.etäisyys + L.etäisyys> sort O OSPF-20
R,,, O ijkstran lyhin-polku-ensin algoritmi esimerkki 4 S ={}, R={,,, }, P = O={<,,>,<,,>,<,,>} sort O= tai O[].etäisyys= p=<,,>; O = O \ p; V=p.mihin= Lopetus: P sisältää polut R=saavuttamattomat solmut <,,> <,,4> V = V, R = R \ V P = P p Kaikille V:stä alkaville linkeille L: O = O <V, L.mihin, p.etäisyys + L.etäisyys> sort O OSPF-2, R,, O ijkstran lyhin-polku-ensin algoritmi esimerkki 4 S ={}, R={,,, }, P = O={<,,>,<,,>,<,,>} sort O= tai O[].etäisyys= p=<,,>; O = O \ p; V=p.mihin= Lopetus: P sisältää polut R=saavuttamattomat solmut <,,> <,,4> V = V, R = R \ V P = P p Kaikille V:stä alkaville linkeille L: O = O <V, L.mihin, p.etäisyys + L.etäisyys> sort O OSPF-22
, R,, O <,,> <,,2> <,,4> ijkstran lyhin-polku-ensin algoritmi esimerkki 4 S ={}, R={,,, }, P = O={<,,>,<,,>,<,,>} sort O= tai O[].etäisyys= p=<,,>; O = O \ p; V=p.mihin= V = V, R = R \ V P = P p Lopetus: P sisältää polut R=saavuttamattomat solmut Kaikille V:stä alkaville linkeille L: O = O <V, L.mihin, p.etäisyys + L.etäisyys> sort O OSPF-23, R,, O <,,> <,,2> <,,4> ijkstran lyhin-polku-ensin algoritmi esimerkki 4 S ={}, R={,,, }, P = O={<,,>,<,,>,<,,>} sort O= tai O[].etäisyys= p=<,,>; O = O \ p; V=p.mihin= V = V, R = R \ V P = P p Lopetus: P sisältää polut R=saavuttamattomat solmut Kaikille V:stä alkaville linkeille L: O = O <V, L.mihin, p.etäisyys + L.etäisyys> sort O OSPF-24
, R,, O ijkstran lyhin-polku-ensin algoritmi esimerkki 4 S ={}, R={,,, }, P = O={<,,>,<,,>,<,,>} sort O= tai O[].etäisyys= p=<,,>; O = O \ p; V=p.mihin= Lopetus: P sisältää polut R=saavuttamattomat solmut <,,2> <,,4> V = V, R = R \ V P = P p Kaikille V:stä alkaville linkeille L: O = O <V, L.mihin, p.etäisyys + L.etäisyys> sort O OSPF-25,, R, O ijkstran lyhin-polku-ensin algoritmi esimerkki 4 S ={}, R={,,, }, P = O={<,,>,<,,>,<,,>} sort O= tai O[].etäisyys= p=<,,>; O = O \ p; V=p.mihin= Lopetus: P sisältää polut R=saavuttamattomat solmut <,,2> <,,4> V = V, R = R \ V P = P p Kaikille V:stä alkaville linkeille L: O = O <V, L.mihin, p.etäisyys + L.etäisyys> sort O OSPF-26
,, R, O <,,2> <,,2> <,,4> ijkstran lyhin-polku-ensin algoritmi esimerkki 4 S ={}, R={,,, }, P = O={<,,>,<,,>,<,,>} sort O= tai O[].etäisyys= p=<,,>; O = O \ p; V=p.mihin= V = V, R = R \ V P = P p Lopetus: P sisältää polut R=saavuttamattomat solmut Kaikille V:stä alkaville linkeille L: O = O <V, L.mihin, p.etäisyys + L.etäisyys> sort O OSPF-27,, R, O ijkstran lyhin-polku-ensin algoritmi esimerkki 4 S ={}, R={,,, }, P = O={<,,>,<,,>,<,,>} sort O= tai O[].etäisyys= p=<,,2>; O = O \ p; V=p.mihin= Lopetus: P sisältää polut R=saavuttamattomat solmut <,,2> <,,4> V = V, R = R \ V P = P p Kaikille V:stä alkaville linkeille L: O = O <V, L.mihin, p.etäisyys + L.etäisyys> sort O OSPF-28
,, R, O <,,2> <,,4> ijkstran lyhin-polku-ensin algoritmi esimerkki 4 S ={}, R={,,, }, P = O={<,,>,<,,>,<,,>} sort O= tai O[].etäisyys= p=<,,2>; O = O \ p; V=p.mihin= V = V, R = R \ V P = P p Lopetus: P sisältää polut R=saavuttamattomat solmut Kaikille V:stä alkaville linkeille L: O = O <V, L.mihin, p.etäisyys + L.etäisyys> sort O OSPF-29,, R, O ijkstran lyhin-polku-ensin algoritmi esimerkki 4 S ={}, R={,,, }, P = O={<,,>,<,,>,<,,>} sort O= tai O[].etäisyys= p=<,,2>; O = O \ p; V=p.mihin= Lopetus: P sisältää polut R=saavuttamattomat solmut <,,4> V = V, R = R \ V P = P p Kaikille V:stä alkaville linkeille L: O = O <V, L.mihin, p.etäisyys + L.etäisyys> sort O OSPF-30
2,,, R O ijkstran lyhin-polku-ensin algoritmi esimerkki 4 S ={}, R={,,, }, P = O={<,,>,<,,>,<,,>} sort O= tai O[].etäisyys= p=<,,2>; O = O \ p; V=p.mihin= Lopetus: P sisältää polut R=saavuttamattomat solmut <,,4> V = V, R = R \ V P = P p Kaikille V:stä alkaville linkeille L: O = O <V, L.mihin, p.etäisyys + L.etäisyys> sort O OSPF-3 2 ijkstran lyhin-polku-ensin algoritmi esimerkki 4,,, R O <,,3> <,,4> S ={}, R={,,, }, P = O={<,,>,<,,>,<,,>} sort O= tai O[].etäisyys= p=<,,2>; O = O \ p; V=p.mihin= V = V, R = R \ V P = P p Lopetus: P sisältää polut R=saavuttamattomat solmut Kaikille V:stä alkaville linkeille L: O = O <V, L.mihin, p.etäisyys + L.etäisyys> sort O OSPF-32
2,,, R O <,,3> <,,4> ijkstran lyhin-polku-ensin algoritmi esimerkki 4 S ={}, R={,,, }, P = O={<,,>,<,,>,<,,>} sort O= tai O[].etäisyys= p=<,,3>; O = O \ p; V=p.mihin= V = V, R = R \ V P = P p Lopetus: P sisältää polut R=saavuttamattomat solmut Kaikille V:stä alkaville linkeille L: O = O <V, L.mihin, p.etäisyys + L.etäisyys> sort O OSPF-33 2 ijkstran lyhin-polku-ensin algoritmi esimerkki 4,,, R O S ={}, R={,,, }, P = O={<,,>,<,,>,<,,>} sort O= tai O[].etäisyys= p=<,,3>; O = O \ p; V=p.mihin= Lopetus: P sisältää polut R=saavuttamattomat solmut <,,4> V = V, R = R \ V P = P p Kaikille V:stä alkaville linkeille L: O = O <V, L.mihin, p.etäisyys + L.etäisyys> sort O OSPF-34
2,,,, R O <,,4> ijkstran lyhin-polku-ensin algoritmi esimerkki 4 S ={}, R={,,, }, P = O={<,,>,<,,>,<,,>} sort O= tai O[].etäisyys= p=<,,3>; O = O \ p; V=p.mihin= V = V, R = R \ V P = P p Lopetus: P sisältää polut R=saavuttamattomat solmut Kaikille V:stä alkaville linkeille L: O = O <V, L.mihin, p.etäisyys + L.etäisyys> sort O OSPF-35 3 2,,,, R O <,,4> ijkstran lyhin-polku-ensin algoritmi esimerkki 4 S ={}, R={,,, }, P = O={<,,>,<,,>,<,,>} sort O= tai O[].etäisyys= p=<,,3>; O = O \ p; V=p.mihin= V = V, R = R \ V P = P p Lopetus: P sisältää polut R=saavuttamattomat solmut Kaikille V:stä alkaville linkeille L: O = O <V, L.mihin, p.etäisyys + L.etäisyys> sort O OSPF-36
3 2,,,, R O ijkstran lyhin-polku-ensin algoritmi esimerkki 4 S ={}, R={,,, }, P = O={<,,>,<,,>,<,,>} sort O= tai O[].etäisyys= p=<,,3>; O = O \ p; V=p.mihin= Lopetus: P sisältää polut R=saavuttamattomat solmut V = V, R = R \ V P = P p Kaikille V:stä alkaville linkeille L: O = O <V, L.mihin, p.etäisyys + L.etäisyys> sort O OSPF-37 3 2,,,, R O ijkstran lyhin-polku-ensin algoritmi esimerkki 4 S ={}, R={,,, }, P = O={<,,>,<,,>,<,,>} sort O= tai O[].etäisyys= p=<,,3>; O = O \ p; V=p.mihin= Lopetus: P sisältää polut R=saavuttamattomat solmut V = V, R = R \ V P = P p Kaikille V:stä alkaville linkeille L: O = O <V, L.mihin, p.etäisyys + L.etäisyys> sort O OSPF-38
Linkintilaprotokollien etuja Linkkikantojen tila konvergoituu nopeasti, ilman silmukoita O(M log M) M = linkkien määrä Mittoina voidaan käyttää tarkkoja lukuja. V-protokollassa äärettömyyteen laskenta (inf=6) rajoittaa Yksi protokolla tukee monta etäisyysmittaa: Kapasiteetti, viive, hinta, luotettavuus. Ylläpitää useita polkuja yhteen kohteeseen. Ulkoisten polkujen erillinen esitys. OSPF-39 Useiden etäisyysmittojen käyttö () Useiden etäisyysmittojen käyttö edellyttää: Mittojen tallennusta jokaiselle linkille (L.et, L.et2,...) Linkkiprotokolla kuljettaa kaikki mitat rillisten reititystaulujen laskemista mitoille (P(et), P(et2),...) Käyttäjäsanomiin merkataan vaadittu mitta. OSPF-40
Useiden etäisyysmittojen käyttö (2) Reittisilmukka on mahdollinen, jos solmut käyttävät eri mittaa samalle käyttäjän paketille 500 kbps 300 ms 500 kbps 300 ms 64 kbps 20 ms 500 kbps 300 ms 64 kbps 20 ms Käyttäjäsanomiin täytyy merkata vaadittu mitta OSPF-4 Liikenteen jakaminen vaihtoehtoisille samanmittaisille poluille tehostaa verkon käyttöä + Solmujen kokonaisjonopituus laskee + Keskimääräinen viive laskee + Päästä päähän viiveen vaihtelut pienenee + Vikatilanteissa liikenteen heilahtelut vähenee 2 3 4 5 6 - Vaarana on pakettien järjestyksen muuttuminen, koska polkuviiveet (solmujen jonojen pituudet) vaihtelevat - Hankaluus: menossa oleva liikenne ei pysy nykypolulla (no route pindown) epästabiilisuus mahdollista (2000)? Milloin polut ovat riittävän samanmittaisia? OSPF-42
Milloin polut ovat riittävän samanmittaisia? Mitä tapahtuu jos :hen menevä liikenne jaetaan kahden vaihtoehtoisen polun välille? 2 3 4 5 6 /3 2/3 /3 2/3 X:ään menevä paketti voidaan lähettää solmun Y kautta jos Y on lähempänä kohdetta kuin paikallinen solmu Sääntö Y X, jos etäisyys(y X) < etäisyys( X) rajaa vaihtoehtoiset reitit (monotonisiin) OSPF-43 ijkstran lyhin-polku-ensin algoritmi joka löytää vaihtoehtoiset polut ={S}, R={muut solmut}, P = O={S:stä alkavat yhden askeleen polut} sort O = tai O[].etäisyys= ei p=o[]; O = O \ p; V=p.mihin Lopetus: P sisältää polut R=saavuttamattomat solmut V? ei = V, R = R \ V P = P p Kaikille V:stä alkaville linkeille L: O = O <V, L.mihin, p.etäisyys + L.etäisyys> sort O W = (p\v).mihin S.et.W < S.et.V? p on onkelvollinen vaihtoehtoinen polku V:hen OSPF-44
ijkstran lyhin-polku-ensin algoritmi joka löytää vaihtoehtoiset polut. ={S}, R={N-S}, O={kaikki S:stä lähtevät yhden hypyn polut} 2. Jos O on tyhjä tai jos O:n ensimmäisen polun pituus on ääretön: Merkitse loput R:n solmut saavuttamattomiksi. Lopeta 3. P on listan O:n lyhin polku. Poista P O:sta. V on P:n viimeinen solmu. 4. Jos V on :ssä: Mene kohtaan 6 5. Luo joukko uusia polkuja lisäämällä P:hen kaikki V:stä lähtevät linkit. Polun pituus on vanha pituus + linkin kustannus. Lisää nämä polut O:hon pituusjärjestykseen. Mene kohtaan 2 6. Jos polun P etäisyys S:stä V:hen on sama kuin aiemmin laskettu etäisyys S:stä V:hen Lisää vaihtoehtoinen polku V:hen 7. Mene kohtaan 2 OSPF-45 Linkintilaprotokolla kuvaa useita ulkoisia reittejä tarkoilla (halutuilla) mitoilla V-protokollan mahdollisuudet kuvata reittejä ovat rajalliset äärettömyyteen laskennan ja ellman-fordin monimutkaisuuden takia Inf=6 suurin etäisyys rajallinen ellman-fordin monimutkaisuus on O(N**2) Linkintilaprotokolla on vapaa yo rajoitteista. SPF reittilaskennan monimutkaisuus on O(N log N) N=ulkoisten reittien määrä sim. noin 30 000 ulkoista reittiä 9 0 8 vs. 450 000 OSPF-46
OSPF protokolla OSPF-47 OSPF sees the network as a graph Stub network Stub network OSPF router OSPF router Stub network xternal destination Transit network Summary network xternal destination OSPF router Stub network xternal destination Stub network OSPF-48
OSPF erottelee reitittimet ja isäntäkoneet OSPF reititin Käyttää aliverkkomaskia ja mainostaa vain yhtä (ali)verkkoa Isäntäkone Isäntäkone Isäntäkone tynkäverkko (tynkäaliverkko) (stub network) li tästä syntyy kaksi linkintilatietuetta: + reititintietue + tynkäverkkotietue OSPF-49 OSPF tukee yleislähetysverkkoja () Yleislähetysverkossa Kaikki voivat lähettää kaikille Yksi voi lähettää kaikille tai joukolle Jos siinä on N reititintä, niillä on N*(N-)/2 naapuruussuhdetta Jokainen reititin mainostaa N- reittiä toisiin reitittimiin + yhtä tynkäverkkoa N 2 kpl N*(N-)/2 naapuruussuhdetta sim. thernet, Token ring, FI OSPF-50
OSPF tukee yleislähetysverkkoja (2) edusreititin varaedusreititin (x) Naapuruus rajattu vain edusreitittimeen (designated router) dusreititin täytyy valita Helloprotokollan avulla Linkkikantojen synkronointi yksinkertaistuu Varaedusreitin (backup designated router) valitaan samalla kertaa Yleislähetysverkko kuvataan virtuaalireitittimen avulla Linkit virtuaalireitittimestä reitittimiin ovat verkkolinkkejä (network link) dusreititin mainostaa täisyys = 0 Linkit reitittimistä virtuaalireitittimeen Reitittimet mainostavat OSPF-5 OSPF levitysprotokolla yleislähetysverkossa Reititin X,... dusreititin Varaedusreititin Mainos 224.0.0.6 (kaikki edusreitittimet) Levitys 224.0.0.5 (kaikki OSPF reitittimet) Muut linkit ei tarvitse käsitellä kuittauksia kaikilta muilta verkon reitittimiltä Varaedusreititin on mahdollisimman hiljaa OSPF-52
OSPF levitysprotokolla ei-yleislähetysverkossa i-yleislähetysverkoissa (esim. X.25, TM, frame relay), OSPF toimii samoin kuin yleislähetysverkoissa paitsi, että yleislähetykset korvataan yksipistelähetyksillä dusreititin Reititin X,... Mainos dusreititin Varaedusreititin Levitys Muut linkit F Kiinteä yhteys edusreitittimeen Kiinteä yhteys varareitittimeen Valinnainen yhteys muiden reitittimien välillä (muu liikenne) Huom: kiinteitä yhteyksiä kannattaa minimoida, koska ne ovat kalliita OSPF-53 Jakamalla laaja verkko alueisiin OSPF helpottaa levitystä ja pienentää linkkikantoja lue 5 lue luerajareititin luerajareititin Levitysprotokollan ja alueen raja lueen OSPF reitittimillä on samansisältöinen linkkien tilatietokanta luerajareititin Runkoverkkoalue luerajareititin lue 4 lue 2 Varaedusreititin luerajareititin luerajareitittimessä on sekä alueen että rungon linkkikannat lue 3 Kukin alue koostuu joukosta aliverkkoja OSPF-54
Muiden alueiden (ali)verkot kuvataan yhteenvetotietueissa, joiden mitta lasketaan RIP:n tapaan lueen linkkikanta: a, a2, a3 Rungon ja alueen aliverkkotietueet (summary records) 2,4 täisyys x bz tai x cy (eli mittoja summataan). Ulkoiset tietueet 2,4 0, Kaikilla alueilla samat tiedot 0 b2 Runko b b6 a2 2 c 2 lue a b3 b5 c2 lue 3 a3 4 b4 3 c3 4 Hierarkia i silmukoita OSPF-55 OSPF elpyy helposti alueiden vikatilanteista 0 b Runko b2 b6 2 ja 4 mainostavat vain niitä verkkoja, jotka ne todella voivat saavuttaa: 2: a2 ja 4: a3. a2 lue 2 b3 b5 c lue 2 c2 Runko ei tunne lueen tarkkaa rakennetta, vaikkakin se tuntee :n kaikki saavutettavat aliverkot. 3 a3 4 b4 3 c3 4 OSPF-56
Virtuaalilinkki voi pelastaa rungon jakaantuessa lohkoihin vikojen takia 0 b Runko b6 a a2 lue 2 b3 c lue 2 c2 Virtuaalilinkki alueen kautta: etäisyys=c+c2+c3 3 a3 4 b4 3 c3 4 OSPF-57 Tynkäalueella (stub area) kaikki ulkoiset reitit summataan oletusreittiin Jos OSPF alueella on vain yksi reunareititin, kaikki liikenne ulkoiseen Internetiin ja ulkoisesta Internetistä kulkee tämän reunareitittimen kautta. i maksa vaivaa mainostaa kaikkia Internetin reittejä tällaisella alueella. Reunareitittimiä voi olla myös useita, mutta niistä ei voi valita sopivinta kohteen perusteella. NSS - Not So Stubby rea on alue, jolla kaikki ulkoiset reitit on summattu oletusreittiin, paitsi jotkut. OSPF-58
OSPF link state records OSPF-59 Link State dvertisement (LS) types in OSPF LS Type = Router LS describes set of active interfaces and neighbors LS Type = 2 Network LS describes a network segment ( or NM) along with the Is of currently attached routers LS Type = 3 Summary LS for IP Network LS Type = 4 Summary LS for order Router LS Type = 5 xternal LS describes external routes LS Type = 6 Group Membership LS used in MOSPF for multicast routing LS Type = 7 Not So Stubby rea LS to import limited external info LS Type = 8 (proposed) external attributes LS in lieu of Internal GP Hierarchical Routing = roadcast, esim. thernet NM = Non-roadcast Multiple ccess, esim TM OSPF-60
Yhteinen linkintilamainoksen otsikko LS ikä: Sekunteina mainoksesta Optiot: - ulkoiset linkit T - palvelun tyyppiin perustuva reititys LS ikä optiot LS tyyppi Linkin tila I Mainostava reititin LS järjestysnumero LS tarkistussumma Pituus 32 bits vain LS tarkistussumma: Suojaa otsikon ja sisällön Pituus: Otsikon + sisällön pituus Linkin tila I: Riippuu LS tyypistä OSPF-6 LS Sequence Numbers Lollipop sequence space -N N-2 0 N/2 N = 2 3 If one of the number is < 0 The higher number is newer If both numbers are 0 If (b-a) < (N-)/2 then b is newer OSPF-62
LS Sequence Numbers S Max = 0x7fffffff S 0 = 0x8000000 Initial Seq Nr To roll the space over, first delete record with S Max router may update a self originated record only once in 5 sec. In absense of errors rolling the space over takes at least 600 years. LS ge is updated during flooding at each step. Records with max ge are discarded. This breaks inf loops. OSPF-63 Router LS (type ) for each link RouterType Type TOS=x TOS=y TOS=z Router type -bit (xternal) This router is an area-border router -bit (order) This router is a border router TOS 0 metric when no TOS is used 0 Number of links Link I Link data # TOS TOS 0 metric 0 TOS x metric 0 TOS y metric... 0 TOS z metric Type. Link is a point-to-point link to another router Link I = router s OSPF I, link data = router s interface address 2. Link connects to a transit network Link I = IP address of designated router s interface, link data = router s interface address 3. Link connects to a stub network Link I = Network/subnet number, link data = network/subnet mask OSPF-64
xample of the Router LS (,5) (,3) (3,3) 0...3 (2,3) 0...2 (3,) (2,) (,) 0...5 (3,0) (2,5) (3,3) (2,3) (2,0) 0... (,3) (,) 0...4 (2,6) (,6) 0...6 Router 0... s router-ls: LS ge = 0 seconds Options LS type= Link State I = 0... dvertising Router = 0... LS Sequence Number = 0x80000006 hecksum= 0x9b47 Length = 60 bytes 0=ordinary RouterType=0 0 Nrof links = 3 Link I = 0...2 (neighb) Link ata = IF-index (unnum) =pt-t-pt Type= #TOS=0 Metric=3 Link I = 0...3 (neighb) Link ata = IF-index 2 (unnum) =pt-t-pt Type= #TOS=0 Metric=5 Link I = 0... Link ata = 255.255.255.255 3=stub network Type=3 #TOS=0 Metric=0 -bit =Router LS MI-II IF-index Output ost Length = 24 + 3 * 2 = 60 bytes Router with 00 interfaces: Length = 24 + 00 * 2 = 224 bytes OSPF-65 Network LS (type 2) Network mask ttached router ttached router... tttached router dvertised by designated routers for transit networks Link state I = IP interface I ttached router = OSPF identifier of the attached router OSPF-66
Network LS reduces Link for networks 0.4.7.2 0.4.7.'s router LS 0.4.7.4 backupr 0.4.7. 0.4.7.2's router LS 0.4.7.0/24's network-ls 0.4.7.3's router LS 0.4.7.5 0.4.7.3 R R - designated router 0.4.7.4's router LS 0.4.7.5's router LS Network-LS is generated by R Network-LS reflects sync status with R both ways This reduces nrof link records from O(n*(n-)) to 2*n. Particularly important if Network is TM or FR with a lot of routers attached! OSPF-67 Summary Link LS (type 3,4) 0 TOS=x TOS=y TOS=z For IP networks LS type = 3 Network mask of network/subnet Link state I = IP network/subnet number For border routers LS type = 4 Network mask = FFFFFFFF Link state I = IP address of border router One separate advertisement for each destination Network mask 0 TOS 0 metric 0 TOS x metric 0 TOS y metric... 0 TOS z metric OSPF-68
xternal Link LS (type 5) Network mask,tos=0 0 TOS 0 metric xternal route tag (0),TOS=x 0 TOS x metric xternal route tag (x)...,tos=z 0 TOS z metric xternal route tag (z) dvertised by border routers Information from external gateway protocols (GP-4) One destination per record Link state I = IP network/subnet of destination Network mask = network/subnet mask -bit indicates that distance is not comparable to internal metrics Larger than any internal metric Route tag is only used by border routers (not used by OSPF) OSPF-69 omputation of routes stub network external destination OSPF router OSPF router transit network stub network external destination OSPF router OSPF router summarized network Separate routes for each TOS and for TOS 0 Possibly unreachable destinations for some TOS if not all routers support TOS routed with TOS 0 (no loops because same decision in all nodes) stub network summarized network OSPF-70
Nonbroadcast multiaccess (NM) subnets support many routers communicating directly but do not have broadcast capability xamples are TM, Frame Relay, X.25 IP routing requires more manual configuration esignated router and backup R concept reduce the number of adjacencies The model is prone to failures that may be hard to track OSPF-7 Point-to-multipoint subnet is more robust but less efficient 0.6.6.5 0.6.6.4 0.6.6.6 0.6.6.0/24 0.6.6. 0.6.6.2 There is no R nor backup R very OSPF router maintains adjacencies with all neighbors with whom it has direct connectivity lternative is a set of NM networks Next hop routing protocol improves scalability 0.6.6.3 OSPF-72
OSPF protokolla OSPF-73 OSPF packets the protocol itself OSPF works directly on top of IP. OSPF protocol number is 89. For most packets TTL =, except for hierarchical routing estination IP address = Neighbors IP address or llospfrouters (224.0.0.5) or llesignatedrouters (224.0.0.6) OSPF has 3 sub-protocols: Hello protocol (huomio protokolla) xchange protocol (tiedonvaihto protokolla) Flooding protocol (levitys protokolla) OSPF-74
OSPF protokolla toimii suoraan IP:n päällä OSPF:ssä on 3 osaprotokollaa:. Huomio (hello) protokolla 2. Tiedonvaihto (exchange) protokolla 3. Levitys (flooding) protokolla OSPF sanomien yhteinen otsikko on: Versio Tyyppi Paketin pituus Reitittimen I lueen tunnus Tarkistussumma utentikointityyppi utentikointi utentikointi OSPF nykyversio on 2. Tyyppi erottelee OSPF sanomat toisistaan utentikointityyppi 0 = i autentikointia = Salasana Rajallinen merkitys 2 = Kryptografinen autentikointi M5 0 vain I Pituus Kryptografinen järjestysnumero OSPF-75 OSPF sanomien yhteinen otsikko Versio Tyyppi Paketin pituus Reitittimen I lueen tunnus Tarkistussumma utentikointityyppi utentikointi utentikointi Tyyppi erottelee sanomat toisistaan Tyyppi : Hello Tyyppi 2: atabase escription Tyyppi 3: Link State Request Tyyppi 4: Link State Update Tyyppi 5: Link State ck OSPF nykyversio on 2 lueen tunnus Yleensä (ali)verkkonumero 0 = runkoverkko utentikointityyppi 0 = i autentikointia = Salasana Rajallinen merkitys 2 = Kryptografinen autentikointi M5 0 vain I Pituus Kryptografinen järjestysnumero OSPF-76
Huomioprotokolla varmistaa, että linkit toimivat ja valitsee edus- ja varaedusreitittimen R R2 Otsikkotyyppi = Hello ( kaikille OSPF reitittimille) Verkkomaski Huomioväli Optiot Vanhenemisväli dusreititin Varaedusreititin Naapuri - - - Naapuri - lista naapureista, joilta on tullut viestejä viimeisen vanhenemisvälin aikana Huomioväli kertoo, kuinka usein paketteja lähetetään. Prioriteetti kertoo kelpoisuudesta edusreitittimeksi. Huomioviestien pitää kulkea linkillä molempiin suuntiin, jotta linkki kelpaisi reitiksi Optiot Naapuri Prioriteetti = ulkoisia linkkejä T = TOS reititys onnistuu. dusreititin ja varaedusreititin = 0 jos ei tiedossa OSPF-77 Huomioprotokollan avulla valitaan edus- ja varaedusreititin. Vaalikelpoisuus saavutetaan yhden vanhenemisvälin jälkeen mikäli kaksisuuntainen saavutettavuus on OK. 2. Varaedusreitittimeksi valitaan korkeimman prioriteetin omaava niistä, jotka ilmoittautuivat. Tasatilanteessa valitaan suurimman I:n omaava. 3. Jos kukaan ei ilmoittautunut varaedusreitittimeksi, valitaan korkeimman prioriteetin omaava naapuri. Tasatilanteessa suurimman I:n omaava. 4. dusreitittimeksi valitaan ilmoittautuneista yo. säännöllä. 5. Jos yksikään ei ilmoittaudu edusreitittimeksi, varaedusreititin ylennetään. Kohdat 2 ja 3 suoritetaan uudestaan varaedusreitittimen valitsemiseksi. 6. Muutoksia minimoidaan siten, että korjattu entinen edusreititin ei kiirehdi ilmoittautumaan uudelleen. Kohtia 2...5 suoritetaan jatkuvasti. OSPF-78
R Vaihtoprotokolla alkusynkronoi linkkikannan edusreitittimen kannan kanssa () dd_req (I=,M=,Ms=) dd_req (I=,M=,Ms=0) dd_req (I=0,M=,Ms=) dd_req (I=0,M=,Ms=0) dd = data description M = more Vaihtoprotokolla käyttää tietokannan kuvauspaketteja (database description packets) nsin valitaan master ja slave R2 Masterin valinta Kuvausten vaihto I = initialize Ms = Master/slave Otsikkotyyppi = 2 (dd) 0 0 Optiot dd järjestysnumero 0 IMMs Jos molemmat ilmoittautuvat mastereiksi, korkein osoite voittaa Uudelleenlähetys jos paketti hukataan Sama järjestysnumero vastauksessa OSPF-79 R Vaihtoprotokolla alkusynkronoi linkkikannan edusreitittimen kannan kanssa (2) dd_req (I=,M=,Ms=) dd_req (I=,M=,Ms=0) dd_req (I=0,M=,Ms=) dd_req (I=0,M=,Ms=0) dd = data description M = more Master lähettää oman kantansa kuvauksen järjestysnumeroiduissa paketeissa Slave kuittaa paketit lähettämällä vastaavat omat kuvauksensa. R2 Masterin valinta Kuvausten vaihto I = initialize Ms = Master/slave avain Otsikkotyyppi = 2 (dd) 0 0 Optiot 0 IMMs dd järjestysnumero Linkin tilatyyppi Linkin tila I Mainostava reititin Linkin tilan järjestysnumero Linkin tilan tark.summa Linkin tilan ikä - - - Vaihto jatkuu kunnes molemmat ovat lähettäneet omat kuvauksensa. (M=0) rot kirjataan kyseltävien tietueiden listaan. OSPF-80
R Tietueiden sisältö kysellään pyyntöpaketeilla, jotka kuitataan levitysprotokollan paketein rq levitysprotokollan mainos rq = request Vastausta odotetaan uudelleenlähetyksen väli. Jos ei vastausta, pyyntö toistetaan. Jos kyseltävät tietueet eivät mahdu yhteen pakettiin, tietueet jaetaan useaan kyselyyn. Jonkin mennessä pieleen, palataan roolien uudelleen neuvotteluun. Tietuesisältöjen kysely voi alkaa heti, kun yksikin eroava tietue on havaittu, jolloin dd-pakettien ja rq-pakettien vaihto tapahtuu rinnan. Määrätty avain otsikkotyyppi = 3 (rq) Linkin tilatyyppi Linkin tila I Mainostava reititin - - - OSPF-8 Reititin X,... Levitysprotokolla ylläpitää alueen linkkikantojen yhtenäisyyttä Mainos Kuittaus dusreititin Varaedus r otsikkotyyppi = 4 (upd.) Mainosten lukumäärä Linkin tilamainokset (ks.tietueformaatti) - - - Levitys otsikkotyyppi = 5 (ack.) Linkin tilamainosten otsikot - - - lkuperäisen mainoksen lähettää aina linkistä vastaava reititin. Mainosta levitetään levityssääntöjen mukaan koko alueelle (age = age + ). Uuden tietueen kuittaus voidaan verkossa korvata levityssanomalla Yksi ack voi kuitata monta mainosta. Viiveen avulla saadaan monta kuittausta samaan pakettiin. OSPF-82
Summary of OSPF subprotocols Hello protocol atabase exchange Flooding protocol Hello () X (2) LS rq (3) LS upd (4) LS ack (5) X X X X X X Server ache Synchronization Protocol (SSP) is OSPF without ijkstra s algorithm and with more generic data objects. OSPF-83 Linkkitietueilla on ikä, vanhat poistetaan kannasta () Vanhat tiedot on poistettava kannasta Kaikilla solmuilla on oltava samat tiedot Poistot täytyy synkronoida OSPF:n linkkitietuet vanhenevat Ikä = 0 kun tietue luodaan Ikä = mainosten kulkemien linkkien lkm + sekunnit vastaanotosta Maksimi-ikä on tunti i käytetä reittien laskennassa Poistettava Jokaista tietuetta pitää mainostaa vähintään 30 min välein. Uusi mainos nollaa iän ja inkrementoi tietueen järjestysnumeron. OSPF-84
Linkkitietueilla on ikä, vanhat poistetaan kannasta (2) Kun ikä tulee täyteen (Maxge = h) tietue poistetaan Reititin on lähetettävä mainos naapurille kun se poistaa vanhentuneen tietueen Levitysalgoritmi tutkii vastaanotetun tietueen iän. Maxge mainos hyväksytään ja levitetään - tämä poistaa vanhan tiedon. 2. Jos mainoksen ikäero kantaan on pieni, mainosta ei levitetä, jotta saman tiedon kopiot eivät kuormittaisi verkkoa. Tämä tapahtuu normaalissa levityksessä kun tietue saapuu eri solmujen kautta. 3. Jos mainoksen ikäero kantaan on suuri (>Maxgeiff), uusin mainos hyväksytään ja levitetään. Tässä tapauksessa reititin on todennäköisesti käynnistety uudelleen. 4. Jos Maxge tietuetta ei löydy, mainos ei aiheuta toimenpiteitä, (koska reititin on jo ehtinyt poistaa vanhan tiedon.) OSPF-85 OSPF timeouts LS ge field onstant MinLSrrival MinLSInterval heckge Maxgeiff LSRefreshTime Value second 5 seconds 5 min min 5 5 min min 30 30 min min ction of of OSPF router Max Max rate rate at at which a router will will accept updates of of any any LS LS via via flooding Max Max rate rate at at which a router can can update an an LS LS Rate Rate to to verify an an LS LS hecksum in in When ges ges differ more more than than 5 5 min, min, they they are are considered separate. Smaller LS LS age age --newer! Router must must refresh any any self-originated LS LS whose age age has has reached 30 30 min. min. Maxge hour hour LS LS is is removed from from.. OSPF-86
The purpose of hierarchical routing in OSPF is to reduce routing table growth RT size Flat routing linear growth Logarithmic growth using areas etc. Number of network segments The cost is: sometimes suboptimal routes. OSPF-87 xample of routing hierarchy 0.0.0.0/8 0..3 0.. 0.. 0..2 0.3.3 0.3. 0.3. 0.3.2 0.2.3 0.2. 0.2. 0.2.2 xample: - 6 segments in each lowest level network - flat routing: RTsize= 6*9=44 - areas 0..: 6 local routes + 0..2/24 0..3/24 0.2/6 0.3/6 == 20 RT entries! OSPF-88
OSPF supports 4 level routing hierarchy rea 3 rea 2 Internet Level escription Intra-area routing 2 Inter-area routing 3 xternal Type metrics ackbone 4 xternal Type 2 metrics rea RIP cloud Type metrics are of the same order as OSPF metrics, e.g. hop count (for RIP and OSPF) Type 2 metrics are always more significant than OSPF internal metrics OSPF-89 Why is it difficult to route packets around network congestion? N RPNT link state metric varied with the length of the output queue of the link lead to route trashing. The problem is there is no route pin-down for existing traffic. y limiting the range of the metric changes, an equilibrium could be reached. Nevertheless routing instability is the problem. When QoS or lass of Service a la iffserv is introduced this problem again becomes important. OSPF-90
OSPF development history IR 987 989 99 993 995 997 OSPF Group formed OSPFv published RF 3 OSPFv2 published RF 247 MOSPF RF 583 OSPF update ecomes recommended ryptographic authentication Point-to-multipoint interfaces OSPFv2 updated RF 278 OSPF-9