Trabalho 10: Simulação de Roteador IPv6

Documentos relacionados
Trabalho 09: Geração de Pacotes e Tabela de Roteamento IPv6

Camada de Rede Fundamentos e Protocolos. 6/7/18 Organizado por Bruno Pereira Pontes brunopontes.com.br

CCNA 2 Conceitos Básicos de Roteadores e Roteamento. Capítulo 8 - Mensagens de Erro e de Controle do Conjunto de Protocolos TCP/IP

CCNA Exploration Endereçamento de Rede IPv4. kraemer

Redes de computadores e a Internet. Prof. Gustavo Wagner. A camada de rede

Nome: Nº de aluno: 3ª Ficha de Avaliação 20/5/2014

Material do instrutor Capítulo 2: Roteamento estático

Compreendendo o endereço local de link do IPv6

Prof. Roitier Campos Gonçalves 1. Aula 02. Introdução aos Conceitos de Roteamento

Curso de extensão em Administração de sistemas GNU/Linux: redes e serviços

Capítulo 5 Sumário. Formato das Mensagens ICMP. Tipos de Mensagens ICMP

Redes de Computadores

Funcionalidades da camada de rede

Redes de Computadores

Redes de Computadores 2 Prof. Rodrigo da Rosa Righi - Aula 6

Roteamento Estático. Protocolos de roteamento. Capítulo 6 do CCNA2

INSTITUTO FEDERAL SP CAMPUS DE PRESIDENTE EPITÁCIO PESQUISA PROTOCOLO ICMP

Capítulo 6: Roteamento Estático. Protocolos de roteamento

Parte 3: Camada de Rede

INFO ARQ REDES. Prova 2 Bimestre. Obs: Questões RASURADAS são consideradas como ERRADAS GABARITO

LABORATÓRIO IPV6.1. INTRODUÇÃO AO IPV6 Documento versão 0.1. Aluno: Paulo Henrique Moreira Gurgel #

Data and Computer Network Endereçamento IP

Laborato rio: Roteamento Esta tico

Compreendendo e configurando o comando ip unnumbered

IER Laboratório 1. Uma pequena rede de escritório ou doméstica

Redes de Computadores Laboratório 2. Estabelecimento de enlaces ponto-a-ponto

Redes de Computadores

PROTOCÓLO ICMP. Trabalho de Redes: IFSP Instituto Federal de ciências e Tecnologia de São Paulo Campus Presidente Epitácio

TE239 - Redes de Comunicação Lista de Exercícios 2

Objetivos: i) Estabelecer um enlace PPP sobre um circuito síncrono

Rotas estáticas do implementar para o exemplo de configuração do IPv6

O Protocolo RIPv2. Prof. José Gonçalves. Departamento de Informática UFES.

Redes de Computadores

Jéfer Benedett Dörr

Configurar IP SLA que segue para as rotas estáticas IPv4 em um interruptor SG550XG

Usando o sibilo e o Traceroute no SG550XG e no SG350XG

Roteamento Prof. Pedro Filho

Aula 5 Camada de rede (TCP/IP):

REDES DE COMPUTADORES

Configurações avançadas de rede

Rede de computadores Protocolos UDP. Professor Carlos Muniz

Arquitectura de Redes

ROUTER. Alberto Felipe Friderichs Barros

Redes de Computadores

Laboratório Uso do Wireshark para examinar quadros Ethernet

Redes de Computadores I

Redes de Computadores

Endereçamento. Novas funcionalidades e redes IPv6

Capítulo 4: Conceitos de Roteamento

Arquitetura TCP/IP. Parte VII Mensagens de controle e erro (ICMP) Fabrízzio Alphonsus A. M. N. Soares

Rede de computadores Protocolos IP. Professor Carlos Muniz

Protocolos da camada de redes. Professor Leonardo Larback

Configuração de exemplo utsando o comando ip nat outside source static

Arquitectura de Redes

Laboratório - Uso do Wireshark para examinar uma captura UDP DNS

Laboratório Usando Wireshark para Examinar Quadros Ethernet

Packet Tracer - Conectar um roteador a uma LAN

Camadas do TCP/IP. Camada de Rede Protocolo IP. Encapsulamento dos Dados. O Protocolo IP. IP visto da camada de Transporte.

Utilizando os Comandos ping e traceroute Estendidos

Pingo D'água: ICMP para Internet das Coisas Aquáticas

CCNA 2 Conceitos Básicos de Roteadores e Roteamento

Caracterização Remota de Comportamento de Roteadores IPv6

Redes TCP-IP. Protocolo ICMP. Pilha TCP/IP. Protocolo ICMP Internet Control Message Protocol. Introdução ao Protocolo ICMP

Redes de Computadores. Protocolos TCP/IP

Redes de Computadores II

Vazamento de rota em redes MPLS/VPN

ping {ICMP-Applics.doc}

Configurar o buraco negro provocado telecontrole do IPV6 com IPv6 BGP

Protocolos básicos de LANs IP (primeiro trabalho laboratorial) FEUP/DEEC Redes de Banda Larga MIEEC 2009/10 José Ruela

Protocolo ICMP Internet Control Message Protocol. Introdução ao Protocolo ICMP. Introdução ao Protocolo ICMP. Introdução ao Protocolo ICMP

Gerenciamento e Interoperabilidade de Redes Prof. João Henrique Kleinschmidt Prática Packet Tracer Configuração de switches e roteadores

Redes de Computadores 2

Configurar o acesso do telnet/ssh ao dispositivo com VRF

CCNA Exploration (Protocolos e Conceitos de Roteamento) Protocolo RIP

Redes de Computadores. Prof. MSc André Y. Kusumoto

FUNDAMENTOS DE REDES DE COMPUTADORES Unidade IV Camada de Rede. Luiz Leão

Protocolos de Interligação de Redes Locais e a Distância Protocolos de Rede. Thiago Leite

RIP Routing Information Protocol

Packet Tracer Usando Traceroute para Descobrir a Rede

Redes de Computadores Nível de Rede

Funcionalidades Básicas do IPv6

Conceito de Serviço Universal. Conceito de Serviço Universal. Arquitetura de uma internet. Hardware básico de uma internet. Serviço universal:

Analise e verifique que as saídas de debugam pacotes do IPv6 DHCP em ASR9k

Volnys Bernal 1. Trabalho Chat UDP. PSI 2653 Meios Eletrônicos Interativos I

Faculdade de Ciências Exatas da PUC SP Sistemas de Informação Laboratório de Redes II - Prof. Julio Arakaki

Redes de Computadores. Aula: Roteamento Professor: Jefferson Silva

Resumo: Dynamic MANET On-demand Routing Protocol (DYMO)

Classes de endereços IP - Os bits de endereços IP são reservados um para a classe de rede e os outros para computador (host).

Curso BCOP. Introdução ao roteamento

STK - Setup da DR800 ETH na rede do cliente

PTC Aula O que há dentro de um roteador? 4.3 O Protocolo da Internet (IP): Repasse e Endereçamento na Internet

Gerenciamento de Redes Linux. Linux configuração de rede

Este documento requer uma compreensão do ARP e de ambientes Ethernet.

Aula 13 Roteamento Dinâmico com Protocolos Link-State (Protocolo OSPF)

ENDEREÇAMENTO PRIVADO PROXY E NAT

Levantamento de informação (Fingerprint)

Datagrama IP. Professor Leonardo Larback

Protocolos de Interligação de Redes Locais e a Distância Camada de Transporte

Redes de Computadores

Arquitetura da Internet TCP/IP

Transcrição:

Trabalho 10: Simulação de Roteador IPv6 Redes de Computadores 1 Descrição Este trabalho pode ser feito por até três acadêmicos. Neste trabalho vocês implementarão dois programas, de forma similar ao trabalho 09. Você pode reutilizar o código de qualquer um do seu grupo do trabalho 09. O primeiro programa criará um pacote ping IPv6 (echo request) e enviará para o segundo programa. Seu segundo programa encaminhará o pacote de acordo com a tabela de roteamento, tanto descartando ele ou encaminhando para outro roteador (outra instância do mesmo programa). Seu programa roteador deve também imprimir o que acontece com cada programa recebido, ex.: encaminhado ou descartado. Como no trabalho 09, as tabelas de roteamento deste trabalho são estáticas e fornecidas como argumento por linha de comando, logo, você não precisa implementar nenhum protocolo de roteamento ou mesmo uma tabela de roteamento. 2 Criando um pacote ping ICMPv6 Escreva um programa em C, pinggen6, para criar e enviar um pacote ICMPv6 válido de echo request. Esse pacote começa com um cabeçalho IPv6 válido assim como no trabalho 09, seguido por um byte 128 (echo request), três bytes zero (isso envia o checksum como zero). Os próximos dois bytes são um identificador selecionado pelo seu programa (o ID do processo retornado por getpid é o suficiente). Os próximos dois bytes são o número de sequência (incrementado de 0). Isso pode ser, opcionalmente, seguido por 8 bytes do horário obtido por gettimeofday. O pinggen6 recebe quatro argumentos por linha de comando: um número de porta local e remoto e dois endereços IPv6. Ele então cria um socket, conecta=o ao número de porta local, cria um pacote como descrito acima e envia-o para ::1 (localhost) e o número de porta UDP remoto fornecido por linha de comando. Ou seja, você está enviando um pacote IPv6 (consistindo de um cabeçalho IPv6 e conteúdo ICMPv6) sobre IPv6 e UDP para o seu programa router6 descrito a seguir. Depois de enviar o pacote, pinggen6 lê do socket e imprime qualquer pacote que for recebido. Por exemplo, $./pinggen6 9876 12345 1:2:3::4 5:6:7:8:9:a:b:c 1

cria um pacote com cabeçalho IPv6 com endereço de origem 1:2:3::4 (que é o mesmo que 1:2:3:0:0:0:0:4) e endereço de destino 5:6:7:8:9:a:b:c e uma carga (payload) ICMP com echo request como descrito acima. Ele envia o pacote para o endereço IPv6 de localhost (::1) da porta UDP 9876 para a porta UDP 12345, e então escuta por qualquer mensagens que cheguem na porta UDP 9876. 2.1 Testando o pinggen6 O programa pinggen6 pode ser testado com ele mesmo. Para isso você precisa de duas janelas e executar os seguintes comandos, um em cada janela: Janela 1: $./pinggen6 9876 12345 1:2:3::4 9:8:7::6 Janela 2: $./pinggen6 12345 9876 9:8:7::6 1:2:3::4 Se o seu comando pinggen6 funcionar corretamente, a segunda chamada (na Janela 2) deve enviar um pacote para o programa rodando na outra janela (Janela 1). 3 Roteamento e Encaminhamento Neste trabalho, como no trabalho 09, a tabela de roteamento é uma série de argumentos por linha de comando, cada um deles no formato: destino/gateway/máscara/interface Cada um dos argumentos é usado para criar uma entrada na tabela de roteamento, na ordem fornecida na linha de comando. Argumentos de linha de comando também são usados para especificar os endereços IP das interfaces do roteador: +interface/local-ipv6/máscara/minha-porta-udp/porta-udp-do-par Essa definição de interface começa sempre com o caractere + e inclui: 1. o nome da interface (usada quando pacotes são encaminhados deve casar com o nome da interface de uma rota específica e deve ter no máximo 100 caracteres) 2. o endereço IPv6 configurado nessa interface 2

3. a máscara de rede correspondente, um número entre 0 e 128 inclusive 4. uma porta UDP local que a interface irá escutar por pacotes chegando 5. uma porta remota UDP em ::1 no qual essa interface enviará pacotes Os dois tipos de argumentos podem ser fornecidos em qualquer ordem na linha de comando. Somente a ordem de entrada para a tabela de roteamento é significante. Para escutar em diferentes interfaces (ex.: receber diferentes conexões por sockets em diferentes portas UDP), seu programa deve trabalhar tanto com múltiplas threads (recomendado, mas um pouco mais difícil) ou múltiplos processos (bem mais simples de implementar). Multiplas threads são criadas com pthread_create e múltiplos processos com fork. Se você usar pthreads, você precisará passar o parâmetro -lpthread ao gcc para fazer o link com o seu código, ex.: $ gcc -o router6 router6.c -lpthread 4 Exemplo Eu vou simular uma topologia de rede simples com dois hosts e dois roteadores (Figura 1). Cada roteador tem duas interfaces, uma conectada a um host e outra ao outro roteador. Essa rede simples precisa de três números em redes IPv6. Eu vou usar 2001:2:3:4::/64, 2002:3:4:5::/64 e 2003:4:5:6::/64. Figura 1: Topologia ligando dois roteadores e dois hosts usando endereços IPv6 e portas UDP. 3

Para rodar os quatro programas a seguir ao mesmo tempo, eu abrirei 4 janelas de terminal diferentes e executar cada comando em uma janela: $./router6 +eth0/2001:2:3:4::1/64/12345/9876 2001:2:3:4::/2001:2:3:4::2/64/eth0 +eth1/2002:3:4:5::1/64/12346/12347 2002:3:4:5::/2002:3:4:5::2/64/eth1 2003:4:5:6::/2002:3:4:5::2/64/eth1 $./router6 +eth0/2002:3:4:5::2/64/12347/12346 2002:3:4:5::/2002:3:4:5::1/64/eth0 +eth1/2003:4:5:6::1/64/12348/9875 2003:4:5:6::/2003:4:5:6::2/64/eth1 2001:2:3:4::/2002:3:4:5::1/64/eth0 $./pinggen6 9876 12345 2001:2:3:4::2 2003:4:5:6::2 $./pinggen6 9875 12348 2003:4:5:6::2 2001:2:3:4::2 Com esses comandos, o pacote do primeiro pinggen deve iniciar e ser entregue ao primeiro roteador e depois para o segundo roteador e finalmente ao segundo host. Se o segundo host não estiver em executação ainda, o pacote será descartado pelo UDP. Quando o segundo host for iniciado, o ping deve viajar todo o caminho até o primeiro host, onde será ignorado (a não ser que você tenha um tempo extra e queira trabalhar um pouco mais, nesse caso, seu código deve responder ao echo request com o echo reply correspondente). Note que o número da porta UDP correspondente a cada interface simulada deve ser único, uma vez que o socket deve ser vinculado com uma porta. Depois de receber cada pacote, seu roteador deve imprimir exatamente uma linha, começando com: forwarding 2001:2:3:4::2 to next hop 2002:3:4:5::1 on eth0 ou dropping 2001:2:3:4::5 Cada mensagem deve ser seguida de detalhes adicionais como no route ou (opcionalmente) Hop Limit zero. 5 Resultados Por favor siga os exemplos anteriores e relate os resultados do seu analisador de tabelas de roteamento (e faça um pequeno texto explicativo, README). Escreva seu código fonte para pinggen6.c e router6.c (e quaisquer outros códigos ou arquivos de cabeçalho), coloque tudo em um único arquivo.zip e envie. 4

6 Opcional Se você tiver um pouco de tempo extra, você é bem vindo para implementar pacotes de echo reply ICMPv6 válidos em resposta aos pacotes echo request. Veja a RFC4443 1 para detalhes. Se você incluir o tempo (os 8 bytes adicionais de gettimeofday) no seu echo request, enquanto, quando você receber o echo reply poderá imprimir o tempo resultante do round-trip time. Neste trabalho, o echo reply deve ter o mesmo payload que o echo request, ou seja, o sistema que vai gerar o echo reply deve copiar o payload que veio no echo request. Você também é bem vindo para decrementar o número limite de hop s quando encaminhar um pacote até que ele chegue a zero. Se você for fazer isso, você precisará dar suporte a um quinto campo opcional no pinggen6, especificando o limite de hop s (se não for especificado, use 64). Se você decrementar o hop limite e discartar pacotes, você também precisará enviar a origem um pacote de destino inalcançável. Isso permitirá que você implemente a funcionalidade do traceroute. Você é bem vindo para implementar checksums. Veja a Seção 8.1 da RFC 2460 2 para mais detalhes. 1 https://tools.ietf.org/html/rfc4443 2 https://tools.ietf.org/html/rfc2460#section-8.1 5