View
239
Download
0
Category
Preview:
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
k
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
Recommended