Algoritmo de Dijkstra - mit

Propaganda
Aula 20
Roteamento em Redes de Dados
Eytan Modiano
MIT
1
Roteamento
• Deve escolher rotas para vários pares origem, destino (pares O/D) ou
para várias sessões.
– Roteamento datagrama: a rota é escolhida para cada pacote
independentemente.
Usando roteamento datagrama é fácil utilizar enlaces separados .
– Roteamento Circuito Virtual: a rota é escolhida de sessão para
sessão.
– Roteamento estático: a rota é escolhida de forma já estabelecida
entre pares O/D.
2
Roteamento É Um Problema Global
• Roteamento estático não é desejável.
• Roteamento datagrama é uma forma natural para dividir o tráfego.
– Como?
3
Roteamento Pelo Menor Caminho
• Cada enlace tem um custo que reflete:
– O comprimento do enlace;
– O atraso no enlace;
– Congestionamento;
– $$ custo.
• Custo pode variar ao longo do tempo.
• O comprimento de uma rota é a soma dos custos ao alongo da rota.
• O caminho mais curto é o caminho de comprimento mínimo.
• Algoritmos do menor caminho (Shortest Path):
– Bellman-Ford: versões centralizada e distribuída;
– Algoritmo de Dijkstra;
– Muitos outros.
4
Grafos Dirigidos (dígrafos)
• Um grafo dirigido (dígrafo) G = (N,A) é um conjunto finito não vazio
de N nós e um conjunto de pares de nó ordenados A denominados
arcos dirigidos.
• Caminho Dirigido: (4, 2, 1, 4, 3, 2)
• Ciclo dirigido: (4, 2, 1, 4)
• Redes de dados são melhor representadas com dígrafos, embora
tipicamente os enlaces tendem a serem bi-direcionais (custo pode
diferir em cada direção).
– Para simplificar utilizaremos enlaces bi-direcionais com mesmo
custo nos nossos exemplos.
5
Algoritmo Bellman Ford
• Determine os caminhos mais curtos, a partir de uma dado nó fonte,
digamos nó 1, para todos os outros nós.
• Idéia geral:
– Primeiro ache o enlace mais curto,
– Então o shortest path de no máximo dois enlaces etc.
– Seja dij=∞ se (i,j)não é um arco.
• Seja Di(h) a distância mais curta de 1 para i usando no máximo h
arcos.
– Di(1) = d1i ; i≠1 D1(1) = 0
– Di(h+1) = min {j} [Dj(h) + dji] ;i≠1 D1(h+1) = 0
• Se todos os pesos são positivos, o algoritmo termina em N-1 passos.
6
Exemplo Bellman Ford
7
Bellman Ford Distribuído
•
•
•
•
Custo do enlace pode variar com o tempo.
– Mudança nas condições do tráfego.
– Falhas nos enlaces.
– Mobilidade.
Cada nó mantém sua própria tabela de roteamento.
– Necessário atualizar a tabela periodicamente para refletir as mudanças na
rede.
Seja Di a distância mais curta do nó i para o destino.
– Di = min {j} [Dj + dij]: equação de atualização.
Cada nó (i) periodicamente atualiza os valores de Di usando a equação de
atualização.
– Cada nó mantém os valores de dij para os seus vizinhos, como também os
valores de Dj recebidos de seus vizinhos.
– Utilizando estes valores calcula Di e envia o novo valor de Di para seus
vizinhos.
– Se não ocorreram mudanças na rede,o algoritmo irá convergir para os
caminhos mais curtos no máximo em N passos.
8
Reação Lenta a Falhas no Enlace
• Inicia com D3=1 e D2=100.
Na prática, às vezes os comprimentos
dos enlaces mudam.
– Suponha que o enlace entre 3 e
1 falhe (ou seja, d31=infinity).
– No passo seguinte o nó 2 irá atualizar: D2 = d23+D3 = 4.
– Serão necessárias aproximadamente 100 iterações antes que o nó 2
possa convergir para a rota correta para o nó 1.
• Possíveis soluções:
– Propagar também as informações de rotas;
– Esperar antes de rotear novamente para um caminho de custo
crescente,
• O nó próximo ao enlace que falhou deveria anunciar que D=infinito
por algum tempo para evitar caminhos fechados.
9
Instabilidade
Quando as rotas mudam devido às alterações nas condições de tráfego,
afetam as cargas nos enlaces, e portanto as rotas podem oscilar.
10
Instabilidade
• Havendo um valor definido independente do fluxo no enlace ajuda a
prevenir este problema.
• Atualizações não síncronas também ajudam.
11
Algoritmo de Dijkstra
•
•
•
•
Determine o enlace mais curto a partir de um determinado nó fonte para todos os
outros nós.
– Requer pesos nos arcos (enlaces) não negativos.
O algoritmo trabalha em estágios:
– Estágio k: os k nós mais próximos são determinados;
– Estágio k+1:A partir dos k nós mais próximos ao nó fonte determinar o nó k+1
mais próximo.
Observação importante: O caminho para o nó k+1 mais próximo pode incluir somente
os nós que pertencem ao conjunto dos k nós.
Seja M o conjunto dos nós já incorporado pelo algoritmo.
– Inicia com Dn = dsn para todo n (Dn = menor distancia de n para o nó fonte).
– Repete até que M=N
• Ache o nó w∉M que tenha a próxima menor distância para o nó fonte.
• Adicione w para M.
• Atualize as distâncias: Dn = min [Dn, Dw + dwn] (para todos os nós n ∉ M).
– Observe que a atualização de Dn precisa ser feita somente para os nós que ainda
não estão em M e que atualização requer somente o calculo de uma nova distância
indo através do novo nó w que foi adicionado.
12
Exemplo Dijkstra
13
Implementação do Algoritmo de Dijkstra
• Versão Centralizada: Um único nó obtém as informações de topologia
e calcula as rotas.
– As rotas podem ser difundidas para o resto da rede.
• Versão Distribuída: Cada nó i difunde {dij para todo j} para todos os
outros nós na rede; todos os outros nós podem então calcular os
caminhos mais curtos para cada outro nó.
– O protocolo Caminho mais curto sem laços (Open Shortest Path
First- OSPF) é usado na Internet
14
Roteamento na Internet
• Sistema Autônomo (AS)
– A Internet é dividida em AS’s onde cada um é controlado por uma
única autoridade.
• O protocolo de roteamento é classificado em duas categorias
– Protocolos Internos - Operam dentro de um AS.
– Protocolos externos -Operam entre AS’s.
• Protocolos Internos
– Tipicamente utilizam algoritmos do caminho mais curto.
• Vetor Distância:
– Baseado no protocolo de estado do enlace de Bellman-ford
distribuído.
– Baseado no Dijkstra “distribuído”.
15
Protocolos Vetor Distância
• Baseado no Bellman-Ford distribuído.
– Nós trocam informações das tabelas de roteamento com seus
vizinhos.
• Exemplos:
– Routing information protocols (RIP)
• A métrica usada é contador de saltos (enlaces) (dij=1).
• As informações de roteamento são trocadas a cada 30 segundos.
– Interior Gateway Routing Protocol (IGRP)
• Protocolo proprietário Cisco.
• A métrica considera a carga.
• Dij ~ 1/(µ−λ) (estima ao atraso através do enlace).
• Atualiza a cada 90 segundos.
• Tem capacidade de roteamento multi-caminho.
16
Protocolos Estado do Enlace
• Baseado no algoritmo de caminho mais curto de Dijkstra.
– Elimina laços;
• Roteadores monitoram o estado de seus enlaces de saída.
– Roteadores difundem o estado de seus enlaces no AS.
– Todo nó conhece o estado de todos os enlaces e pode calcular todas
as rotas usando o algoritmo de Dijkstra.
• Nós enviam pacotes para o próximo nó ao longo da rota com o
endereço de destino do pacote.O próximo nó irá procurar pelo
endereço na tabela de roteamento.
• Exemplo: Open Shortest Path First (OSPF) de uso comum na Internet.
• Protocolo de estado do enlace tipicamente gera menos tráfego de
“controle” que aqueles de Vetor distância Link.
17
Roteamento Entre-Domínios
• Usados para rotear pacotes através de diferentes AS’s.
• Opções:
– Roteamento estático – rotas configuradas manualmente.
– Roteamento Vetor-Distância:
• Exterior Gateway Protocol (EGP);
• Border Gateway Protocol (BGP).
• Problemas
– Que “métrica” de custo utilizar para o roteamento Vetor-Distânica
• Problemas quanto a políticas: O provedor de rede A pode não
requerer que pacotes de B sejam roteados através de sua rede ou
os provedores de rede podem ter um acordo.
• Problemas de custo: Provedores de rede podem cobrar uns aos
outros para entregar pacotes.
18
Pontes, Roteadores & Gateways
• Uma ponte é usada para conectar vários segmentos de redes locais.
– Roteamento na camada 2 (Ethernet)
– Não conhece o endereço
– Vários níveis de sofisticação:
• Pontes mais simples somente enviam pacotes;
• Pontes inteligentes são semelhantes aos roteadores.
• Um roteador (para rotear os pacotes) usa o endereço de camada de
rede.
– Entre dois Sistemas Autônomos.
– Usando o mesmo protocolo (por ex.: IP, ATM).
• Um Gateway conecta duas redes usando diferentes protocolos,
– Conversão de protocolos.
• Esta definições são freqüentemente trocadas mas estão evoluindo!
19
Pontes, Roteadores & Gateways
20
Download