Direcciones IPv6 local de vínculo y local del sitio
Las direcciones de vínculo IPv6 locales y locales de sitio se denominan direcciones con ámbito. La API de Windows Sockets (Winsock) admite el miembro sin6_scope_id en la estructura sockaddr_in6 para su uso con direcciones con ámbito. En el caso de las direcciones locales de vínculo IPv6 (prefijo fe80::/10), el miembro sin6_scope_id de la estructura sockaddr_in6 es el número de interfaz. En el caso de las direcciones locales de sitio IPv6 (prefijo fec0::/10), el miembro sin6_scope_id de la estructura sockaddr_in6 es un identificador de sitio.
Un ejemplo de una dirección IPv6 local de vínculo en la interfaz 5 es el siguiente:
fe80::208:74ff:feda:625c%5
El siguiente comando está disponible en Windows XP con Service Pack 1 (SP1) y versiones posteriores para consultar y configurar IPv6 en un equipo local:
Los cambios de configuración realizados mediante los comandos Netsh.exe son permanentes y no se pierden cuando se reinicia el equipo o el protocolo IPv6.
Antes de Windows XP con Service Pack 1 (SP1), la configuración y la administración de IPv6 usaban varias herramientas de línea de comandos anteriores (Net.exe, Ipv6.exe y Ipsec6.exe) para configurar y administrar IPv6. Con estas herramientas anteriores, los cambios de IPv6 no son permanentes y se pierden cuando se reinicia el equipo o el protocolo IPv6. Estas herramientas de línea de comandos anteriores solo se admiten en Windows XP.
En Windows XP con SP1, el siguiente comando mostrará la lista de interfaces IPv6 en un equipo local, incluido el índice de la interfaz, el nombre de la interfaz y otras propiedades de interfaz.
interfaz netsh ipv6 show interface
En Windows XP con SP1, el siguiente comando cambiará el identificador de sitio asociado a un índice de interfaz.
interfaz netsh ipv6 set interface <InterfaceIndex o Name> siteid=value
En Windows XP, el siguiente comando anterior también cambiará el identificador de sitio asociado a una dirección local de sitio a 3.
ipv6 rtu fec0::/10 3
Si va a enviar o conectarse a una dirección con ámbito, el sin6_scope_id miembro de la estructura sockaddr_in6 se puede dejar sin especificar (cero) que representa una dirección de ámbito ambigua. Por ejemplo, la siguiente dirección local de vínculo es ambigua:
fe80::10
Si va a enlazar a una dirección con ámbito, el sin6_scope_id miembro de la estructura sockaddr_in6 debe contener un valor distinto de cero que especifique un número de interfaz válido para una dirección local de vínculo o un identificador de sitio para una dirección local de sitio.
Direcciones con ámbito ambiguas
Si va a enviar o conectarse a una dirección con ámbito y no ha especificado el miembro sin6_scope_id en la estructura de sockaddr_in6 , la dirección con ámbito es ambigua. Para resolverlo, el protocolo IPv6 determina primero si ha enlazado el socket a una dirección de origen. Si es así, la dirección de origen enlazada resuelve la ambigüedad proporcionando un número de interfaz o un identificador de sitio.
Si va a enviar o conectarse a una dirección con ámbito y no ha especificado el miembro sin6_scope_id ni enlazado una dirección de origen, el protocolo IPv6 comprueba la tabla de enrutamiento. Por ejemplo, el siguiente comando mostrará la tabla de enrutamiento IPv6 en un equipo local:
netsh interface ipv6 show route
No Manual 256 fe80::/64 13 Local Area Connection
No Manual 256 fe80::/64 14 Wireless Network Connection
Esto indica que las direcciones locales de vínculo se tratan como on-link to interface #13 y #14 de forma predeterminada.
La ambigüedad surge cuando un equipo local tiene varios adaptadores de red. Por ejemplo, el comando netsh anterior indica que hay dos interfaces de red (conexión de área local y conexión de red inalámbrica). Cuando una aplicación especifica una dirección local de vínculo de destino (fe80::10, por ejemplo) sin un identificador de ámbito, no está claro qué adaptador usar para enviar el paquete. Solo una unidifusión local de vínculo (fe80::/64) o una dirección de destino IPv6 de ámbito de vínculo (ff00::/8) puede sufrir que no tenga un identificador de ámbito al enviar un paquete.
Detección de equipos cercanos
Si no ha especificado el miembro sin6_scope_id en la estructura sockaddr_in6 , no ha enlazado una dirección de origen y no ha especificado una ruta para las direcciones locales de vínculo, el protocolo IPv6 intentará la detección de vecinos para resolver la dirección local del vínculo de destino. Para un paquete determinado que se envía, se prueba una interfaz. Esta primera interfaz que se prueba se considera la interfaz más preferida. Si la detección de vecinos no puede resolver la dirección local de vínculo en una interfaz, se quita el paquete que se va a enviar y el sistema recuerda que la dirección local del vínculo de destino no es accesible a través de esa interfaz. En el siguiente paquete que se enviará en todas las mismas condiciones, se intenta una interfaz diferente para la detección de vecinos. Este proceso continúa a través de cada una de las interfaces de un equipo local para cada nuevo paquete hasta que la detección de vecinos responda a la dirección local de vínculo de destino o se han probado y producido un error en todas las interfaces posibles. Cada vez que se produce un error en un intento de resolver el vecino, se elimina una interfaz para ese vecino.
Si se resuelve la dirección local del vínculo de destino, esa interfaz se usa para enviar el paquete actual. Esta interfaz también se usa para cualquier paquete de ámbito ambiguo posterior que se envíe a la misma dirección de destino local de vínculo.
Si la detección de vecinos no puede resolver la dirección local de vínculo de destino en todas las interfaces, el sistema intenta enviar el paquete en la interfaz más preferida (se intentó la primera interfaz). La pila de red sigue intentando resolver la dirección local de vínculo de destino en la interfaz más preferida. Después de un período de tiempo después de que se haya producido un error en la detección de vecinos en todas las interfaces, la pila de red reiniciará el proceso de nuevo e intentará resolver la dirección local de vínculo de destino en todas las interfaces. Actualmente, este intervalo de tiempo cuando se vuelve a intentar la detección de vecinos en todas las interfaces es de 60 segundos. Sin embargo, este intervalo de tiempo puede cambiar en las versiones de Windows y no debe asumirse por una aplicación.
Nota
Si una aplicación enlaza la misma dirección local de vínculo a otra interfaz después de que la detección de vecinos haya resuelto la dirección local del vínculo, que no invalidará la interfaz con la dirección de destino local del vínculo devuelta por la detección de vecinos.
Para obtener más información sobre la detección de vecinos para ip versión 6, consulte RFC4861 publicado por IETF.
Temas relacionados