# Neighbor Discovery Protocol

Protocolo de Descoberta de Vizinhos (do inglês: Neighbor Discovery Protocol - NDP) é um padrão do conjunto de protocolos de comunicação TCP/IP usado com o IPv6, que opera na camada de rede do modelo Internet (RFC 1122), responsável por seguintes funções de configuração e descoberta:
* Autoconfiguração de endereço dos nós;
* Descoberta de outros nós na rede local;
* Determinação de endereços de outros nós;
* Detecção de endereços duplicados;
* Localização de roteadores e de servidores DNS disponíveis;
* Descoberta de prefixos de endereços, e;
* Manutenção da informação sobre os outros nós vizinhos que estejam ativos
O protocolo define cinco tipos diferentes de pacotes ICMPv6 para realizar funções para IPv6 similares para aos protocolos do IPv4 Address Resolution Protocol (ARP) e dos recursos Router Discovery e Router Redirect de seu Internet Control Message Protocol, ou ICMP. Além disso, ele oferece muitas outras melhorias em relação a seus similares do IPv4, como se vê na seção 3.1 da RFC 4861. Por exemplo, ele inclui Neighbor Unreachability Detection (NUD), ou detecção de vizinhos inalcançáveis. Por isso, melhora a robustez da entrega de pacotes na presença de problemas em roteadores ou links, ou de nós móveis.
A extensão do protocolo Inverse Neighbor Discovery (IND), ou "descoberta inversa de vizinhos" (RFC 3122), permite que os nós determinem e anunciem um endereço IPv6 correspondente a um dado endereço da camada de enlace de dados, de modo similar ao Reverse ARP para IPv4.O SEND, ou protocolo seguro para descoberta de vizinhos, uma extensão do NDP, usa CGA (ou endereços gerados criptograficamente) e RPKI (ou recursos de criptografia de chave pública) para trazer segurança ao NPD com um método criptográfico que é independente do IPSec. O ND Proxy (Neighbor Discovery Proxy) oferece um serviço similar ao Proxy ARP do IPv4, e permite fazer bridges ou pontes de rede, de múltiplos segmentos de rede em um único prefixo de sub-rede, quando não é possível estabelecer pontes na camada de enlace.

## Funções

O NDP define cinco tipos de pacote ICMPv6 para fins de solicitação de roteador, anúncio de roteador, solicitação de vizinho, anúncio de vizinho e redirecionamentos de rede.

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

    Com as mensagens de solicitação de roteador, os hosts fazem consultas para localizar roteadores em um link anexado. Os roteadores que encaminham pacotes que não foram endereçados a eles, geram anúncios de roteador imediatamente após o recebimento dessa mensagem em vez de no próximo horário agendado.

### Anúncio do roteador (Tipo 134)

    Periodicamente, ou em resposta a uma mensagem de solicitação de roteador, os roteadores anunciam suas presenças juntos fornecendo diversos parâmetros de link e Internet.

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

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

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

    Anúncios de vizinho são usados pelos nós para responder a uma mensagem de solicitação de vizinho.

### Redirecionar (Tipo 137)

    Os roteadores podem informar aos hosts sobre um roteador de primeiro salto melhor para um destino.
Essas mensagens são usadas para fornecer as seguintes funcionalidades:
* Descoberta de roteador: os hosts podem localizar roteadores que residem em links anexados.
* Descoberta de prefixo: os hosts podem descobrir os prefixos de endereço que estão no link para links anexados.
* Descoberta de parâmetro: os hosts podem encontrar os parâmetros de link (a unidade máxima de transmissão por exemplo).
* Configuração automática de endereço: configuração opcional de endereços sem estado das interfaces de rede.
* Resolução de endereço: mapeamento entre endereços IP e endereços de camada de link.
* 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 opções de servidor DNS recursivo (RDNSS) e lista de pesquisa DNS (DNSSL) por meio de anúncio de roteador (RA). Este é um padrão proposto desde 2010 e atualizado em março de 2017, mas não é compatível com todos os clientes.
* Redirecionamento de pacotes para fornecer uma rota de próximo salto melhor para determinados destinos.
A IANA mantém uma lista de todas as opções NDP atuais à medida que são publicadas.