Prof. Universidade Federal de Mato Grosso do Sul brivaldo@facom.ufms.br 20 de julho de 2017
Visão Geral 1 Introdução 2 3
Camada de Rede transporta segmentos do emissor para o receptor no lado do emissor encapsula os segmentos em datagramas no lado do receptor, entrega segmentos para a camada de transporte camada de protocolos de rede em cada host, roteador roteador examina os campos do cabeçalho de todos os datagramas IP que passam por ele
Duas Funções Chave da Camada de Rede encaminhamento: move pacotes da entrada de um roteador para a saída apropriada do roteador roteamento: determina a rota a ser tomada pelos pacotes da origem para o destino algoritmos de roteamento analogia encaminhamento: processo de pegar uma das rotas do caminho roteamento: processo de planejar uma viagem da origem ao destino
Interação entre Encaminhamento e Roteamento
Serviços Com e Sem Conexão rede de datagramas fornece um serviço de camada de rede sem conexão uma rede de circuitos virtuais fornece um serviço com conexão de forma análoga aos serviços orientados ou não a conexão como TCP/UDP, mas: serviço: host-a-host sem escolha: a rede fornece um ou outro implementação: no core da rede
Circuitos Virtuais O caminho entre a origem e o destino se comportam como um circuito telefônico visa performance necessária ações na rede ao longo do caminho entre a origem e o destino necessita de uma configuração inicial que ocorre antes que os dados possam trafegar cada pacote transporta um indentificador VC (não é o endereço do host destino) cada roteador no caminho determinado entre a origem e o destino mantém um estado para cada conexão que está passando por ele. enlaces, recursos do roteador (largura de banda, buffers) devem ser alocados para o VC (serviços dedicados = serviços previsíveis)
Circuitos Virtuais: Implementação Um VC (Virtual Circuit) consiste de: 1 caminho da origem ao destino 2 número do VC, um número para cada enlace ao longo do caminho 3 entradas nas tabelas de encaminhamento nos roteadores ao longo do caminho pacotes pertencentes a um VC transportam um número de VC (ao invés de um endereço de destino) o número de VC pode mudar em cada enlace novos números de VC vem das tabelas de encaminhamento
Circuitos Virtuais: Tabela de Encaminhamento Figura: Exemplo de tabela de encaminhamento para R1
Circuitos Virtuais: Protocolos de Sinalização usado para configurar, manter e destruir um VC usado em ATM, frame-relay, X.25 não é mais usado na Internet hoje
Rede de Datagramas não precisa de uma configuração inicial na camada de rede roteadores: sem estado sobre a conexão fim-a-fim sem conceito na camada de rede de conexão pacotes são encaminhados usando o endereço do host destino
Rede de Datagramas: Tabela de Encaminhamento
Rede de Datagramas: Tabela de Encaminhamento O que aconteceria se os intevalos não se dividissem de forma tão comportada?
Longest Prefix Matching Longest prefix matching: quando estiver olhando a tabela de encaminhamento para um certo endereço de destino, use o maior prefixo de endereço que casar com o endereço de destino. Intervalo de Endereços Destino Interface 11001000 00010111 00010*** ******** 0 11001000 00010111 00011000 ******** 1 11001000 00010111 00011*** ******** 2 padrão 3
Rede de Datagramas ou VC: por que? Internet (datagrama) dados trocados entre computadores serviço elástico, sem restrição no tempo de requisição vários tipos de enlaces características diferentes de cada um dificuldade em mantes serviços uniformes sistemas finais inteligentes podem se adaptar, realizar controle e se recuperar de erros núcleo de rede simples, complexidade nas bordas Circuito Virtual evoluiu da telefonia similar a uma conversa humana: tempo restrito, requisitos de confiabilidade sistemas finais burros telefones complexidade no núcleo da rede
Arquitetura do Roteador duas funções chave dos roteadores: executar algoritmos/protocolos de roteamento (RIP, OSPF, BGP) encaminhamento de datagramas do enlace de entrada para o de saída
Funções na Porta de Entrada comutação descentralizada determina o destino do datagrama, olhando a porta de saída na tabela de encaminhamento na memória da porta de entrada ( casamento mais ação ) objetivo: processametno da porta de entrada na velocidade da linha enfileiramento: se os datagramas chegarem mais rápido que a taxa de encaminhamento no elemento de comutação
Elemento de Comutação transfere um pacote do buffer de entrada para o buffer de saída apropriado taxa de comutação: taxa em que os pacotes são transferidos da entrada para a saída geralmente mensurado como um múltiplo da velocidade de entrada/saída da linha N entradas: taxa de comutação N vezes a velocidade da linha é desejável três tipos de elementos de comutação
Comutação via Memória primeira geração de roteadores: computadores tradicionais com comutação controlada diretamente pela CPU o pacote é copiado para a memória do sistema velocidade limitada pela largura de banda da memória (cada datagrama cruza o barramento duas vezes)
Comutação via Barramento datagrama da memória da porta de entrada para a memória da porta de saída via barramento compartilhado contenção barramento: velocidade de comutação limitada pelo barramento barramento de 32 Gbps do Cisco 5600: velocidade suficiente para acesso e roteadores enterprise
Comutação por Rede de Interconexão supera as limitações do barramento redes banyan, barra cruzada, e outros mecanismos de interconexão de rede inicialmente desenvolvidos para conectar processadores em multiprocessadores design avançado: fragmenta datagramas em células de tamanho fixo, comuta células no elemento de comutação Cisco 12000: comuta 60 Gbps por uma rede de interconexão
Enfileiramento na Porta de Saída buffering quando taxa de chegada ao comutador (switch) excede a velocidade da linha de saída enfileiramento (atraso) e perda por estouro de buffer na porta de saída!
Quanto de buffer? A regra geral da RFC 3439: a média de enfileiramento é igual ao RTT típico (digamos 250 mseg) vezes a capacidade do enlace C C = 10 Gbps de enlace, logo: 2, 5 Gbit de buffer recomendação mais atual: com N fluxos, o buffer deve ser igual a: RT T C N
Enfileiramento na Porta de Entrada elemento de comutação mais lento que as portas de entrada combinadas pode acabar causando um enfileiramento nas filas de entrada atraso do enfileiramento e perda por overflow do buffer Head-of-the-Line (HOL) blocking: datagramas enfileirados na frente da fila podem evitar que outros se movam para frente
Abstração em Grafos grafo G = (N, E), N = roteadores, E = enlaces N = u, v, w, x, y, z E = (u, v), (u, x), (v, x), (v, w), (x, w), (x, y), (w, y), (w, z), (y, z)
Abstração em Grafos: Custos c(x, x ) = custo do enlace (x, x ), ex.: c(w, z) = 5 custo pode ser sempre 1 ou inversamente proporcional a largura de banda ou inversamente relacionada ao congestionamento Pergunta chave: qual é o menor custo no caminho entre u e z?
Topologia Abstrata de Rede Podemos classificar os algoritmos de roteamento como: algoritmos de roteamento global: calculam o caminho de menor custo entre a origem e o destino usando conhecimento de toda a rede. algoritmos de roteamento descentralizado: calculam o caminho de menor custo de forma iterativa e de uma maneira distribuída. Cada nó possui apenas as informações dos enlaces conectados a ele.
Topologia Abstrata de Rede Podemos ainda subclassificar os algoritmos como: estáticos: quando as rotas mudam muito devagar e dependem de intervenção humana (para editar as tabelas de roteamento). dinâmicos: mudam o roteamento de acordo com a carga da rede ou mudança na topologia (um enlace é rompido ou fica sobrecarregado).
Algoritmo de Estado de Enlace No algoritmo de estado de enlace, a topologia da rede e todos os custos dos enlaces são conhecidos e fornecidos como entrada ao algoritmo LS (Link State). Esse algoritmo de estado de enlace usa o conhecido algoritmo de caminho mínimo criado por Dijkstra que calcula o menor caminho de uma origem u a todos os outros destinos.
Algoritmo do Menor Caminho Supondo essa topologia, qual o menor caminho de u até todos os outros destinos?
Algoritmo de Dijkstra topologia da rede e custos dos enlaces são conhecidos por todos os nós resolvido com uma inundação do estado do elance todos os nós tem a mesma informação calcula o menor caminho de um nó (origem) para todos os outros fornecendo uma tabela de encaminhamento para este nó iterativo: após k iterações, conhece o caminho de menor custo para k destinos
Notação Seja a seguinte notação: D(v): o menor custo do nó de origem ao destino v nesta iteração. p(v): nó anterior (vizinho de v) ao longo do atual menor caminho partindo da origem até v. N : um subconjunto de nós. v está em N se o menor caminho da origem até v é definitivamente conhecido.
Algoritmo de Estado de Enlace (LS) para o Nó Fonte u
Algoritmo de Estado de Enlace (LS): passos Observem que a construção é passo a passo e o conjunto N vai aumentando conforme o caminho final é alcançado.
Algoritmo de Estado de Enlace (LS): resultado
Algoritmo Vetor de Distância Vamos supor o seguinte cenário inicial entre os roteadores x, y e z:
Algoritmo Vetor de Distância
Algoritmo Vetor de Distância
Algoritmo Vetor de Distância
Algoritmo Vetor de Distância: Outro Exemplo Estado inicial das tabelas das redes conectadas a cada roteador.
Algoritmo Vetor de Distância: Outro Exemplo Após a estabilização e trocas das informações entre os vizinhos.
Algoritmo Vetor de Distância quando o custo do enlace muda: nó detecta que um enlace local mudou de custo é feita uma atualização das informações de roteamento e o vetor de distância é recalculado se o vetor de distância mudar, notifique os vizinhos Boas notícias correm rápido
Algoritmo Vetor de Distância quando o custo do enlace muda: neste caso, o algoritmo precisou de 44 iterações para estabilizar (veja o livro texto) como as mas notícias demoram para propagar, isso pode levar a um problema de contagem infinito! envenenamento reverso: se z tem rota para x por y, então z informa y que a distância para x é infinita (logo, y, não vai tentar alcançar x por z) Mas notícias correm devagar
Comparação dos Algoritmos de LS e DV complexidade da mensagem: LS: n nós, E enlaces, O(nE) mensagens enviadas DV: troca mensagens entre os vizinhos apenas (tempo de convergência varia) velocidade de convergência: LS: algoritmo O(n 2 ) precisa de O(nE) mensagens DV: tempo de convergência varia, pode ter laços no roteamento e tem problemas com contagem infinita robustez: o que acontece se um roteador tiver problemas de funcionamento? LS: DV: nó pode publicar custos de enlaces errados cada nó calcula apenas a sua tabela nós podem publicar custos incorretos de caminhos cada tabela dos nós é usada pelos outros (erros são propagados)
Roteamento Hierárquico nosso estudo de roteamento até agora (idealização) todos os roteadores são identicos a rede é plana...não é verdade na prática escalabilidade: mais de 600 milhões de destinos impossível armazenar todas as tabelas de roteamento de destino trocas de tabelas de roteamento inundariam os enlaces! autonomia administrativa Internet = rede de redes cada administrador de rede vai querer controlar o roteamento na sua própria rede
Roteamento Hierárquico agrega roteadores em regiões, sistemas autônomos (AS) roteadores na mesma AS executam o mesmo protocolo de roteamento protocolo de roteamento intra-as roteadores em direfentes AS podem executar diferentes protocolos de roteamento intra-as roteador interno: na borda da sua própria AS tem enlace para roteadores em outras AS
Roteamento Intra-AS também conhecido como protocolos de roteadores internos (IGP) protocolos de roteamento intra-as mais comuns: RIP: Routing Information Protocol OSPF: Open Shortest Path First IGRP: Interior Gateway Routing Protocol (proprietário da Cisco)
RIP (Routing Information Protocol) incluído na distribuição BSD-UNIX em 1982 algoritmo de vetor de distância métrica de distância: #hops (máximo = 15 hops), cada enlace com custo 1 DVs trocadas com os vizinhos a cada 30 segundos em resposta a mensagens (anúncios) cada anúncio: lista com até 25 subredes de destino (endereçamento IP)
RIP: exemplo E a tabela de D:
RIP: falha no enlace e recuperação se nenhum anúncio for recebido dentro de 180 segundos, um vizinho/enlace é declarado como morto rotas por esse vizinho são invalidadas novos anúncios enviados aos vizinhos vizinhos da vez enviam novos anúncios (se suas tabelas tiverem mudado) informações de falha no enlace se propagam rapidamente (?) por toda a rede o envenenamento reverso é usado para prevenir os laços ping-pong (distância infinita = 16 saltos)
RIP: processamento da tabela as tabelas de roteamento do RIP são gerenciadas por processo na camada de aplicação por um daemon chamado route-d anúncios são enviados por pacotes UDP e repetidos periodicamente
Exercício: RIP Seja a figura a seguir. Suponha que cada nó conheça os custos de cada um de seus vizinhos. Usando o algoritmo de vetor de distância mostre a tabela de registros para o nó z.
Exercício: RIP Estado Inicial: Estado Final:
OSPF: Open Shortest Path First disponível publicamente (RFC 2328) usa o algoritmo de estado de enlace dissemina pacotes LS (link state) por inundação cada nó constrói um mapa topológico de todo o sistema usa o algoritmo de Dijkstra para computar as rotas O anúncio do OSPF transporta uma entrada por vizinho anúncios são inundados para todo o AS mensagens OSPF são transportadas diretamente pelo IP (ao invés de TCP ou UDP) O protocolo de roteamento IS-IS é praticamente identico ao OSPF
Comunicação por Inundação O processo de inundação ocorre como na topologia da figura abaixo:
OSPF: funcionamento do algoritmo Na prática, cada switch cacula sua tabela de roteamento diretamente usando os dados coletados pelo pacotes LS usando uma versão do algoritmo de Dijkstra chamada de algoritmo de busca encaminhada (forward search). Além disso, ele mantém duas listas conhecidas como Tentativa e Confirmado. Cada uma dessas listas possui um conjunto de entradas na forma (Destino, Custo, PróximoHop).
OSPF: funcionamento do algoritmo 1 Inicialize a lista de Confirmados apenas com o nó de origem com custo 0 2 Para cada nó adicionado a lista de Confirmados no passo anterior, faça uma busca aos vizinhos (chamados de Next) 3 Para cada vizinho de Next, calcule o custo (Cost) para chegar a esse vizinho como o seu custo mais o custo para chegar ao vizinho. 1 Se o vizinho não estiver nem na lista de Confirmados nem na de Tentativas, adicione uma entrada (Vizinho, Custo, PróximoHop) a lista de Tentativas. 2 Se o vizinho estiver na lista de Tentativas e o seu Custo for menor do que o custo atual listado para o vizinho, substitua a entrada atual por uma nova com (Vizinho, Custo, PróximoHop) com o novo caminho. 4 Se a lista de Tentativas está vazia, pare, caso contrário, selecione a entrada na lista de Tentativas com menor custo e mova para a lista de Confirmados e volte a passo 2.
OSPF: exemplo de execução
OSPF: funcionalidades avançadas (não tem no RIP) segurança: todas as mensagens do OSPF são autenticadas (o que prefine uma intrusão maliciosa) vários caminhos com mesmo custo são permitidos (somente um caminho no RIP) para cada enlace, múltiplas métricas de custo para diferentes TOS (Type of Service) (ex.: enlace de satélite define melhor esforço para baixo e tempo real para alto) suporte integrado a unicast e multicast: OSPF Multicast (MOSPF) usa a mesma topologia base que o OSPF Hierarquia do OSPF em grandes domínios.
Hierarquia do OSPF
Hierarquia do OSPF hierarquia de dois níveis: redes locais, backbone anúncios do estado do enlace somente na área local cada nó tem informações detalhadas da topologia da área local; só conhece a direção (menor caminho) para redes em outras áreas. roteador de borda de área: sumariza a distância das redes dentro da própria área e anuncía para os outros roteadores de Área de Borda. roteador do backbone: executa o roteamento OSPF limitando-se ao backbone. roteadores de borda: conecta com outros AS s.
Exercício: OSPF Dada a rede fornecida na figura a seguir, mostre como o algoritmo de estado de enlace (link-state constroi a tabela de roteamento para o nó D.
Perguntas?