IPv6: Neighbor Discovery Protocol y Enrutamiento Estático
En la evolución constante de las redes, IPv6 se establece como el sucesor fundamental de IPv4. Para comprender a fondo su funcionamiento, es crucial analizar el papel de protocolos clave como el Neighbor Discovery Protocol (NDP).
1. Neighbor Discovery Protocol (NDP): El Sucesor de ARP
El Neighbor Discovery Protocol (NDP) es un protocolo fundamental en IPv6, diseñado para reemplazar y mejorar las funcionalidades de ARP (Address Resolution Protocol) y otros aspectos de ICMP en IPv4. NDP utiliza mensajes ICMPv6 y direcciones multicast de nodo solicitado para operar.
Función:
- Descubrir routers en el enlace local.
- Descubrir direcciones de otros nodos en el enlace local.
- Determinar las direcciones MAC correspondientes a las direcciones IPv6 (similar a ARP).
- Detectar direcciones duplicadas (DAD - Duplicate Address Detection).
- Autoconfiguración de direcciones sin estado (SLAAC).
✨ ARP en IPv4 usa mensajes broadcast, mientras que NDP en IPv6 utiliza mensajes multicast para reducir la carga en la red.
1.1 Solicitated-Node Multicast Address
Una dirección multicast de nodo solicitado se calcula a partir de una dirección unicast. Es utilizada por el Neighbor Discovery Protocol (NDP) para resolver direcciones de Capa 2 (MAC) y detectar direcciones duplicadas, sin saturar la red con tráfico de broadcast, como ocurría con ARP en IPv4.
Cálculo:
Se forma con el prefijo ff02:0000:0000:0000:0000:0001:ff (ff02::1:ff) seguido de los últimos 24 bits (6 dígitos hexadecimales) de la dirección unicast.
-
Ejemplo 1: Si la dirección unicast es
2001:0db8:0000:0f2a:4fff:fea3:00b1, la dirección multicast de nodo solicitado seráff02::1:ffa3:00b1. -
Ejemplo 2: Si la dirección unicast es
2001:0db8:0000:0489:4eda:073a:12b8, la dirección multicast de nodo solicitado seráff02::1:ff3a:12b8.
1.2 Tipos de mensajes NDP (ICMPv6):
- Neighbor Solicitation (NS) - ICMPv6 Tipo 135: Un host envía un NS para:
- Determinar la dirección MAC de un vecino.
- Verificar si un vecino está aún presente.
- Detectar direcciones duplicadas (DAD).
- Los NS se envían a la dirección multicast de nodo solicitado del destino.
Ejemplo: Un router R1 pregunta “¿Cuál es tu dirección MAC?” a la dirección multicast de nodo solicitado de R2. El mensaje debería llevar esta información.
Destination IP: R2 solicited-node multicast address
Source MAC: R1 G0/0 MAC
Destination MAC: Multicast MAC based on R2's solicited-node address
- Neighbor Advertisement (NA) - ICMPv6 Tipo 136: Un host envía un NA en respuesta a un NS para:
- Anunciar su dirección MAC.
- Anunciar un cambio en su dirección de Capa 2.
Ejemplo: R2 responde a R1: “Mi MAC es ca02.097c.0008.”
Destination IP: R1 G0/0 IP
Source MAC: R2 G0/0 MAC
Destination MAC: R1 G0/0 MAC
1.3 Tabla de Vecinos IPv6 (Neighbor Table)
Similar a la tabla ARP en IPv4, la tabla de vecinos en IPv6 almacena la correspondencia entre direcciones IPv6 y direcciones MAC para los vecinos en el enlace local.
R1#show ipv6 neighbor
IPv6 Address Age Link-layer Addr State Interface
FE80::C802:9AA:FE7D:8 0 ca02.097c.0008 REACH G1/0/0
2001:DB8:78:9ABC::C802:9AA:FE7D:8 0 ca02.097c.0008 REACH G1/0/0
Esto indica que R1 ha descubierto a un vecino con la dirección Link-Local fe80::c802:9aa:fe7d:8 (y probablemente también su Global Unicast Address 2001:db8:78:9abc::c802:9aa:fe7d:8) con la dirección MAC ca02.097c.0008 a través de la interfaz G1/0/0.
1.4 Neighbor Discovery Protocol: Funciones Adicionales
NDP va más allá de la resolución de direcciones. También facilita la autoconfiguración y el descubrimiento de routers.
-
Router Solicitation (RS) - ICMPv6 Tipo 133: Los hosts envían mensajes RS para descubrir routers en el enlace local. Estos mensajes se envían a la dirección multicast de “Todos los Routers” (
ff02::2). Los routers responden con Router Advertisement. -
Router Advertisement (RA) - ICMPv6 Tipo 134: Los routers envían mensajes RA para anunciar su presencia, prefijos de red, información de configuración (como direcciones de servidores DNS) y si los hosts deben usar SLAAC o DHCPv6 para obtener direcciones. Estos se envían a la dirección multicast de “Todos los Nodos” (
ff02::1) o en respuesta a un RS.
1.5 Duplicate Address Detection (DAD)
DAD es un proceso vital en IPv6 para asegurar la unicidad de las direcciones IP.
👉 Antes de que una dirección IPv6 (manual o autoconfigurada) se considere válida, el host envía un mensaje Neighbor Solicitation para esa dirección a la dirección multicast de nodo solicitado. Si recibe una respuesta Neighbor Advertisement, significa que la dirección ya está en uso, y el host no la utilizará.
🧐 Si un host recibe un NA en respuesta a su NS para una dirección que está tratando de usar, significa que otro host en el mismo segmento de red ya está usando esa dirección. En este caso, el host que intentó usarla no lo hará.
1.6 SLAAC (Stateless Address Auto-configuration)
SLAAC permite que los hosts configuren automáticamente sus direcciones IPv6 sin la necesidad de un servidor DHCPv6. Es una función clave para la simplicidad y escalabilidad de IPv6.
Funcionamiento:
- El host envía un Router Solicitation (RS) al grupo multicast de todos los routers (
ff02::2). - Los routers en el enlace responden con un Router Advertisement (RA), que contiene el prefijo de la red (por ejemplo,
2001:db8:1::/64). - El host utiliza este prefijo y genera su propio ID de interfaz de 64 bits, a menudo usando EUI-64 a partir de su dirección MAC, para formar una dirección IPv6 global unicast completa.
Configuración:
R1(config-if)#ipv6 address 2001:db8:8:0::/64 eui-64
Cuando se configura con eui-64, el router automáticamente generará la porción de host de la dirección IPv6 usando la dirección MAC de la interfaz. Por ejemplo, si una interfaz tiene una MAC ae0c:3810:1a00, la dirección IPv6 generada podría ser 2001:db8:8:0:ac0c:38ff:fe10:1a00.
☑️ Los dispositivos pueden obtener una dirección IPv6 de forma automática y autónoma.
😎 Para más detalles sobre cómo EUI-64 convierte una dirección MAC a un identificador de interfaz, puedes consultar la sección “EUI-64 (Extended Unique Identifier - 64-bit)” en el post sobre IPv6 Addressing.
2. IPv6 Static Routing
🧐 Antes de configurar cualquier enrutamiento IPv6 (estático o dinámico), es fundamental activar el reenvío de paquetes IPv6 en el router. Por defecto, esta función viene deshabilitada.
Para habilitarla, utiliza el siguiente comando en el modo de configuración global:
R1(config)#ipv6 unicast-routing
El enrutamiento estático en IPv6 es fundamental para configurar rutas manuales que dirigen el tráfico a destinos específicos. El enrutamiento IPv6 funciona de manera similar al enrutamiento IPv4, pero las tablas de enrutamiento y los protocolos son separados.
R1(config)#ipv6 route [prefijo_red/longitud_prefijo] [next-hop_ipv6 | interfaz_salida] [distancia_administrativa].
Tipos de rutas estáticas:
-
Ruta estática directamente conectada (Exit Interface Only): Especifica únicamente la interfaz de salida. Útil para interfaces punto a punto.
R1(config)#ipv6 route 2001:db8:8:3::/64 GigabitEthernet0/0Cuando el router recibe un paquete para la red 2001:db8:8:3::/64, lo enviará por la interfaz GigabitEthernet0/0.
-
Ruta estática recursiva (Next-Hop IPv6 Address Only): Especifica la dirección IPv6 del próximo salto. Requiere una búsqueda adicional en la tabla de enrutamiento para resolver la interfaz de salida del next-hop.
R1(config)#ipv6 route 2001:db8:8:3::/64 2001:db8:8:1::2El router buscará cómo llegar a 2001:db8:8:1::2 para poder reenviar el paquete.
-
Ruta estática completamente especificada (Exit Interface + Next-Hop IPv6 Address): Especifica tanto la interfaz de salida como la dirección IPv6 del próximo salto. Es la opción más robusta y preferida, especialmente en interfaces Ethernet multiacceso, ya que evita búsquedas recursivas y mejora la fiabilidad.
R1(config)#ipv6 route 2001:db8:8:3::/64 GigabitEthernet0/0 2001:db8:8:1::2👉 En IPv6, puedes utilizar la dirección link-local del next-hop (en el ejemplo
fe80::2) como la dirección del próximo salto para este tipo de ruta.R1(config)#ipv6 route 2001:db8:8:3::/64 GigabitEthernet0/0 fe80::2 -
Ruta por defecto (Default Route): Se utiliza cuando no hay una ruta más específica para un destino. Permite que el tráfico destinado a redes desconocidas se envíe a un router específico.
R1(config)#ipv6 route ::/0 2001:db8:8:2::1 (indicando el next-hop) R1(config)#ipv6 route ::/0 GigabitEthernet0/2 (indicando la interfaz de salida) -
Floating Static Route: Permite tener una ruta estática de respaldo con una distancia administrativa (AD) más alta que la ruta principal. Si la ruta principal falla (se vuelve inalcanzable), la ruta flotante con la AD más alta (pero aún más baja que otras rutas dinámicas) se instala en la tabla de enrutamiento.
R1(config)#ipv6 route 2001:db8:8:3::/64 2001:db8:8:1::2 R1(config)#ipv6 route 2001:db8:8:3::/64 2001:db8:8:2::2 100Aquí, la primera ruta tiene una AD por defecto de 1. La segunda ruta, con una AD de 100, solo será utilizada si la primera ruta principal deja de estar activa.
Comandos de Verificación:
El comando show ipv6 route muestra la tabla de enrutamiento IPv6, incluyendo las rutas estáticas configuradas (indicadas con S), rutas directamente conectadas (L para local, C para conectada) y cualquier ruta aprendida dinámicamente.
R1#show ipv6 route
- IPv6
- Neighbor Discovery Protocol
- NDP
- ICMPv6
- Solicited-Node Multicast
- DAD
- SLAAC
- EUI-64
- Enrutamiento Estático IPv6
- Static Routing
- Cisco
- Redes
- CCNA