Linkkitilan reititys

Linkkitilan reititys on tekniikka, jossa kukin reititin jakaa tiedon naapurustostaan jokaiselle muulle internetverkon reitittimelle.

Linkkitilan reititysalgoritmin ymmärtämisen kolme avainta:

  • Tieto naapurustosta: Reititystaulukkonsa lähettämisen sijasta reititin lähettää vain tiedon naapurustostaan. Reititin lähettää muille reitittimille suoraan liitettyjen linkkiensä tunnistetiedot ja kustannukset.
  • Flooding: Kukin reititin lähettää tiedot jokaiselle muulle internetverkon reitittimelle paitsi naapureilleen. Tämä prosessi tunnetaan nimellä Flooding. Jokainen paketin vastaanottava reititin lähettää kopiot kaikille naapureilleen. Lopulta jokainen reititin saa kopion samasta tiedosta.
  • Tiedon jakaminen: Reititin lähettää tiedon jokaiselle toiselle reitittimelle vain silloin, kun tiedoissa tapahtuu muutos.

Linkkitilan reitityksessä on kaksi vaihetta:

Luotettava tulviminen

  • Alkutila: Jokainen solmu tietää naapuriensa kustannukset.
  • Lopputila: Jokainen solmu tuntee koko graafin.

REITTIEN LASKEMINEN

Jokainen solmu käyttää Dijkstran algoritmia graafissa laskeakseen optimaaliset reitit kaikkiin solmuihin.

  • Linkkitilan reititysalgoritmi tunnetaan myös nimellä Dijkstran algoritmi, jota käytetään löytämään lyhin polku yhdestä solmusta jokaiseen muuhun verkon solmuun.
  • Dijkstran algoritmi on iteratiivinen, ja sillä on ominaisuus, että algoritmin k:nnen iteraation jälkeen pienimmän kustannuksen polut ovat hyvin tiedossa k:lle kohdesolmulle.

Kuvaillaan joitakin merkintöjä:

  • c( i , j): Linkkikustannus solmusta i solmuun j. Jos solmut i ja j eivät ole suoraan yhteydessä toisiinsa, c(i , j) = ∞.
  • D(v): Määrittää sen polun kustannukset lähdekoodista määränpäähän v, jolla on tällä hetkellä pienimmät kustannukset.
  • P(v): Se määrittelee edellisen solmun (v:n naapuri) sekä nykyisen vähiten kustannuksia aiheuttavan polun lähteestä v:hen.
  • N: Se on verkossa käytettävissä olevien solmujen kokonaismäärä.

Algoritmi

InitializationN = {A} // A is a root node.for all nodes vif v adjacent to Athen D(v) = c(A,v)else D(v) = infinityloopfind w not in N such that D(w) is a minimum.Add w to NUpdate D(v) for all v adjacent to w and not in N:D(v) = min(D(v) , D(w) + c(w,v))Until all nodes in N

Ylläolevassa algoritmissa alkutilannevaiheen jälkeen seuraa silmukka. Silmukan suorituskertojen määrä on yhtä suuri kuin verkossa käytettävissä olevien solmujen kokonaismäärä.

Ymmärretään esimerkin avulla:

Yllä olevassa kuvassa lähdepiste on A.

Vaihe 1:

Ensimmäinen vaihe on alustusvaihe. Tällä hetkellä tiedossa oleva pienimmän kustannuksen polku A:sta suoraan siihen liitettyihin naapureihin B, C ja D on vastaavasti 2,5,1. Kustannus A:sta B:hen on 2, A:sta D:hen 1 ja A:sta C:hen 5. Kustannukset A:sta E:hen ja F:ään asetetaan äärettömiksi, koska ne eivät ole suoraan yhteydessä A:han.

Step N D(B) D(B) D(C) D(D) D(D) D(E) D(F),P(F)
1 A 2,A 5,A 1,A

Vaihe 2:

Yllä olevasta taulukosta havaitaan, että piste D sisältää vähiten kustannuksia aiheuttavan polun vaiheessa 1. Siksi se lisätään N:ään. Nyt on määritettävä vähiten kustannuksia aiheuttava polku D-pisteen kautta.

a) Lyhimmän polun laskeminen A:sta B:hen

b) Lyhimmän polun laskeminen A:sta C:hen

c) Lyhimmän polun laskeminen A:sta E:hen

Huomautus: Piste D:llä ei ole suoraa linkkiä pisteeseen E. Siksi D(F):n arvoksi muodostuu ääretön arvoa D(F).

Step N D(B),P(B) D(C),P(C) D(D),P(D) D(E),P(E) D(F),P(F)
1 A 2,A 5,A 1,A
2 AD 2,A 4,D 2,D

Vaihe 3:

Yllä olevasta taulukosta havaitaan, että sekä E:llä että B:llä on vähiten kustannuksia aiheuttava polku vaiheessa 2. Tarkastellaan E-pistettä. Määritellään nyt muiden kärkipisteiden vähimmän kustannuksen polku E:n kautta.

a) Lasketaan lyhin polku A:sta B:hen.

b) Lasketaan lyhin polku A:sta C:hen.

c) Lasketaan lyhin polku A:sta F:ään.

Vaihe N D(B),P(B) D(C),P(C) D(D),P(D) D(E),P(E) D(F),P(F)
1 A 2,A 5,A 1,A
2 AT AD 2,A 4,D 2,D
3 ADE 2,A 3,E 3,E 4,E

Vaihe 4:

Yllä olevasta taulukosta havaitaan, että B-pisteellä on vähiten kustannuksia aiheuttava polku vaiheessa 3. Siksi se lisätään N:ään. Nyt määritetään jäljellä olevien kärkipisteiden pienimmän kustannuksen polku B:n kautta.

a) Lasketaan lyhin polku A:sta C:hen.

b) Lasketaan lyhin polku A:sta F:ään.

,E

Step N D(B),P(B) D(C),P(C) D(D),P(D) D(E),P(E) D(F),P(F)
1 A 2,A 5,A 1,A
2 AD 2,A 4,D 2,D
3 ADE 2,A 3,E 3,E 3,E 2,D 2,D
3 ADE 3,E 3,E
4 ADEB 3,E 4,E

Vaihe 5:

Yllä olevasta taulukosta havaitaan, että C-pisteellä on vähiten kustannuksia aiheuttava polku vaiheessa 4. Siksi se lisätään N:ään. Nyt määritetään jäljelle jäävien kärkien pienimmän kustannuksen polku C:n kautta.

a) Lyhimmän polun laskeminen A:sta F:ään.

Step N D(B),P(B) D(C),P(C) D(D),P(D) D(E),P(E) D(F),P(F)
1 A 2,A 5,A 1,A
2 AD 2,A 4,D 2,D
3 ADE 2,A 3,E 4,E
4 ADEB 3,

Step N D(B),P(B) D(C),P(C) D(D),P(D) D(E),P(E) D(F),P(F)
1 A 2,A 5,A 1,A
2 AD 2,A 4,D 2,D
3 ADE 2,E
5 ADEBC 4,

Linjatilan reitityksessä syntyy paljon liikennettä Floodingin takia. Flooding voi aiheuttaa loputtoman silmukan, tämä ongelma voidaan ratkaista käyttämällä Time-to-leave-kenttää

.

Vastaa

Sähköpostiosoitettasi ei julkaista.