Algoritmo baseado em vetor de distâncias

Propaganda
Algoritmo baseado em vetor de distâncias
Distance-vector-based (DV)
Equação de Bellman-Ford (programação dinâmica)
Define
dx(y) := custo do caminho de menor custo de x para y
Então
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 Bellman-Ford
Solução da equação de Bellman-Ford
Fornece os registros da tabela de roteamento de um
nó fonte
Sugere a forma de comunicação vizinho para vizinho
que ocorrerá no algoritmo DV
Algoritmo de Bellman-Ford
Para um nó x, Dx(y) estima o menor custo de x para y, para todos os
nós y em N
• Vetor de distância do nó x: Dx = [Dx(y): y є N]
• O nó x conhece o custo para cada vizinho v: c(x,v)
• O nó x mantém Dx = [Dx(y): y є N]
• O nó x também mantém os vetores de distância de seus vizinhos
• Para cada vizinho v, x mantém
Dv = [Dv(y): y є N]
Algoritmo de Bellman-Ford
Para cada nó, x:
1 Inicialização:
2 para todos os nós destinos y em N:
3
Dx(y) = c(x,y) /* se y não é um vizinho então 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 distâncias Dx = [Dx(y): y em N] para w
8
9 loop
10 wait (até que ocorra uma mudança no custo do enlace ao vizinho w ou
11
até a recepção de um vetor de distâncias do vizinho w)
12
13 para cada y em N:
14
Dx(y) = minv{c(x,v) + Dv(y)}
Algoritmo de Bellman-Ford
15
16 if Dx(y) mudou para algum destino y
17
envia um vetor de distâncias Dx = [Dx(y): y em N] para todos os vizinhos
18
19 forever
Algoritmo de Bellman-Ford
Ideia básica:
• Cada nó envia periodicamente sua própria estimativa de vetor de
distância aos vizinhos
• Quando o nó x recebe nova estimativa de DV do vizinho, ele atualiza
seu próprio DV usando a equação B-F:
Dx(y) = minv{c(x,v) + Dv(y)} para cada nó y em N
• Ao menos em condições naturais, a estimativa Dx(y) converge para o
menor custo atual dx(y)
Algoritmo de Bellman-Ford
Iterativo, assíncrono: cada iteração local é causada por:
• Mudança no custo do enlace local
• Mensagem de atualização DV do vizinho
Distribuído:
• Cada nó notifica os vizinhos apenas quando seu DV mudar
• Os vizinhos então notificam seus vizinhos, se necessário
Algoritmo de Bellman-Ford
Exemplo do algoritmo DV
Cada linha é um vetor de distâncias
Cada nó envia seu vetor de distâncias ao seus
vizinhos (setas da figura a seguir)
Após receber as atualizações, cada nó recalcula o
próprio vetor de distâncias
Se houver mudanças, os nós reenviam seus vetores
de distâncias 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 Bellman-Ford
Mudanças no custo do enlace:
Registros na tabela de distâncias de y e z até o destino x:
no tempo t0, y detecta a mudança do custo do enlace, atualiza
seu DV e informa aos seus vizinhos.
no tempo t1, z recebe a atualização de y e atualiza sua tabela.
Calcula um novo custo mínimo para x e envia seu DV aos vizinhos.
no tempo t2, y recebe a atualização de z e atualiza sua tabela
de distância. Menores custos de y não mudam, e daí y não
envia qualquer mensagem a z.
“boas notícias viajam depressa”
Algoritmo de Bellman-Ford
Mudanças no custo do enlace:
“más notícias viajam devagar”
Algoritmo de Bellman-Ford
Mudanças no custo do enlace:
• Más notícias viajam devagar – problema da “contagem ao infinito”!
• 44 iterações antes de o algoritmo estabilizar: Pag. 280 do Kurose
Algoritmo de Bellman-Ford
Reversão envenenada:
• Se Z roteia por Y para alcançar X :
• Z diz a Y que sua distância (de Z) para X é infinita (então Y não roteará até X
via Z)
• Isso resolverá completamente o problema da contagem ao infinito?
Ver Kurose
Algoritmos de roteamento
Cálculo 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 nós da rede (nós que ele sabe que
existem)
No LS, cada nó
Fala com todos os nós (via broadcast)
Informa somente os custos dos enlaces diretamente
ligados a ele
Algoritmos de roteamento
Complexidade
• LS: com n nós, E links, O(NE) mensagens enviadas
• DV: trocas somente entre vizinhos
• Tempo de convergência varia
Tempo de convergência
• LS: algoritmo O(N2) exige mensagens O(NE)
• Pode ter oscilações
• DV: tempo de convergência varia
• Pode haver loops de roteamento
• Problema da contagem ao infinito
Algoritmos de roteamento
Robustez: o que acontece se um roteador funciona mal?
LS:
• Nós podem informar custos de link incorretos
• Cada nó calcula sua própria tabela de roteamento
DV:
• Nó DV pode informar custo de caminho incorreto
• Tabela de cada nó é usada por outros
• Propagação de erros pela rede
Roteamento hierárquico
Em função de duas razões principais
Escalabilidade
Autonomia administrativa
Roteadores são agrupados em sistemas
autônomos (Autonomous Systems - ASs)
Sob um mesmo controle administrativo
Protocolos intrassistema autônomo
Protocolos intersistema autônomo
Exemplo de sistemas autônomos (fonte: Kurose)
Roteamento hierárquico
Protocolo intraAS
Obtém informações sobre os roteadores dentro do
mesmo AS
Protocolo interAS
Obtém informações sobre condições de alcance de
ASs vizinhos
Propaga essas informações a todos os outros
roteadores internos ao AS
Roteamento hierárquico
Exemplo 1
AS1 aprende através do protocolo interAS que a subrede x é alcançável através do AS3 (roteador de borda
1c)
Protocolo interAS propaga essa informação para todos
os roteadores do AS1
Com informações do protocolo intraAS, 1d determina
que sua interface I está no caminho de menor custo
para 1c
1d coloca o registro (x,I) na sua tabela de roteamento
Roteamento hierárquico
Exemplo 2
AS1 aprende através do protocolo interAS que a subrede x é alcançável através do AS3 e do AS2
1d deve determinar para qual roteador encaminhar os
pacotes para a sub-rede x
“Roteamento da batata quente”
AS se livra do pacote (a batata quente) o mais
rápido possível (com o menor custo possível)
Roteamento hierárquico
Etapas da inclusão na tabela de roteamento (fonte: Kurose)
Download