- Etäisyysvektorialgoritmi on dynaaminen algoritmi.
- Sitä käytetään pääasiassa ARPANETissa ja RIP:ssä.
- Jokainen reititin ylläpitää etäisyystaulukkoa, joka tunnetaan nimellä Vektori .
Kolme avainta etäisyysvektorireititysalgoritmin toiminnan ymmärtämiseen:
Etäisyysvektorireititysalgoritmi
Anna dx(y) on edullisimman polun hinta solmusta x solmuun y. Alhaisimmat kustannukset liittyvät Bellman-Ford-yhtälöön,
d<sub>x</sub>(y) = min<sub>v</sub>{c(x,v) + d<sub>v</sub>(y)}
Missä minv on yhtälö, joka on otettu kaikille x naapureille. Kun otamme huomioon vähiten kustannuksia aiheuttavan polun v:stä y:hen siirtymisen jälkeen, polun hinta on c(x,v)+dsisään(y). Pienin kustannus x:stä y:ään on c(x,v)+d:n minimisisään(y) ottanut haltuunsa kaikki naapurit.
Distance Vector Routing -algoritmilla solmu x sisältää seuraavat reititystiedot:
- Kullekin naapuri v:lle kustannus c(x,v) on polkukustannus x:stä suoraan liitettyyn naapuriin v.
- Etäisyysvektori x, eli Dx= [Dx(y) : y N ], joka sisältää sen kustannukset kaikkiin kohteisiin, y, N.
- Jokaisen naapurinsa etäisyysvektori, eli Dsisään= [Dsisään(y) : y in N ] jokaiselle x:n naapurille v.
Etäisyysvektorireititys on asynkroninen algoritmi, jossa solmu x lähettää kopion etäisyysvektoristaan kaikille naapureilleen. Kun solmu x vastaanottaa uuden etäisyysvektorin yhdeltä naapurivektoriltaan v, se tallentaa v:n etäisyysvektorin ja päivittää oman etäisyysvektorinsa Bellman-Ford-yhtälön avulla. Yhtälö on annettu alla:
java kommentteja
d<sub>x</sub>(y) = min<sub>v</sub>{ c(x,v) + d<sub>v</sub>(y)} for each node y in N
Solmu x on päivittänyt oman etäisyysvektoritaulukkonsa käyttämällä yllä olevaa yhtälöä ja lähettää päivitetyn taulukkonsa kaikille naapureilleen, jotta he voivat päivittää omat etäisyysvektorinsa.
Algoritmi
At each node x, <p> <strong>Initialization</strong> </p> for all destinations y in N: D<sub>x</sub>(y) = c(x,y) // If y is not a neighbor then c(x,y) = ∞ for each neighbor w D<sub>w</sub>(y) = ? for all destination y in N. for each neighbor w send distance vector D<sub>x</sub> = [ D<sub>x</sub>(y) : y in N ] to w <strong>loop</strong> <strong>wait</strong> (until I receive any distance vector from some neighbor w) for each y in N: D<sub>x</sub>(y) = minv{c(x,v)+D<sub>v</sub>(y)} If D<sub>x</sub>(y) is changed for any destination y Send distance vector D<sub>x</sub> = [ D<sub>x</sub>(y) : y in N ] to all neighbors <strong>forever</strong>
Huomautus: Etäisyysvektorialgoritmissa solmu x päivittää taulukkonsa, kun se joko näkee kustannusmuutoksen yhdessä suoraan linkitetyssä solmussa tai vastaanottaa minkä tahansa vektoripäivityksen joltakin naapuriltaan.
Ymmärretään esimerkin kautta:
Tietojen jakaminen
- Yllä olevassa kuvassa kukin pilvi edustaa verkkoa ja pilven sisällä oleva numero edustaa verkon tunnusta.
- Kaikki lähiverkot on yhdistetty reitittimillä, ja ne on esitetty laatikoissa, jotka on merkitty A, B, C, D, E, F.
- Etäisyysvektorireititysalgoritmi yksinkertaistaa reititysprosessia olettaen, että jokaisen linkin hinta on yksi yksikkö. Siksi lähetyksen tehokkuutta voidaan mitata määränpäähän saavuttavien linkkien lukumäärällä.
- Etäisyysvektorireitityksessä hinta perustuu hyppyjen määrään.
Yllä olevassa kuvassa havaitsemme, että reititin lähettää tiedon välittömille naapureille. Naapurit lisäävät tämän tiedon omiin tietoihinsa ja lähettävät päivitetyn taulukon omille naapureilleen. Tällä tavalla reitittimet saavat omat tietonsa sekä uudet tiedot naapureista.
Reititystaulukko
Kaksi prosessia tapahtuu:
- Taulukon luominen
- Päivitetään taulukkoa
Taulukon luominen
Aluksi reititystaulukko luodaan jokaiselle reitittimelle, joka sisältää vähintään kolmen tyyppistä tietoa, kuten verkkotunnuksen, hinnan ja seuraavan hypyn.
- Yllä olevassa kuvassa on kaikkien reitittimien alkuperäiset reititystaulukot. Reititystaulukossa ensimmäinen sarake edustaa verkon tunnusta, toinen sarake linkin hintaa ja kolmas sarake on tyhjä.
- Nämä reititystaulukot lähetetään kaikille naapureille.
Esimerkiksi:
A sends its routing table to B, F & E. B sends its routing table to A & C. C sends its routing table to B & D. D sends its routing table to E & C. E sends its routing table to A & D. F sends its routing table to A.
Päivitetään taulukkoa
- Kun A vastaanottaa reititystaulukon B:ltä, se käyttää tietojaan taulukon päivittämiseen.
- B:n reititystaulukko näyttää kuinka paketit voivat siirtyä verkkoihin 1 ja 4.
- B on A-reitittimen naapuri, paketit A:sta B:hen voivat saavuttaa yhdellä hyppyllä. Joten 1 lisätään kaikkiin B:n taulukossa annettuihin kustannuksiin ja summa on kustannukset tietyn verkon saavuttamisesta.
- Säädön jälkeen A yhdistää tämän taulukon omaan pöytäänsä luodakseen yhdistetyn taulukon.
- Yhdistetty taulukko saattaa sisältää päällekkäisiä tietoja. Yllä olevassa kuvassa reitittimen A yhdistetty taulukko sisältää kaksoistiedot, joten se säilyttää vain ne tiedot, joiden kustannukset ovat edullisimmat. Esimerkiksi A voi lähettää tiedot verkkoon 1 kahdella tavalla. Ensimmäinen, joka ei käytä seuraavaa reititintä, joten se maksaa yhden hypyn. Toinen vaatii kaksi hyppyä (A:sta B:hen, sitten B:stä verkkoon 1). Ensimmäinen vaihtoehto on edullisin, joten se säilytetään ja toinen jätetään pois.
- Reititystaulukon luonti jatkuu kaikille reitittimille. Jokainen reititin saa tiedot naapureista ja päivittää reititystaulukon.
Alla on kaikkien reitittimien lopulliset reititystaulukot: