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