Você está na página 1de 17

Algoritmo de vetor de distncias

 Distance-vector (DV)

Equao de Bellman-Ford (programao dinmica)


Define
dx(y) := custo do caminho de menor custo de x para y
Ento
dx(y) = minv {c(x,v) + dv(y)}
Em que min calculado para todos os vizinhos v de x
Exemplo de grafo (fonte: Kurose)

fonte u, destino z du(z) = 4


Algoritmo de vetor de distncias

 Soluo da equao de Bellman-Ford


 Fornece os registros da tabela de roteamento de um
n fonte
 Sugere a forma de comunicao vizinho para vizinho
que ocorrer no algoritmo DV
Algoritmo de vetor de distncias

Para um n x, Dx(y) estima o menor custo de x para y, para todos os


ns y em N
Vetor de distncia do n x: Dx = [Dx(y): y N]
O n x conhece o custo para cada vizinho v: c(x,v)
O n x mantm Dx = [Dx(y): y N]
O n x tambm mantm os vetores de distncia de seus vizinhos
Para cada vizinho v, x mantm
Dv = [Dv(y): y N]
Algoritmo de vetor de distncias

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

Iterativo, assncrono: cada iterao local causada por:


Mudana no custo do enlace local
Mensagem de atualizao DV do vizinho
Distribudo:
Cada n notifica os vizinhos apenas quando seu DV mudar
Os vizinhos ento notificam seus vizinhos, se necessrio
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

Mudanas no custo do enlace:

Registros na tabela de distncias de y e z at o destino x:

no tempo t0, y detecta a mudana do custo do enlace, atualiza


seu DV e informa aos seus vizinhos.
no tempo t1, z recebe a atualizao de y e atualiza sua tabela.
Calcula um novo custo mnimo para x e envia seu DV aos vizinhos.

no tempo t2, y recebe a atualizao de z e atualiza sua tabela


de distncia. Menores custos de y no mudam, e da y no
envia qualquer mensagem a z.
boas notcias viajam depressa
Algoritmo de vetor de distncias

Mudanas no custo do enlace:

ms notcias viajam devagar


Algoritmo de vetor de distncias

Mudanas no custo do enlace:


Ms notcias viajam devagar problema da contagem ao infinito!
44 iteraes antes de o algoritmo estabilizar: Pag. 280 do Kurose
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)

Isso resolver completamente o problema da contagem ao infinito?


Ver Kurose
Algoritmos de roteamento

 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

Robustez: o que acontece se um roteador funciona mal?


LS:
Ns podem informar custos de link incorretos
Cada n calcula sua prpria tabela de roteamento
DV:
N DV pode informar custo de caminho incorreto
Tabela de cada n usada por outros
Propagao de erros pela rede

Você também pode gostar