Distance-vector (DV)
Para cada n, x:
1 Inicializao:
2 para todos os ns destinos y em N:
3 Dx(y) = c(x,y) /* se y no um vizinho ento c(x,y) = */
4 para cada vizinho w
5 Dw(y) = para todos os destinos y em N
6 para cada vizinho w
7 envia um vetor de distncias Dx = [Dx(y): y em N] para w
8
9 loop
10 wait (at que ocorra uma mudana no custo do enlace ao vizinho w ou
11 at a recepo de um vetor de distncias do vizinho w)
12
13 para cada y em N:
14 Dx(y) = minv{c(x,v) + Dv(y)}
Algoritmo de vetor de distncias
15
16 if Dx(y) mudou para algum destino y
17 envia um vetor de distncias Dx = [Dx(y): y em N] para todos os vizinhos
18
19 forever
Algoritmo de vetor de distncias
Ideia bsica:
Cada n envia periodicamente sua prpria estimativa de vetor de
distncia aos vizinhos
Quando o n x recebe nova estimativa de DV do vizinho, ele atualiza
seu prprio DV usando a equao B-F:
Dx(y) = minv{c(x,v) + Dv(y)} para cada n y em N
Ao menos em condies naturais, a estimativa Dx(y) converge para o
menor custo atual dx(y)
Algoritmo de vetor de distncias
Exemplo do algoritmo DV
Cada linha um vetor de distncias
Cada n envia seu vetor de distncias ao seus vizinhos
(setas da figura a seguir)
Aps receber as atualizaes, cada n recalcula o
prprio vetor de distncias
Se houver mudanas, os ns reenviam seus vetores
de distncias aos vizinhos
Exemplo do algoritmo DV (fonte: Kurose)
Dx(y) = min{c(x,y) + Dy(y), c(x,z) + Dz(y)}
= min{2+0 , 7+1} = 2
Dx(z) = min{c(x,y) +
Dy(z), c(x,z) + Dz(z)}
= min{2+1 , 7+0} = 3
Algoritmo de vetor de distncias
Reverso envenenada:
Se Z roteia por Y para alcanar X :
Z diz a Y que sua distncia (de Z) para X infinita (ento Y no rotear at X
via Z)
Clculo de roteamento
No DV, cada n
Fala somente com os vizinhos diretamente conectados a
ele
Informa as estimativas de menor custo entre ele mesmo
e todos os outros ns da rede (ns que ele sabe que
existem)
No LS, cada n
Fala com todos os ns (via broadcast)
Informa somente os custos dos enlaces diretamente
ligados a ele
Algoritmos de roteamento
Complexidade
LS: com n ns, E links, O(NE) mensagens enviadas
DV: trocas somente entre vizinhos
Tempo de convergncia varia
Tempo de convergncia
LS: algoritmo O(N2) exige mensagens O(NE)
Pode ter oscilaes
DV: tempo de convergncia varia
Pode haver loops de roteamento
Problema da contagem ao infinito
Algoritmos de roteamento