FSD Curs unsprezece

Embed Size (px)

Citation preview

  • 8/19/2019 FSD Curs unsprezece

    1/20

    Introducere   Tipuri de rutare   Calcularea tabelelor de rutare

    Fundamentele sistemelor distribuite

    Rutarea

    Mitică Craus

    Univeristatea Tehnică ”Gheorghe Asachi” din Ias,i

    1/ 20

  • 8/19/2019 FSD Curs unsprezece

    2/20

    Introducere   Tipuri de rutare   Calcularea tabelelor de rutare

    Cuprins

    IntroducereTipuri de rutareCalcularea tabelelor de rutare

    Rutare focalizata pe adresa destinataruluiProblema drumurilor minime ı̂ntre un vârf sursă şi celelalte vărfuriAlgoritmul lui Dijkstra

    Rutare focalizata pe costuriProblema drumurilor minime ı̂ntre oricare două vârfuriDescriereModelul matematicAlgoritmul Floyd-Warshall

    Algoritmul Floyd-Warshall distribuit - Toueg

    2/ 20

  • 8/19/2019 FSD Curs unsprezece

    3/20

    Introducere   Tipuri de rutare   Calcularea tabelelor de rutare

    Introducere

    •   Rutarea ı̂nseamna retransmiterea unui mesaj către un nod al unei reţele care se aflape traseul spre destinatie

    •  Pentru a face acest lucru este nevoie de•  o tabela de rutare si de

    •  un mecanism de redirectionare a pachetelor•   Obiective:

    •  Corectiduninea: Fiecare pachet ajunge la destinatie.•   Eficienţa: alegerea unui traseu bun, timp scurt, ı̂ntârzieri mici, banda de transmisie

    largă, număr mic de mesaje pentru calcularea tabelelor de rutare.•   Rubusteţea şi stabilitatea: actualizarea tabelelor de rutare atunci cand intervin

    schimbări ı̂n topologia reţelei.•   Flexibilitatea şi adaptativitatea: echilibrarea ı̂ncărcării nodurilor de rutare şi a canalelor

    de comunicaţii

    3/ 20

  • 8/19/2019 FSD Curs unsprezece

    4/20

    Introducere   Tipuri de rutare   Calcularea tabelelor de rutare

    Tipuri de rutare

    •   Rutare focalizata pe adresa destinatarului: Toate pachetele cu aceeaşi destinaţ ie dsunt transmise via un arbore de acoperire cu rădăcina d.

    •   Rutare ı̂n care sursa alege traseul.

    •   Rutare ı̂n care ruterul alege traseul.

    •   Rutare orientate pe evaluarea stării conexiunilor (tolerantă la defecţiuni).

      Rutare ı̂n care prioritar este traseul de cost minim.•   Rutare statică:

    •   Este specifică reţelelor fixe.•   Nu ţine cont de schimbarile car pot interveni ı̂n topologia reţelei (apariţia de noi noduri

    şi/sau linii de comunicaţii.•  Tabelele de rutare trebuie recalculate atunci cand intervine o modificare a topologiei.

      Rutare dinamică:•   Este sensibilă la schimbări de topologie.•   Tabelele de rutare sunt actualizate (recalculate doar modificările) atunci cand intervine

    o schimbare a topologiei.

    •   Rutare ierarhică:•   Este organizate pe niveluri: intra-domeniu, inter-domenii..

    4/ 20

  • 8/19/2019 FSD Curs unsprezece

    5/20

    Introducere   Tipuri de rutare   Calcularea tabelelor de rutare

    Calcularea tabelelor de rutare - premise

      Costul transmiterii unui pachet nu depinde ı̂ncărcarea canalului de comunicaţii(conexiunea).

    •   Costul concatenării a două drumuri (trasee) este egal cu suma costurilor celor douădrumuri.

    •   Graful  G  = (V , E ) care reprezintă topologia este aciclic şi nu conţine costurinegative.

    •  Un drum de la  u   la  v  este optimal dacă nu există un altul de cost mai mic.

    Teorema (1)

    Dacă există un drum de la  u   la  v , atunci există un drum  ρ   optim.

    Demonstraţie.In  G , există un număr finit de drumuri simple (fără cicluri). Rezultă că există un număr finit de

    drumuri simple de la  u   la  v . Deoarece mulţimea drumurilor simple de la  u   la  v   este finit̆a, există

    un drum simplu,  ρ, de la  u   la  v , care este minimal. Un drum de la  u   la  v , care conţine un ciclu,

    conţine un drum simplu de la  u   la  v   (u . . . w i . . . . w i  . . . v  → u . . . . w i  . . . v ).

    5/ 20

    I d Ti i d C l l b l l d

  • 8/19/2019 FSD Curs unsprezece

    6/20

    Introducere   Tipuri de rutare   Calcularea tabelelor de rutare

    Problema drumurilor minime ı̂ntre un vârf sursă şi celelalte vărfuri

    •   Se consideră  G  = (V , A) un digraf cu  V  = {0, . . . , n−1}  şi   : A → IR o funcţie deetichetare a arcelor.

    •  Perechea (G , ) se mai numeşte  digraf ponderat .

    •   Notăm ij   ı̂n loc de  ((i , j )) şi numim ij   lungimea (= costul) arcului  (i , j ).   Lungimea(= costul) unui drum  este suma lungimilor arcelor ce compun drumul.

    •   Problema constă ı̂n a determina toate drumurile minime care au una dintreextremit̆aţi un vârf   i 0  dat şi cealaltă extremitate unul dintre vârfurile lui  G .

    •   Metoda uitilizată este  greedy .

    6/ 20

    I t d Ti i d t C l l t b l l d t

  • 8/19/2019 FSD Curs unsprezece

    7/20

    Introducere   Tipuri de rutare   Calcularea tabelelor de rutare

    Algoritmul lui Dijkstra - descriere

    •   Determină drumurile minime care pleacă dintr-un vârf   i 0  dat, ı̂ntr-un digraf ponderat(G , ) = (V , A, ).

    •   Ponderile  i , j   sunt  ≥ 0.

    •   Pentru fiecare vârf   i ,•   D [i ] va fi lungimea drumului minim de la   i 0   la   i   şi•   P [i ] va fi predecesorul lui   i  pe drumul minim de la   i 0   la   i .

    7/ 20

    Introducere Tipuri de rutare Calcularea tabelelor de rutare

  • 8/19/2019 FSD Curs unsprezece

    8/20

    Introducere   Tipuri de rutare   Calcularea tabelelor de rutare

    Algoritmul lui Dijkstra - pseudocodNotat ̧ii :

    •   (G , ) = (V , A, ) este un digraf ponderat.

    •   D [0..n−1] şi  P [0..n−1] sunt vectori de dimensiune  n.

    •   L[0..n−1, 0..n−1] este un tablou bidimensional de marime  nxn.

    •   S  este mulţimea vârfurilor selectate; iniţial  S  =   / 0.

    Premise :

    •   Init, ial,  L[i , j ] =

    i , j ,   dacă (i , j ) ∈ A

    0,   dacă   i  = j ∞,   altfel.

    Dijkstra(G , L, i 0, D , P )1   for  i  ← 0   to   n−12   do  P [i ] ← i 03   D [i ] ← i o ,i 

    4   S  ← {i 0}5   while   S  = V 6   do   i  ← k    pentru care  D [k ] = min{D [ j ]/ j  ∈ V \S }7   S  ← S ∪{k }8   for   fiecare   j  ∈ listaDeAdiacenta(i ) şi   j  ∈ V \S 9   do if  (D [ j ] > D [i ] + L[i , j ])

    10   then   D [ j ] ← D [i ] + L[i , j ]

    11   P [ j ] ← i 8/ 20

    Introducere Tipuri de rutare Calcularea tabelelor de rutare

  • 8/19/2019 FSD Curs unsprezece

    9/20

    Introducere   Tipuri de rutare   Calcularea tabelelor de rutare

    Algoritm de rutare bazat pe algoritmul lui Dijsktra

    Pentru simplificarea limbajului, vom identifica vârful (nodul)   i  cu unitatea de procesareplasată ı̂n acest vârf.

    Tabel Rutare Dijkstra(G , L, i , D , P )1   Dijkstra(G , L, i , D , P )2   for  j  ← 0   to   n−1

    3   do   send P [ j ]   to j   /∗   transmite lui   j   predecesorul  P [ j ] pe drumul minim cu sursa   i   ∗/

    Cosiderăm un mesaj  m  cu destinaţia  i , care ajunge ı̂n nodul   j .

    Rutare Dijkstra(m, i , p )1   /∗p  = P [ j ]∗/

    2   if   i  = j 3   then   terminate   /∗  pachetul a ajuns la destinaţ ie   ∗/4   else   send m to p /∗   transmite  m  predecesorului lui   j  pe drumul minim cu sursa   i   ∗/

    9/ 20

    Introducere Tipuri de rutare Calcularea tabelelor de rutare

  • 8/19/2019 FSD Curs unsprezece

    10/20

    Introducere   Tipuri de rutare   Calcularea tabelelor de rutare

    Problema drumurilor minime ı̂ntre oricare două vârfuri

    •   Se consideră un digraf ponderat (G , ) = (V , A, ).

    •   Problema constă ı̂n a determina, pentru oricare două vârfuri   i , j , un drum de lungimeminimă de la vârful   i   la vârful   j   (dacă există).

    •   Metoda utilizată este programarea dinamică.

    10/ 20

    Introducere   Tipuri de rutare   Calcularea tabelelor de rutare

  • 8/19/2019 FSD Curs unsprezece

    11/20

    u pu u u u

    Problema drumurilor minime - modelul matematic

    •  Extindem funcţia    la   : V  ×V  → IR, prin asignarea  ij  = ∞ pentru acele perechi de

    vârfuri distincte cu  i , j  ∈ A  şi  ii  = 0 pentru orice   i  = 0, . . . , n−1.•   Definim starea problemei ca fiind subproblema corespunzătoare determinării

    drumurilor de lungime minimă cu vârfuri intermediare din mulţimea  X  ⊆ V ,DM2VD(X ) (Drum Minim ı̂ntre oricare două Vârfuri ale unui Digraf ).

    •   Evident,  DM2VD(V ) este chiar problema iniţială.

    •   Notăm cu  X 

    ij 

      lungimea drumului minim de la   i   la   j  construit cu vârfuri intermediare

    din  X . Dacă  X  =   / 0, atunci   / 0ij  = ij .

    •   Considerăm decizia optimă care transformă starea  DM2VD(X  ∪ {k }) ı̂n  DM2VD(X ).

    •   Presupunem că (G , )  este un digraf ponderat fără circuite negative .

    •   Fie  ρ  un drum optim de la   i   la   j  ce conţine vârfuri intermediare din mulţimeaX  ∪ {k }.

    •   Avem   lung(ρ) = X ∪{k }ij    , unde   lung(ρ) este lungimea drumului   ρ.

    •   Dacă vârful  k  nu aparţine lui  ρ, atunci politica obţinerii lui  ρ  corespunde stăriiDM2VD(X ) şi, aplicând principiul de optim, obţinem:

    X ij   = lung(ρ) = X ∪{k }ij 

    11/ 20

    Introducere   Tipuri de rutare   Calcularea tabelelor de rutare

  • 8/19/2019 FSD Curs unsprezece

    12/20

    p

    Problema drumurilor minime - modelul matematic (continuare)

    •   În cazul ı̂n care  k   aparţine drumului  ρ, notăm cu  ρ1  subdrumul lui   ρ  de la   i   la  k   şicu  ρ2  subdrumul de la  k   la   j .

    •   Aceste două subdrumuri au vârfuri intermediare numai din  X .

    •   Conform principiului de optim, politica optimă corespunzătoare stării  DM2VD(X )este subpolitică a politicii optime corespunzătoare stării  DM2VD(X  ∪ {k }).

    •   Rezultă că  ρ1   şi  ρ2  sunt optime ı̂n  DM2VD(X ).

    •   De aici rezultă:

    X ∪{k }ij    = lung(ρ) = lung(ρ1) + lung(ρ2) = 

    X ik  +

    X kj 

      Acum, ecuaţia funcţională analitică pentru valorile optime  X 

    ij    are următoarea formă:

    X ∪{k }ij    = min{

    X ij  ,

    X ik  +

    X kj }

    12/ 20

    Introducere   Tipuri de rutare   Calcularea tabelelor de rutare

  • 8/19/2019 FSD Curs unsprezece

    13/20

    Problema drumurilor minime - modelul matematic (continuare)

    Corolar (1)

    Dacă  (G , )  nu are circuite de lungime negativă, atunci au loc următoarele relat ̧ii:

    •   X ∪{k }kk    = 0

    •   X ∪{k }ik    = 

    X ik 

    •   X ∪{k }kj    = 

    X kj 

    pentru orice   i , j , k  ∈ V .

    •   Calculul valorilor optime rezultă din rezolvarea subproblemelor

    DM2VD( / 0),DM2VD({0}),DM2VD({0, 1}), . . . ,DM2VD({0, 1, . . . , n−1}) =

    DM2VD(V )•   Convenim să not̆am  k ij   ı̂n loc de  

    {0,...,k }ij    .

    •   Pe baza corolarului rezultă că valorile optime pot fi memorate ı̂ntr-un acelaşi tablou.

    •   Maniera de determinare a acestora este asemănătoare cu cea utilizată ladeterminarea matricei drumurilor de către algoritmul Floyd–Warshall.

    13/ 20

    Introducere   Tipuri de rutare   Calcularea tabelelor de rutare

  • 8/19/2019 FSD Curs unsprezece

    14/20

    Problema drumurilor minime - modelul matematic (continuare)

    •   Pe baza ecuaţiilor anterioare, proprietatea de substructură optimă se caracterizeazăprin proprietatea următoare:

    •  Un drum optim de la   i   la   j   include drumurile optime de la   i   la  k   şi de la  k   la   j , pentruorice vârf intermediar  k  al său.

    •  Astfel, drumurile minime din  DM2VD(X  ∪ {k }) pot fi determinate utilizânddrumurile minime din  DM2VD(X ).

    14/ 20

    Introducere   Tipuri de rutare   Calcularea tabelelor de rutare

  • 8/19/2019 FSD Curs unsprezece

    15/20

    Problema drumurilor minime - modelul matematic (continuare)

    •   În continuare considerăvem numai cazurile  X  = {0, 1, . . . , k −1}  şi

    X  ∪ {k } = {0, 1, . . . , k −1, k }

    •   Determinarea drumurilor optime poate fi efectuată cu ajutorul unor matriceP k  = (P k ij ), care au semnificaţia următoare:   P 

    k ij   este penultimul vârf din drumul

    optim de la   i   la   j .

    •   Iniţial, avem  P init ij    = i , dacă  i , j  ∈ E   şi  P init ij    = −1, ı̂n celelalte cazuri.

    •   Decizia  k   determină matricele  k  = (k ij ) şi  P k  = (P k ij ).

    •   Dacă  k −1ik    + k −1kj    <

    k −1ij    , atunci drumul optim de la  i   la   j  este format din concatenarea

    drumului optim de la   i   la  k  cu drumul optim de la  k   la   j . Penultimul vârf din drumulde la   i   la   j  coincide cu penultimul vârf din drumul de la  k   la   j :   P k ij  = P 

    k −1kj    .

    •   În caz contrar, avem  P k ij  = P k −1ij    .

    •  Cu ajutorul matricei  P n−1ij    pot fi determinate drumurile optime: ultimul vârf pe

    drumul de la   i   la   j   este   j t  = j , penultimul vârf este   j t −1 = P n−1ij t 

    , antipenultimul este

     j t −2 =  P n−1ij t −1

    ş.a.m.d.

    •   În acest mod, toate drumurile pot fi memorate utilizând numai  O (n2) spaţiu.

    15/ 20

    Introducere   Tipuri de rutare   Calcularea tabelelor de rutare

  • 8/19/2019 FSD Curs unsprezece

    16/20

    Algoritmul Floyd-Warshall - pseudocod

    Floyd Warshall 1(G , , P )1   for   i  ← 0   to  n−12   do for   j  ← 0   to  n−13   do switch4   case   i  = j ,i , j  ∈ A : P init ij    ← i 

    5   case  DEFAULT   : P init 

    ij    ← −16   for   i  ← 0   to  n−17   do for   j  ← 0   to  n−18   do  0ij  = min{

    init ij    ,

    init i 0   +

    init 0 j   }

    9   switch10   case  0ij  = 

    init ij    : P 

    0ij  ← P 

    init ij 

    11   case  0ij  = init i 0   +

    init 0 j    : P 

    0ij  ← P 

    init 0 j 

    12   Proces Iterativ(G , , P )

    Proces Iterativ(G , ,P )1   for  k  ← 1   to  n−12   do for   i  ← 0   to  n−1

    3   do for   j  ← 0   to   n−14   do  k ij  = min{

    k −1ij    ,

    k −1ik    +

    k −1kj    }

    5   switch6   case  k ij  = 

    k −1ij    : P 

    k ij  ← P 

    k −1ij 

    7   case  k ij  = k −1ik    +

    k −1kj    : P 

    k ij  ← P 

    k −1kj 

    16/ 20

    Introducere   Tipuri de rutare   Calcularea tabelelor de rutare

  • 8/19/2019 FSD Curs unsprezece

    17/20

    Algoritmul Floyd-Warshall - implementare

    •   Din corolarul 1 rezultă ca matricele  k −1 şi  k  pot fi memorate ı̂n acelaşi tablou

    bidimensional  L.•   De asemenea,  P k −1 şi  P k  pot fi memorate ı̂n acelaşi tablou bidimensional  P .

    •   Rezultă urmatorul pseudocod pentru algoritmul Floyd-Warshall

    Floyd Warshall 2(G , L, P )

    1  for  i 

     ← 0 to   n

    −12   do for   j  ← 0   to   n−13   do switch4   case   i  = j and L[i , j ] = ∞ : P [i , j ] ← i 5   case   DEFAULT   : P [i , j ] ←−16   for  k  ← 0  to   n−1

    7   do for   i  ← 0  to  n−18   do for   j  ← 0  to   n−19   do if  L[i , j ] > L[i , k ] + L[k , j ]

    10   then   P [i , j ] ← P [k , j ]11   L[i , j ] ← min{L[i , j ], L[i , k ] + L[k , j ]}

    17/ 20

    Introducere   Tipuri de rutare   Calcularea tabelelor de rutare

  • 8/19/2019 FSD Curs unsprezece

    18/20

    Algoritm de rutare bazat pe algoritmului Floyd-Warshall

    Tabel Rutare Floyd Warshall(G , L, P , 0)1   Floyd Warshall 2(G , L, P )/∗   ı̂n nodul 0 este apelat algoritmul Floyd-Warshall   ∗/2   for  j  ← 1   to   n−13   do   send P  j   to j   /∗  nodul 0 transmite nodului   j   vectorul  P  j [i ] = (P [i , j ]), i  = 0, . . . , n−1∗

    Cosiderăm un mesaj  m  cu destinaţia  i , care ajunge ı̂n nodul   j .

    Rutare Floyd Warshall(P  j , m, i )1   if   i  = j 2   then   terminate   /∗  pachetul a ajuns la destinaţ ie   ∗/3   else   send m to P  j [i ]/∗   transmite  m  predecesorului lui   j  pe drumul minim cu sursa   i   ∗/

    18/ 20

    Introducere   Tipuri de rutare   Calcularea tabelelor de rutare

  • 8/19/2019 FSD Curs unsprezece

    19/20

    Algoritmul Floyd-Warshall distribuit (Toueg) - pseudocod

    Pseuodocod pentru nodul   i 

    Toueg 1(G , , i , P )1   for   j  ← 0   to  n−12   do switch3   case   i  = j ,i , j  ∈ A : P init ij    ← i 

    4   case   DEFAULT   : P init ij    ← −1

    5   if   i  = 06   then  send   init 

    0

      = (init 

    0 j 

      ) j =0,1,...,n−1   and 

    7   P init 0   = (P init 0 j    ) j =0,1,...,n−1

    8   to all nodes 9   else   receive   init 0   = (

    init 0 j   ) j =0,1,...,n−1   and 

    10   P init 0   = (P init 0 j    ) j =0,1,...,n−1

    11   for   j  ← 0   to  n−112   do  0ij  = min{

    init ij    ,

    init i 0   +

    init 0 j   }

    13   switch14   case  0ij  = 

    init ij    : P 

    0ij  ← P 

    init ij 

    15   case  0ij  = init i 0   +

    init 0 j    : P 

    0ij  ← P 

    init 0 j 

    16   Proces Iterativ(G , , i , P )

    Proces Iterativ(G , , i , P )1   for  k  ← 1   to   n−12   do if   i  = k 3   then   send   k −1i    = (

    k −1ij    ) j =0,1,...,n−1   and 

    4   P k −1i    = (P k −1ij    ) j =0,1,...,n−1

    5   to all nodes 6   else   receive   k −1k    = (

    k −1kj    ) j =0,1,...,n−1   an

    7   P k −1k    = (P k −1kj    ) j =0,1,...,n−1

    8   for  j  ← 0   to   n−19   do  k ij  = min{

    k −1ij    ,

    k −1ik    +

    k −1kj    }

    10   switch

    11   case  k 

    ij  = k −1ij    : P 

    ij  ← P k −1ij 

    12   case  k ij  = k −1ik    +

    k −1kj    : P 

    k ij  ← P 

    k −1kj 

    19/ 20

    Introducere   Tipuri de rutare   Calcularea tabelelor de rutare

  • 8/19/2019 FSD Curs unsprezece

    20/20

    Algoritmul Toueg - implementare

    Pseuodocod pentru nodul   i 

    Notat ̧ii :•   Li [0..n−1] şi  P i [0..n−1] sunt vectori de dimensiune  n.

    Premise :

    •   Init, ial,  Li  = (L[i , j ]) j =0,1,...,n−1   şi  P i  = (P [i , j ]) j =0,1,...,n−1

    Toueg 2(G , i , Li , P i )

    1  for  k 

     ← 0  to   n

    −12   do if   i  = k 3   then   send Li  = (L[i , j ]) j =0,1,...,n−1   and 4   P i  = (P [i , j ]) j =0,1,...,n−15   to all nodes 6   else   receive Lk  = (L[k , j ]) j =0,1,...,n−1   and 

    7   P k  = (P [k , j ]) j =0,1,...,n−18   for  j  ← 0   to   n−19   do if  Li [ j ] > Li [k ] + Lk [ j ]

    10   then  Li [ j ] ← Li [k ] + Lk [ j ]11   P i [ j ] ← P k [ j ]

    20/ 20