IER60808: Endereços IPv6

De MediaWiki do Campus São José
Revisão de 18h12min de 30 de março de 2020 por Msobral (discussão | contribs) (→‎Atividade)
Ir para navegação Ir para pesquisar


Endereços IPv4 têm 32 bits e são capazes de endereçarem até pouco mais de 4 bilhões de hosts, e isso parecia mais do que suficiente quando o protocolo IP foi criado, nos primórdios da Internet. Mas desde os anos 1990, quando se massificou essa rede, constatou-se que os endereços IPv4 se esgotariam num horizonte próximo. Para evitar esse problema, e possibilitar que a Internet continuasse se expandindo (e também por outros motivos), foi criado o protocolo IPv6, cujos endereços têm 128 bits. Essa questão está bem descrita na introdução do livro Laboratório de IPv6:

Considerando que a concepção da Internet data da década de 70 e que, de lá para cá, houve uma explosão inesperada do seu uso, o IPv4 mostrou-se inadequado para acompanhar esta evolução.Uma das deficiências mais apontadas do IPv4 foi o espaço de endereçamento baseado num valor inteiro de 32 bits, que é tipicamente representado por quatro octetos em decimal, sendo possível disponibilizar apenas 4.294.967.296 endereços IPV4 diferentes. Para contornar essa deficiência, inúmeras soluções paliativas foram propostas e adotadas, como por exemplo o NAT (Network Address Solution) e o CIDR (Classless InterDomain Routing). Contudo, à medida que novas tecnologias de redes surgiram e o IP continuava sendo um dos protocolos chaves para sua operação, outras deficiências começaram a ser detectadas, especialmente aquelas referentes à segurança e ao suporte a parâmetros de QoS (Quality of Service) e mobilidade. Como consequência, no inicio da década de 90 é publicada a proposta da nova geração do IP (IPng – IP next generation) ou IPv6. Este novo protocolo traz a solução para muitas das deficiências de seu predecessor, o IPv4, incluindo espaço de endereçamento de 128 bits gerando a possibilidade de 340.282.366.920.938.463.463.374.607.431.768.211.456 endereços disponíveis, suporte a roteamento e segmentação de pacotes na estação origem, suporte a mobilidade e mecanismos de segurança.


Pji3-Number-of-internet-hosts-in-the-domain-name-system.jpg
Número de hosts na Internet mundial registrados no DNS (a quantidade total deve ser bem maior !). As quantidades são expressadas em milhões de hosts. Obtido de: Statista

Endereço IPV6

Um endereço IPV6 possui 128 bits disponíveis para endereçar hosts, possibilitando 340 undecilhões de endereços possíveis. Para se ter uma ideia do que isto representa, se convertêssemos cada IPv6 possível em um cm2, poderíamos envolver toda a superfície do planeta Terra com 7 camadas de endereços..

End1.png

Adoção no Brasil

O Brasil está entre os 10 países com maior adoção de IPv6, segundo o Google:


Endereços IPv6 estão sendo amplamente usados por provedores de acesso, como se pode comprovar em serviços de dados do tipo ADSL e LTE:


Pji3-ipv6-movel.png
Cópia de tela de um celular mostrando o uso de endereço IPv6 em seu link de dados

Atividade

versão para desktop

Para realizar estas atividades serão necessários alguns comandos:

  • Teste com ping6 para endereço de escopo local: deve-se especificar a interface de rede por onde as mensagens do ping6 serão transmitidas:

    ping6 -I eth0 endereço_IPv6_a_ser_pingado

  • Teste com ping6 para endereço de escopo global: não é prciso especificar a interface de rede por onde as mensagens do ping6 serão transmitidas:

    ping6 endereço_IPv6_a_ser_pingado

  • Tabela de rotas:

    route -A inet6

  1. Verifique quais provedores de conteúdo já usam IPv6. Isso pode ser feito com consultas DNS como esta:
    host -t aaaa www.google.com
    
    Algumas sugestões para procura:
    • IFSC
    • UFSC
    • UDesc
    • UOL
    • Epagri
    • Facebook
    • ... e outros !
  2. Em seu computador use o programa ifconfig para identificar o endereço IPv6 associado a sua interface ethernet.
  3. Use o ping6 para testar a comunicação com IPv6 entre seu computador e o de um colega. Há alguma diferença no resultado, em relação ao ping baseado em IPv4 ?
  4. Com o ping6 em execução ative a captura de pacotes com wireshark ou tcpdump. Visualize os pacotes enviados e recebidos pelo ping6 ... identifique os protocolos envolvidos. Qual a diferença em relação ao ping baseado em IPv4 ?
  5. Adicione outro endereço IPv6 ao seu computador. Escolha um endereço formado pelo prefixo AA:BB::/64 e o endereço MAC da sua interface de rede.
  6. Teste novamente com ping6 a comunicação com os computadores de seus colegas.
  7. Assim como no caso de IPv4, existe uma tabela de rotas IPv6 em cada host. Visualize a tabela de rotas IPv6 em seu computador com este comando:
    route -A inet6
    
    ... e procure identificar as subredes ali listadas.
Versão para Android

Para realizar estas atividades serão necessários alguns apps


1. Verifique quais provedores de conteúdo já usam IPv6. Isso pode ser feito com consultas DNS como esta:


Algumas sugestões para procura:
  • IFSC
  • UFSC
  • UDesc
  • UOL
  • Epagri
  • Facebook
  • ... e outros à sua escolha !

2. Em um terminal em seu celular (app Termux) use o programa ifconfig para identificar o endereço IPv6 associado a sua interface wlan0 (se estiver usando wifi) ou rmnet_data0 (se for 4G).

3. Use o programa ping6, no app Termux, para testar a comunicação com IPv6 entre seu computador e o da Ufsc (www.ufsc.br). Há alguma diferença no resultado, em relação ao ping baseado em IPv4 ?

4. Com o ping6 em execução ative a captura de pacotes usando o app Wicap Demo. Visualize os pacotes enviados e recebidos pelo ping6 ... identifique os protocolos envolvidos. Qual a diferença em relação ao ping baseado em IPv4 ?

5. Assim como no caso de IPv4, existe uma tabela de rotas IPv6 em cada host. Usando o app Termux, visualize a tabela de rotas IPv6 em seu celular com este comando:
route -A inet6
... e procure identificar as subredes ali listadas.
Versão para iOS

Para realizar estas atividades serão necessários alguns apps


1. Verifique quais provedores de conteúdo já usam IPv6. Isso pode ser feito com consultas DNS usando o app HE.NET ou iNetTools. Algumas sugestões para procura:

  • IFSC
  • UFSC
  • UDesc
  • UOL
  • Epagri
  • Facebook
  • ... e outros à sua escolha !

2. Identifique o endereço IPv6 associado a sua interface wifi ou 4G (LTE). Veja este tutorial.

3. Use o app Ping para testar a comunicação com IPv6 entre seu computador e o da Ufsc (www.ufsc.br). Há alguma diferença no resultado, em relação ao ping baseado em IPv4 ?

4. Assim como no caso de IPv4, existe uma tabela de rotas IPv6 em cada host. Usando o app HE.NET, visualize a tabela de rotas IPv6 em seu celular ... e procure identificar as subredes ali listadas.

Tipos de Endereços IPV6

O IPV6 possui categorias de endereços, conforme a tabela a seguir:

Tipos de end ipv6.png

  • Endereços Anycast: Um endereço IPv6 anycast é utilizado para identificar um grupo de interfaces, porém, com a propriedade de que um pacote enviado a um endereço anycast é encaminhado apenas a interface do grupo mais próxima da origem do pacote. Os endereços anycast são atribuídos a partir da faixa de endereços unicast e não há diferenças sintáticas entre eles.
  • Endereços Loopback: Endereços aplicados as interfaces loopback dos host; (Verificar com ifconfig)
  • Endereços Link local: Podem ser utilizados apenas no enlace específico onde a interface está conectada, sendo assim não é roteável;
  • Endereços Unique local address Endereço com grande probabilidade de ser globalmente único, utilizado apenas para comunicações locais, geralmente dentro de um mesmo enlace ou conjunto de enlaces. Um endereço ULA não deve ser roteável na Internet global;
  • Endereços Multicast: Endereços multicast são utilizados para identificar grupos de interfaces, sendo que cada interface pode pertencer a mais de um grupo. Os pacotes enviados para esses endereço são entregues a todos as interfaces que compõe o grupo;
  • Endereços Global unicast: Equivalente aos endereços públicos IPv4, o endereço global unicast é globalmente roteável e acessível na Internet IPv6.

Endereços Unicast

Lla.png

Link Local pode ser usado apenas no enlace específico onde a interface está conectada, o endereço link local é atribuído automaticamente utilizando o prefixo FE80::/64. Os 64 bits reservados para a identificação da interface são configurados utilizando o formato IEEE EUI-64. Vale ressaltar que os roteadores não devem encaminhar para outros enlaces, pacotes que possuam como origem ou destino um endereço link-local.


Ula ipv6.png


O endereço ULA é um endereço com grande probabilidade de ser globalmente único, utilizado apenas para comunicações locais, geralmente dentro de um mesmo enlace ou conjunto de enlaces. Um endereço ULA não deve ser roteável na Internet global. Um endereço ULA, criado utilizando um ID global e alocado pseudo-randomicamente, é composto das seguintes partes: Prefixo: FC00::/7; Flag Local (L); se o valor for 1 (FD) o prefixo é atribuído localmente. Se o valor for 0 (FC), o prefixo deve ser atribuído por uma organização central (ainda a definir); identificador global identificador de 40 bits usado para criar um prefixo globalmente único. Identificador da Interface identificador da interface de 64 bits.

Global unicast.png

Atualmente, está reservada para atribuição de endereços a faixa 2000::/3 (001), ou seja, 3 primeiros bits utilizados para registros da faixa 2000. Equivalente aos endereços públicos IPv4, o endereço global unicast é globalmente roteável e acessível na Internet IPv6. Ele é constituído por três partes: o prefixo de roteamento global, utilizado para identificar o tamanho do bloco atribuído a uma rede; a identificação da sub-rede, utilizada para identificar um enlace em uma rede; e a identificação da interface, que deve identificar de forma única uma interface dentro de um enlace.Sua estrutura foi projetada para utilizar os 64 bits mais a esquerda para identificação da rede e os 64 bits mais a direita para identificação da interface.

Endereço Multicast

Multcast.png

O IPV6 não possui endereço broadcast, e sim multicast. Endereços multicast são utilizados para identificar grupos de interfaces, sendo que cada interface pode pertencer a mais de um grupo. Os pacotes enviados para esses endereço são entregues a todos as interfaces que compõe o grupo. Seu funcionamento é similar ao do broadcast, dado que um único pacote é enviado a vários hosts, diferenciando-se apenas pelo fato de que no broadcast o pacote é enviado a todos os hosts da rede, sem exceção, enquanto que no multicast apenas um grupo de hosts receberá esse pacote.

Cabeçalho IPV6

Header ipv6.png

O cabeçalho IPv6 possui menos informações, quando comparado ao cabeçalho IPv4. Várias informações foram removidas do cabeçalho IPV6, como por exemplo o checksum, considerado uma informação desnecessária uma vez que o controle de erro é atribuído às camadas inferiores. Os campos presentes no cabeçalho IPV6 são definidos a seguir:

  • Class of traffic: define a classe de serviço a que o pacote pertence, possibilitando associar diferentes prioridades a pacotes dependendo da exigência de cada aplicação. Com isso, podem-se dar subsídios ao controle da qualidade de serviço (QoS) na rede.
  • Flow Label: proposto para identificar datagramas que fazem parte de um mesmo fluxo, o que facilitaria, em tese, o tratamento dado a esses datagramas na rede. Atualmente esse cabeçalho não tem sido usado, e pode ser que em revisões futuras seja mudado seu propósito.
  • Payload Length: quantidade de bytes contidos na carga útil transportada pelo datagrama (payload).
  • Next Header: informa que há um cabeçalho opcional em seguida.
  • Hop: Número máximo de saltos (roteadores intermediários), da origem ao destino do datagrama, que podem ser percorridos antes do datagrama ser descartado. Em outras palavras, quantidade máxima de encaminhamentos permitidos para o datagrama. Tem papel similar ao campo TTL do IPv4.

Header ipv4.png

Atividade

Versão para desktop
  1. Em seu computador, identifique os tipos de endereços IPv6 que estão configurados nas interfaces.
  2. (video) Compare o endereço do tipo link local da interface ethernet do seu computador, com o endereço MAC dessa mesma interface. Que relação existe entre eles ?
  3. Experimente testar a comunicação entre seu computador e algum outro host fora do IFSC. Por exemplo teste um ping6 com um servidor externo ao IFSC o qual possui endereço IPv6. Explique o resultado desse teste, e relacione-o com o tipo de endereço IPv6 usado por seu computador.
  4. (video) Execute o wireshark para capturar datagramas IPv6 na rede. Procure datagramas cujos endereços de destino sejam:
    • Unicast global
    • Link local
    • Multicast
Versão para Android

Para realizar estas atividades serão necessários alguns apps

  1. Em seu celular, identifique os tipos de endereços IPv6 que estão configurados nas interfaces de rede. Use o app Termux, e então o comando ifconfig.
  2. Compare o endereço do tipo link local da interface wlan0 ou rmnet_data0 do seu celular, com o endereço MAC dessa mesma interface. Que relação existe entre eles ?
  3. Experimente testar a comunicação entre seu computador e algum outro host fora do IFSC. Por exemplo, no app Termux teste um ping6 com um servidor externo ao IFSC o qual possui endereço IPv6 (ex: www.ufsc.br). Explique o resultado desse teste, e relacione-o com o tipo de endereço IPv6 usado por seu computador.
  4. Execute o app Wicap demo para capturar datagramas IPv6 na rede. Procure datagramas cujos endereços de destino sejam:
    • Unicast global
    • Link local
    • Multicast