# Neighbor Discovery Protocol

O Protocolo de Descoberta de Vizinhos (NDP), ou simplesmente Descoberta de Vizinhos (ND), é um protocolo do conjunto de protocolos de Internet usado com a versão 6 do Protocolo de Internet (IPv6).$^{(§1)}$ Ele opera na camada de internet do modelo de Internet, e é responsável por reunir várias informações necessárias para a comunicação de rede, incluindo as configurações de conexões locais, servidores de nomes de domínio, e gateways.
O protocolo define cinco tipos de pacotes da versão 6 do Protocolo de Mensagens de Controle da Internet (ICMPv6) para executar funções para a versão 6 do Protocolo de Internet (IPv6) semelhantes aos protocolos de Resolução de Endereços (ARP) e de Descoberta de Roteadores e de Redirecionamento de Roteadores do Protocolo de Mensagens de Controle da Internet (ICMP) para a versão 4 do Protocolo de Internet (IPv4). Ele fornece muitas melhorias em relação às suas contrapartes da versão 4 do Protocolo de Internet (IPv4).$^{(§3.1)}$ Por exemplo, ele inclui a Detecção de Vizinhos Inacessíveis (NUD), melhorando assim a robustez da entrega de pacotes na presença de roteadores ou links com falhas, ou nós móveis.
A extensão de Descoberta de Vizinhos Inversa (IND) do protocolo permite que os nós determinem e anunciem um endereço da versão 6 do Protocolo de Internet (IPv6) correspondente a um determinado endereço da camada de enlace, semelhante ao Protocolo de Resolução de Endereços Inversa (InARP) para a versão 4 do Protocolo de Internet (IPv4).
O Protocolo de Descoberta de Vizinhos Segura (SEND), uma extensão de segurança do Protocolo de Descoberta de Vizinhos (NDP), usa Endereços Gerados Criptograficamente (CGA) e a Infraestrutura de Chave Pública de Recursos (RPKI) para fornecer um mecanismo alternativo para proteger o Protocolo de Descoberta de Vizinhos (NDP) com um método criptográfico independente da Segurança do Protocolo de Internet (IPsec). O Proxy de Descoberta de Vizinhos (ND Proxy) fornece um serviço semelhante ao do Protocolo de Resolução de Endereços em Proxy (Proxy ARP) da versão 4 do Protocolo de Internet (IPv4) e permite a ponte entre vários segmentos de rede dentro de um único prefixo de sub-rede quando a ponte não pode ser feita na camada de enlace.

## Funções

O Protocolo de Detecção de Vizinhos (NDP) define cinco tipos de pacotes da versão 6 do Protocolo de Mensagens de Controle de Internet (ICMPv6) para fins de solicitações de roteadores, anúncios de roteadores, solicitações de vizinhos, anúncios de vizinhos e redirecionamentos de redes.

### Solicitação de Roteador (Tipo 133)

Os hosts consultam com mensagens de Solicitação de Roteador para localizar roteadores em um link conectado.$^{(§3)}$ Os roteadores que encaminham pacotes que não são endereçados a eles geram Anúncios de Roteador imediatamente após o recebimento desta mensagem, em vez de no próximo horário agendado.

### Anúncio de Roteador (Tipo 134)

    Os roteadores anunciam sua presença junto com vários parâmetros de link e Internet periodicamente ou em resposta a uma mensagem de Solicitação de Roteador.

### Solicitação de Vizinhos (Tipo 135)

    As solicitações de vizinhos são usadas pelos nós para determinar o endereço da camada de enlace de um vizinho ou para verificar se um vizinho ainda pode ser acessado por meio de um endereço da camada de enlace armazenado em cache.

### Anúncio de Vizinho (Tipo 136)

    Os anúncios de vizinhos são usados por nós para responder a uma mensagem de Solicitação de Vizinho, ou para fornecer novas informações rapidamente mesmo que não solicitados.

### Redirecionamento (Tipo 137)

    Os roteadores podem informar os hosts sobre um melhor roteador de primeiro salto para um destino.
Essas mensagens são usadas para fornecer a seguinte funcionalidade:
* Descoberta de roteadores: os hosts podem localizar roteadores que residem em links conectados.
* Descoberta de prefixo: os hosts podem descobrir prefixos de endereços que estão no link para links anexados.
* Descoberta de parâmetros: os hosts podem encontrar parâmetros de links (por exemplo, a Unidade de Transmissão Máxima – MTU).
* Autoconfiguração de endereço: configuração de endereços de interfaces de redesem estado opcional (ver Endereço IPv6 § Configuração automática de endereço sem estado).
* Resolução de endereços: mapeamento entre endereços de Protocolo de Internet (IP) e endereços da camada de enlace.
* Determinação do próximo salto: os hosts podem encontrar roteadores do próximo salto para um destino.
* Detecção de inacessibilidade de vizinho (NUD): determina que um vizinho não está mais acessível no link.
* Detecção de endereço duplicado (DAD): os nós podem verificar se um endereço já está em uso.
* Atribuição de Servidor do Sistema de Nomes de Domínios Recursivo (RDNSS) e Lista de Pesquisa do Sistema de Nomes de Domínios (DNSSL) por meio de opções de anúncio de roteador (RA). Este é um padrão proposto desde 2010 e atualizado em março de 2017, mas não é suportado por todos os clientes.
* Redirecionamento de pacotes para fornecer uma melhor rota de próximo salto para determinados destinos.
A Autoridade para Atribuição de Números da Internet (IANA) mantém uma lista de todas as opções atuais do Protocolo de Descoberta de Vizinhos (NDP) à medida que são publicadas.

## Exemplo

Dois computadores, A e B, estão conectados à mesma rede de área local sem nenhum gateway ou roteador interveniente. A tem um pacote para enviar ao endereço de Protocolo de Internet (IP) 2001:db8::55, que por acaso é o endereço de B.
Antes de enviar o pacote para B, A cria um endereço de multicast de nó solicitado anexando os 24 bits menos significativos do endereço de B ao prefixo ff02::1:ff00:0/104, que é ff02::1:ff00:55 e cria um endereço de Controle de Acesso ao Meio (MAC) de multicast de nó solicitado anexando os 24 bits menos significativos do endereço de multicast de nó solicitado de B ao prefixo 33:33:FF:xx:xx:xx, que é 33:33:FF:00:00:55. A envia uma mensagem de solicitação de vizinho solicitando uma resposta para 2001:db8::55 (endereço de Protocolo de Internet (IP) de destino ff02::1:ff00:55 e endereço de Controle de Acesso ao Meio (MAC) de destino 33:33:FF:00:00:55), que é aceita por B, que está escutando em seu próprio endereço de multicast de nó solicitado na rede de área local. B responde com uma mensagem de anúncio de vizinho contendo seus endereços de Controle de Acesso ao Meio (MAC) e de Protocolo de Internet (IP). A recebe a resposta e envia o pacote no link com o endereço de Controle de Acesso ao Meio (MAC) de B.
Normalmente, os nós de rede mantêm um cache de consulta que associa endereços de Protocolo de Internet (IP) e de Controle de Acesso ao Meio (MAC). Neste exemplo, se A tivesse a consulta armazenada em cache, então não precisaria transmitir a solicitação do Protocolo de Descoberta de Vizinhos (NDP). Além disso, quando B recebesse a solicitação, ele poderia armazenar em cache a consulta para A, de modo que se B precisasse enviar um pacote para A mais tarde, ele não precisaria usar o Protocolo de Descoberta de Vizinhos (NDP) para consultar seu endereço de Controle de Acesso ao Meio (MAC). Finalmente, quando A recebe a resposta do Protocolo de Descoberta de Vizinhos (NDP), ele pode armazenar em cache a consulta para futuras mensagens endereçadas ao mesmo endereço de Protocolo de Internet (IP).