Qué es NDP (Neighbor Discovery Protocol)?

Qué es NDP: NDP en redes significa protocolo de descubrimiento de vecinos.

Así como IPv4 usa ICMP, IPv6 también define el protocolo ICMP (ICMPv6). Sin embargo ICMPv6 consigue llegar más lejos que ICMPv4, incorporando funciones realizadas por otros protocolos diversos en IPv4. Por ejemplo, con IPv4, ARP funciona como un protocolo separado; con IPv6, el protocolo de descubrimiento de vecinos (NDP) es parte de ICMPv6, realiza las mismas funciones.

Funciones de NDP

Neighbor MAC Discovery (Descubrimiento de MAC Vecina): Un host IPv6 en una red LAN necesita aprender la dirección MAC del otro host en la misma subred. NDP emplaza a ARP de IPv4 proveyendo mensajes que reemplazan al ARP Request y ARP Reply.

Router Discovery (Descubrimiento de Routers): Los hosts aprenden el direccionamiento IPv6 de los routers IPv6 disponibles en la misma subred.

SLAAC: Cuando se usa SLAAC (Stateless Address Auto Configuration), el host usa los mensajes NDP para aprender la subred (prefijo) usado en el enlace además de la longitud del prefijo.

DAD: Antes de usar una dirección IPv6, los hosts usan NDP para realizar el proceso DAD (Duplicate Address Detection ó en español, Detección de Direcciones Duplicadas), para asegurarse que ningún otro host usa la misma dirección IPv6 antes de intentar usarla.

En resumen:

  • Descubre las MAC vecinas
  • Descubre los routers vecinos
  • Aprende las subredes y su longitud de prefijo
  • Verifica que no esté duplicada dirección la IPv6 antes des usarla
FunciónMensaje del ProtocoloQuien Descubre la InformaciónQuién Envía la InformaciónInformación Enviada
Descubrimiento del RouterRS and RACualquier host IPv6Cualquier router IPv6Direcciones Link-local IPv6 del router
Descubrimiento del Prefijo/longitudRS and RACualquier host IPv6Cualquier router IPv6Prefijo(s) y longitud de los prefijos asociados usados en el enlace local
Descubrimiento del VecinoRS and RACualquier host IPv6Cualquier router IPv6Dirección de la capa de enlace (por ejemplo la dirección MAC) usada por un vecino
Detección de Direcciones Duplicadas (DAD)RS and RACualquier host IPv6Cualquier router IPv6Confirmación simple cuando una dirección unicast ya está en uso

Descubrimiento de Direcciones del Enlace Vecino con Mensajes NDP NS y NA

NS y NA son mensajes que envía NDP.

Neighbor Solicitation (NS): Este mensaje le pregunta a un host con una dirección IPv6 en particular (la dirección de destino) que responda con un mensaje NA donde se enumera su dirección MAC. El mensaje NS es enviado a la dirección de multicast del nodo solicitado asociada con la dirección de destino, por tanto el mensaje es procesado sólo por los hosts en donde los últimos seis dígitos hexadecimales coinciden con la dirección que fue requerida al comienzo.

Neighbor Advertisement (NA): Este mensaje lista la dirección IPv6 y MAC del remitente. Éste puede ser enviado en respuesta a un mensaje NS, y en ese caso el paquete es enviado a la dirección IPv6 unicast del host que envió el mensaje NS original. Un host puede enviar una solicitud NA anunciando su dirección IPv6 y MAC, en cuyo caso el mensaje es enviado a la dirección multicast FF02::1 de alcance local (local-scope) de todos los hosts IPv6.

Ejemplo de Mensajes NDP NS y NA en el proceso de descubrimiento de su vecino
Ejemplo de Mensajes NDP NS y NA en el proceso de descubrimiento de su vecino

Ver los vecinos IPv6 en un Router Cisco:

R3# show ipv6 neighbors
IPv6 Address 			Age Link-layer Addr State Interface
2001:DB8:1111:5::1 		  0 0201.a010.0001  REACH Gi0/0/0
FE80::1:A0FF:FE10:1 		  0 0201.a010.0001  REACH Gi0/0/0

Ver los Vecinos IPv6 en Windows:

netsh interface ipv6 show neighbors

Ver los Vecinos IPv6 en Linux:

ip -6 neighbor show

Ver los Vecinos IPv6 en Mac OS:

ndp -an

Descubrimiento de Routers con Mensajes NDP RS y RA

RS y RA son mensajes que envía NDP.

Router Solicitation (RS): Este mensaje es enviado a todos los routers IPv6 a la dirección multicast FF02::2 de alcance local (local-scope), por tanto el mensaje le pregunta a todos los routers del enlace local solamente para que se identifiquen a sí mismos.

Router Advertisement (RA): Este mensaje enviado por el router lista muchos datos, incluida la dirección link-local IPv6 del router. Cuando se envía en respuesta de un menaje RS, éste vuelve a la dirección unicast del host que envió el mensaje RS o a la dirección FF02::1 de todos los hosts IPv6. Los routers también envían mensajes RA sin que se lo soliciten, enviados a la dirección de multicast FF02 :: 1 de alcance local de todos los hosts IPv6.

Ejemplo de Mensajes NDP RS y RA NS/NA en el proceso de descubrimiento de su Router vecino
Ejemplo de Mensajes NDP RS y RA NS/NA en el proceso de descubrimiento de su Router vecino

Usando SLAAC con Mensajes NDP RS y RA

Tanto IPv4 como IPv6 soportan la idea de direcciones dinámicas asignadas al host a través de Dynamic Host Configuration Protocol (DHCP). Para encontrar una dirección que se use con DHCP, el cliente DHCP envía mensajes al servidor DHCP, y el servidor asigna direcciones que no se están usando actualmente en esa subred para que el host en el extremo use. El proceso confía en la funcionalidad del cliente DHCP en cada dispositivo y el servidor DHCP configurado y funcionando en esa red.

IPv6 soporta un método alternativo para que los hosts IPv6 elijan automáticamente una dirección IPv6 sin uso, un proceso que no requiere de un servidor DHCP. El proceso lleva el nombre de Autoconfiguración de Direcciones sin Estado ó en Inglés Stateless Address Autoconfiguration (SLAAC). SLAAC usa un simple proceso de tres pasos que comienza aprendiendo el prefijo/longitud como se muestra en la siguiente imagen. Los pasos son los siguiente:

  1. Aprende el prefijo IPv6 usado en el enlace desde cualquier router, usando los mensajes NDP RS/RA.
  2. Construye una dirección desde el prefijo y el ID de la interfaz, eligiendo entre usar las reglas EUI-64
    o como un valor aleatorio.
  3. Antes de usar la dirección, primero usa DAD para estar seguro que ningún otro host está usando la misma dirección.
Creación de una IPv6 usando SLAAC
Creación de una IPv6 usando SLAAC

Descubriendo Direcciones Duplicadas usando Mensajes NDP NS y NA

Lo mejor es verlo con un ejemplo con una imagen. PC1 comienza haciendo un chequeo DAD, pero PC2 está en funcionamiento con esa dirección. La imagen sigue los siguientes pasos:

  1. PC1, antes de usar la dirección 2001:DB8:1111:1::11, debe usar DAD.
  2. PC1 envía un mensaje NS, listando la dirección que PC1 ahora quiere usar (2001:DB8:1111:1::11).
  3. PC2 recibe el mensaje NS, PC2 mira qué dirección está usando en este momento y envía de vuelta atrás un mensaje NA.
  4. PC1 recibe el mensaje NA con su propia dirección IPv6 y se da cuenta que tiene una dirección duplicada que ya existe en la red.
Detección de Dirección Duplicada en IPv6 usando DAD con NDP NS/NA
Detección de Dirección Duplicada en IPv6 usando DAD con NDP NS/NA

Deja un comentario