Skip to content

Cisco CCNAv7 - Descoberta de vizinhos do IPv6 (NDP)

O IPv6 não usa ARP. A descoberta de dispositivos na rede local é feita por outro protocolo, o NDP (Neighbor Discovery Protocol, protocolo de descoberta de vizinhos). Ele é mais completo: além de resolver endereços, ajuda o host a encontrar roteadores e a configurar o próprio endereço. Neste post, você vai conhecer as mensagens do NDP e ver por que ele usa multicast em vez de broadcast.

O NDP usa mensagens do ICMPv6 (o ICMP do IPv6) e é definido na RFC 4861. Ele cumpre várias funções:

FunçãoDescrição
Resolução de endereçosDescobre o MAC de um vizinho a partir do seu IPv6 (o papel do ARP)
Descoberta de roteadoresO host encontra o roteador (gateway) da rede
Descoberta de prefixoO host descobre o prefixo da rede, para montar o seu endereço
Detecção de endereço duplicado (DAD)Verifica se alguém já usa o endereço que o host pretende usar
RedirecionamentoO roteador avisa o host de um caminho melhor

O NDP usa quatro tipos de mensagem ICMPv6 para o dia a dia:

MensagemSiglaTipo ICMPv6Enviada porPara quê
Router SolicitationRS133Host”Tem algum roteador aí?”
Router AdvertisementRA134Roteador”Eu sou o roteador, este é o prefixo da rede”
Neighbor SolicitationNS135Host”Quem tem este IPv6? Qual o seu MAC?” (o papel da requisição ARP)
Neighbor AdvertisementNA136Host”Este IPv6 é meu, e meu MAC é este” (o papel da resposta ARP)
flowchart LR
  A["Host"] -->|"RS<br/>Tem roteador?"| B["Roteador"]
  B -->|"RA<br/>Prefixo e gateway"| A
  A -->|"NS<br/>Quem tem este IPv6?"| C["Vizinho"]
  C -->|"NA<br/>Sou eu, MAC X"| A

Quando um host IPv6 entra na rede, ele pode enviar uma RS para o endereço multicast de todos os roteadores (ff02::2). O roteador responde com uma RA, trazendo o prefixo da rede e o seu próprio endereço (o gateway). Os roteadores também enviam RAs periodicamente, para o endereço multicast de todos os nós (ff02::1).

Com o prefixo recebido na RA, o host pode montar o seu próprio endereço (autoconfiguração, ou SLAAC, assunto do módulo de endereçamento IPv6).

Quando o host precisa do MAC de um vizinho:

sequenceDiagram
  participant A as Host A
  participant B as Host B
  A->>B: NS em multicast. Quem tem o IPv6 de B?
  B-->>A: NA em unicast. Sou eu, meu MAC e este
  1. O host A envia uma NS perguntando pelo IPv6 de B.
  2. O host B responde com uma NA, informando o seu MAC.
  3. O host A guarda o resultado na tabela de vizinhos (o equivalente do cache ARP).

O ARP usa broadcast: todos os dispositivos da rede precisam processar cada pergunta. O IPv6 não tem broadcast. A NS é enviada a um endereço multicast especial, o endereço de nó solicitado (solicited-node multicast address), que alcança apenas os dispositivos que podem ter o endereço procurado.

Como o endereço de nó solicitado é formado

Section titled “Como o endereço de nó solicitado é formado”

Ele sempre começa com ff02::1:ff e termina com os últimos 24 bits (6 dígitos hexadecimais) do endereço IPv6 que se procura.

Exemplo: o alvo é 2001:db8:acad:1::10

PassoResultado
Últimos 24 bits do endereço00:0010 → dígitos 000010
Prefixo fixoff02::1:ff
Endereço de nó solicitadoff02::1:ff00:10
MAC multicast correspondente33:33:ff:00:00:10

O MAC multicast é formado por 33:33 seguido dos últimos 32 bits do endereço IPv6 multicast.

VantagemExplicação
Menos interrupçãoSó os dispositivos cujo endereço termina nos mesmos 24 bits processam a NS, e quase sempre é só o dono
Menos tráfegoReduz o “ruído” na rede, em comparação com o broadcast do ARP

Antes de usar um endereço IPv6, o host faz uma pergunta: “alguém já está usando este endereço?” Para isso, envia uma NS pelo próprio endereço que pretende usar.

ResultadoO que acontece
Ninguém respondeO endereço é único e o host passa a usá-lo
Alguém responde com NAHá duplicidade: o host não usa o endereço

Assim como o ARP tem um cache, o NDP mantém uma tabela de vizinhos.

SistemaComando
Linuxip -6 neigh show
Windowsnetsh interface ipv6 show neighbors
Roteadores Ciscoshow ipv6 neighbors

Exemplo no Linux:

fe80::1 dev eth0 lladdr 00:1a:2b:3c:4d:5e router REACHABLE
2001:db8:acad:1::20 dev eth0 lladdr 00:aa:bb:cc:dd:ee STALE
CampoSignificado
fe80::1O endereço link-local do vizinho (aqui, o roteador)
lladdrO MAC do vizinho
routerIndica que este vizinho é um roteador
REACHABLE / STALEEntrada confirmada recentemente / entrada velha, a revalidar

Para limpar a tabela no Linux: sudo ip -6 neigh flush all.

CaracterísticaARP (IPv4)NDP (IPv6)
Protocolo basePróprio (EtherType 0x0806)ICMPv6 (sobre IPv6)
PerguntaBroadcastMulticast de nó solicitado
RespostaUnicastUnicast
Descobre roteadoresNãoSim (RS e RA)
Detecta endereço duplicadoSó com ARP gratuitoSim (DAD)
TabelaCache ARPTabela de vizinhos

Objetivo: ver a tabela de vizinhos e as mensagens NS e NA.

  1. Veja os seus endereços IPv6:
ip -6 address show

No Windows: ipconfig.

  1. Consulte a tabela de vizinhos:
ip -6 neigh show

No Windows: netsh interface ipv6 show neighbors.

  1. Se houver um vizinho IPv6 (por exemplo, o roteador em fe80::...), faça ping -6 para o seu link-local, informando a interface. No Linux: ping -6 -c 3 fe80::1%eth0 (troque pelo endereço e pela interface reais).
  2. Consulte a tabela de novo.
  1. Inicie a captura e aplique o filtro icmpv6.
  2. Limpe a tabela de vizinhos (sudo ip -6 neigh flush all) e repita o ping -6.
  3. Procure as mensagens Neighbor Solicitation e Neighbor Advertisement.
  4. Na NS, anote o endereço IPv6 de destino e o MAC de destino do quadro.
Campo da NSValor
IPv6 de destino?
MAC de destino?
  1. Monte 2 PCs ligados a um switch. Em Desktop > IP Configuration, configure o IPv6 manualmente (2001:db8:acad:1::10/64 e 2001:db8:acad:1::20/64).
  2. No modo Simulation, filtre ICMPv6 e faça ping 2001:db8:acad:1::20 no PC1.
  3. Observe a NS e a NA antes do ICMPv6 Echo.

Para cada endereço, encontre o endereço de nó solicitado e o MAC multicast:

Endereço IPv6Nó solicitadoMAC multicast
2001:db8:acad:1::10ff02::1:ff00:1033:33:ff:00:00:10
2001:db8:acad:1::5f??
fe80::a8bb:ccff:fedd:eeff??
Ver respostas

Parte 2: o IPv6 de destino da NS é um endereço ff02::1:ffXX:XXXX (nó solicitado), e o MAC de destino começa com 33:33:ff.

Parte 4:

Endereço IPv6Nó solicitadoMAC multicast
2001:db8:acad:1::5fff02::1:ff00:5f33:33:ff:00:00:5f
fe80::a8bb:ccff:fedd:eeffff02::1:ffdd:eeff33:33:ff:dd:ee:ff

Perguntas para fixar:

  • Que protocolo faz, no IPv6, o papel do ARP?
  • Qual é a diferença entre as mensagens NS e NA?
  • Por que o IPv6 usa multicast de nó solicitado em vez de broadcast?
Ver respostas
  • O NDP (Neighbor Discovery Protocol), que usa mensagens ICMPv6.
  • A NS é a pergunta (“quem tem este IPv6?”); a NA é a resposta (“sou eu, e este é o meu MAC”).
  • Para que só os dispositivos prováveis processem a pergunta, reduzindo o tráfego e o processamento, já que o IPv6 não tem broadcast.
  • O NDP (RFC 4861) substitui o ARP no IPv6 e usa mensagens ICMPv6.
  • Mensagens: RS (133) e RA (134), para descobrir roteadores e prefixo; NS (135) e NA (136), para resolver endereços.
  • A NS usa o endereço multicast de nó solicitado (ff02::1:ff + últimos 24 bits do endereço), em vez de broadcast.
  • O DAD verifica se um endereço já está em uso antes de utilizá-lo.
  • A tabela de vizinhos é consultada com ip -6 neigh show, netsh interface ipv6 show neighbors e show ipv6 neighbors.