Ver Feed RSS

root@blog:/# chmod o+r *

[Redes] IPv6 Parte 3 - ICMPv6 e Neighbor Discover Protocol

Avaliação: 2 votos, 4,50 média.
Dando continuidade no conteúdo sobre IPv6. Essa parte eu achei extremamente interessante! Além de tirar algumas dúvidas que eu tinha, eu achei muito material e comecei a fazer alguns labs para visualizar "a coisa" acontecendo.

Vamos lá!


ICMPv6



O ICMP do IPv6 é muito semelhante ao ICMP do IPv4, ele ainda tem a função de informar características da rede, realizar diagnóstico e relatar erros no processamento de pacotes. Estes processos são executados utilizando duas classes de mensagens: Erro e Informação

Quando falamos sobre cabeçalhos IPv6 vimos que existem os cabeçalhos de extensão e que eles são identificados no cabeçalho IPv6 pelo campo "Próximo cabeçalho" (Next Header). O ICMP é identificado no campo "próximo cabeçalho" pelo valor 58. Dessa forma teremos um encadeamento de cabeçalhos. É importante ressaltar que o cabeçalho ICMPv6 NÃO É UM cabeçalho de extensão, pois o ICMPv6 é um protocolo de camada 3 e não faz "parte" do IPv6. Os cabeçalhos de extensão são "partes" do IPv6, eles complementam as informações do cabeçalho IPv6, enquanto o ICMPv6 é um protocolo "paralelo".

O ICMPv6 possui o seguinte cabeçalho:


  • Tipo (Type) - Indica o tipo de mensagem;
  • Código (Code) - Oferece algumas informações adicionais para determinados tipos de mensagens.
  • Soma de verificação (Checksum) - É utilizado para detectar dados corrompidos no cabeçalho IPv6.
  • Dados - São apresentadas informações de diagnóstico e erro de acordo com o tipo de mensagem. Essa campo possui tamanho variável.


Apesar de o ICMPv6 ser muito semelhante ao ICMPv4, o ICMPv6 apresenta mais recursos, consequentemente possui mais mensagens, pois acabou "absorvendo" alguns outros protocolos como ARP, RARP e IGMP. Dessa forma o ICMPv6 torna-se responsável por serviços como:

  • Descoberta de vizinhança;
  • Gerenciamento de grupos multicast;
  • Mobilidade IPv6;
  • Descoberta do path MTU.


Vamos ver as mensagens de erro, definidas até o momento, no protocolo ICMPv6:

  • Destination Ureachable (Tipo 1) - Indica falhas na entrega do pacote como endereço ou porta desconhecida ou problemas na comunicação;
  • Packet too big (Tipo 2) - Indica que o tamanho do pacote é maior que a Unidade Máxima de Transmissão (MTU) de um enlace;
  • Time Exceeded (Tipo 3) - Indica que o limite de roteamento ou o tempo de remontagem do pacote foi excedido;
  • Parameter problem (Tipo 4) - Indica erro em algum campo de cabeçalho IPv6 ou que o tipo indicado no campo próximo cabeçalho não foi reconhecido.


Vamos ver as mensagens de informação, definidas até o momento, no protocolo ICMPv6:

  • Echo request (Tipo 128) e Echo reply (Tipo 129) - utilizados pelo comando ping;
  • Multicast Listener Query (Tipo 130)/Report (Tipo 131)/Done (Tipo 132) - Utilizadas no gerenciamento de grupos multicast;
  • Router Solicitation (Tipo 133)/advertisement (Tipo 134), Neighbour Solicitation (Tipo 135)/Advertisement (Tipo 136), Redirect Message (Tipo 137) - Utilizadas com o protocolo Descoberta de Vizinhança;
  • Router Renumbering (Tipo 138) - Utilizada no mecanismo de Re-endereçamento de roteadores;
  • ICMP Node Information Query (Tipo 139)/Response (Tipo 140) - Utilizada para descobrir informações sobre nomes e endereços, são atualmente limitadas a ferramentas de diagnóstico, depuração e gestão de redes;
  • Inverse Neighbor Discovery Solicitation (Tipo 141)/Advertisement (Tipo 142) - Utilizadas em uma extensão do protocolo de descoberta de vizinhança;
  • Version 2 Multicast Listener Report (Tipo 143) - Utilizada no gerenciamento de grupos multicast;
  • Home Agent Addess Discovert Requset (Tipo 144)/Reply (Tipo 145) e Mobile prefix solicitation (Tipo 146)/advertisement (Tipo 147) - Utilizadas no mecanismo de Mobilidade IPv6;
  • Certification Path Solicitation (Tipo 148)/Advertisement (Tipo 149) - Utilizadas pelo protocolo SEND;
  • Multicast Router Advertisement (Tipo 151)/Solicitation (Tipo 152)/Termination (Tipo 153) - Utilizada pelo mecanismo Multicast Router Discovery;
  • FMIPv6 Messages (Tipo 154) - Utilizada pelo protocolo de mobilidade Fast Handovers.



Protocolo de Descoberta de Vizinhanças


O IPv6 utiliza o protocolo de Descoberta de Vizinhanças, que já era utilizado no IPv4, que foi replanejado, aprimorado e expandido. Esse protocolo é utilizado por hosts e roteadores para os seguintes fins:

  • Divulgar o endereço MAC dos nós da rede;
  • Encontrar roteadores vizinhos;
  • Determinar prefixos e outras informações de configuração de rede;
  • Detectar endereços duplicados;
  • Determinar a acessibilidade dos roteadores;
  • Redirecionamento de pacotes;
  • Autoconfiguração de endereços.


Podemos ver que estão listadas ai em cima funções dos protocolos ARP, ICMP e DHCP. Para desempenhar essas funções o protocolo de descoberta de vizinhança se utiliza das mensagens ICMP. Abaixo está a lista das cinco mensagens utilizadas por ele:

  • Router Advertisement - Enviadas periodicamente, ou em resposta a uma Router Solicitation, pelos roteadores da rede para anunciar sua presença em um enlace e na internet;
  • Router Solicitation - Utilizada por hosts para requisitar aos roteadores mensagens Router Advertisements imediatamente;
  • Neighbor Solicitation - Mensagem multicast enviada por um nó para determinar o endereço MAC e a acessibilidade de um vizinho, além de detectar a existência de endereços duplicados;
  • Neighbor Advertisement - Enviada como resposta a uma Neighbor Solicitation, pode também ser enviada para anunciar a mudança de algum endereço MAC dentro do enlace;
  • Redirect - Utilizada por roteadores para informar ao host um roteador mais indicado para se alcançar um destino.


Todas essas mensagens possuem o campo "Máximo de saltos" no cabeçalho IPv6 setado como 255. Dessa forma essa mensagem fica restrita a um único enlace pois, como está configurado o limite de saltos, esse pacote não será encaminhado pelos roteadores. Essas mensagens que possuam um valor máximo de saltos diferente de 255 serão descartadas pelos roteadores.



ARP no IPv6

Como mostrado, a funcionalidade de "Descoberta de Endereços de Camada de Enlaçe", do protocolo ARP, foi incluída no protocolo de Descoberta de Vizinhança. Podemos dar adeus ao ARP e seus broadcast que inundavam a rede, agora isso é feito pela "Descoberta de Vizinhança" utilizando multicast.

De um modo geral, se um Host A quer descobrir o MAC do HOST B ele envia uma mensagem "Neighbour Solicitation" para o endereço de multicast "Solicited-node Multicast " (que é composto pelo prefixo FF02::1:FF00:0/104 e os últimos 24 bits do endereço IPv6 que está sendo consultado) e recebe do HOST B uma resposta "Nighbor Advertisement" contendo o MAC solicitado.

Complicou?!?! Vamos a um exemplo:

  • Você emite um ping, do HOST A, para o HOST B (IP FAC1::2) como você não conhece o MAC será realizada uma consulta;
  • É enviada uam pacote mensagem "Neighbour Solicitation" para o IP de multicast FF02::1:FF00:2 do HOST B.
  • O HOST B envia, em resposta para ao HOST A, um "Nighbor Advertisement" (em unicast) contendo o seu MAC.


Para quem não conhece multicast isso pode parecer um absurdo! "Como ele faz uma consulta MAC a vários destinos usando um endereço que não seja broadcast??" É muito estranho mesmo, mas depois que se entende como o multicast funciona, o broadcast se mostra extremamente obsoleto! Um dia posto algumas coisas aqui sobre multicast!



Descoberta de roteadores e prefixos

Autoconfiguração Stateless

Esse mecanismo possibilita a atribuição automática de endereços unicast, a descoberta de roteadores no mesmo enlace de camada 2 e a atribuição automática de mais alguns parâmetros de rede. Essa atribuição é realizada sem a necessidade de servidores adicionais, apenas com configurações mínimas dos roteadores.

Como no inicio desse processo os hosts não possuem endereços eles utilizam o endereço reservado "link-local" que são gerados com o prefixo FE80::/64 com o MAC 'expandido' da interface. A rede "link-local" está presente em todas as interfaces de qualquer dispositivo que fale IPv6. Essa rede não é roteavel e nem é divulgada por protocolos de roteamento dinâmico mas pode ser utilizada para testes de conectividade normalmente.

Essa descoberta pode ocorrer de duas formas: Consulta por parte de um Host ou Anuncio gratúito de um roteador.


Anúncio Gratuito
Quando há um anuncio gratuito de um roteador, ele envia uma mensagem "Router Advertisement" para o endereço "All-nodes Multicast" (endereço FF02::1) contendo informações necessárias para a autoconfiguração. Com o conteúdo dessa mensagem o host pode auto configurar os seguintes atributos: Gateway padrão; lista de endereços de rede; MTU; o "Máximo de Saltos" (para o cabeçalho IPv6); e as flags "Managed Addess Configuration" e "Stateful Configuration".



Consulta de um Host
Quando há uma consulta por parte do host, é enviado uma mensagem "Router Solicitation" para o endereço "All-routers Multicast" (endereço FF02::2) e os roteadores do segmento respondem com uma mensagem "Router Advertisement".


Vamos explicitar a função das duas flags citadas:

  • Managed Addess Configuration - Indica se os hosts devem ou não utilizar a autoconfiguração stateful para obter endereços;
  • Stateful configuration - Indica se o hosts devem utilizar a auto configuração stateful para obter informações adicionais, como endereços de servidores DNS e outros dados sobre a configuração de rede.

"Então quer dizer que o DHCP morreu?!?!". Não, o DHCP ainda existe...



Autoconfiguração Stateful

A auto configuração statuful é uma alternativa à stateless. Nela é utilizado um servidor DHCPv6 para atribuir os endereços. A autoconfiguração stateful é utilizada quando não há um roteador na rede ou quando o roteador indica, por meio das flags "Stateful configuration" e "Managed Addess Configuration" da mensagem "Router Advertisement".

Qual a real necessidade de utilizar uma autoconfiguração stateful? Atualmente a autoconfiguração stateless não é capaz de distribuir endereços de servidores de DNS, NTP, proxy entre outros, além de possibilitar a definição de políticas de controle de acesso.

Está sendo prevista uma expansão para que a autoconfiguração stateless distribua também endereços de servidores DNS.



No DHCPv6 são utilizadas mensagens UDP para a solicitação/divulgação dos IPv6s. Os clientes utilizam o endereço "link-local" para enviar ou receber mensagens DHCPv6, enquanto os servidores utilizam os endereços Multicast "All-dhcp-agents" (FF02::1:2) ou "All-dhcp-servers" (FF05::1:3) - Estes endereços foram definidos na RFC RFC3315 - para receber as mensagens dos clientes. Como esses endereços Multicast possuem apenas importância local, para receber mensagens de uma rede remoto é necessário a configuração de um Relay DHCP.



Detecção de endereços duplicados.

No IPv4 essa função era feito pelo protocolo ARP utilizando ARPs gratuitos, já no IPv6 isso será feito utilizando mensagens "Neighbor Solicitation" para o endereço "All-nodes Multicast". O detentor de um endereço IPv6 envia uma mensagem "Neighbor Solicitation" e aguarda uma resposta. Caso haja uma resposta ele sabe que o IP que ele utiliza está duplicado



Detecção de vizinhos inacessíveis.

Esse mecanismo é utilizado para comunicação host-a-host, roteador-a-host ou host-a-roteador. Isso é feito monitorando o recebimento de pacotes de confirmação de entrega a um certo vizinho. Essa confirmação pode ser uma resposta a uma mensagem de "Descoberta de Vizinhança" ou algum pacote de camadas superiores a 3. É importante ressaltar que esse monitoramento só é realizado para comunicações unicast. Para esse rastreamento são utilizadas duas tabelas:

  • Neighbor Cache - Mantem uma lista de vizinhos locais para os quais foi enviado tráfego recentemente. Essa lista contem o endereço IP, o endereço MAC, uma flag que identifica se esse IP é um Host ou um Router, se há pacotes na fila para serem enviados a esse destino, a sua acessibilidade e a próxima vez que um evento de detecção de vizinhos está agendado. Essa tabela é "semelhante" a tabela ARP do IPv4.
  • Destination Cache - Mantem informações sobre destinos, locais e/ou remotos, para os quais foi enviado tráfego recentemente. As entradas dessa tabela são atualizadas com informações recebidas por mensagens "Redirect". A tabela Neighbour Cache pode ser considerada como um subconjunto dessa tabela.



Redirecionamento

As mensagens de redirecionamento são quase idênticas as mensagens de redirecionamento no IPv4. Ela são enviadas por roteadores e tem como função redirecionar um host automaticamente para um outro roteador mais apropriado ou para informar ao host que o destino encontra-se no mesmo enlace.

Atualizado 20-01-2010 em 07:53 por Magnun

Categorias
Artigos , Curso de Redes , Artigos , Cursos

Comentários

  1. Avatar de deciojunior
    show

+ Enviar Comentário