Endereços de site local e link local do IPv6
Os endereços IPv6 link-local e site-local são chamados de endereços com escopo. A API do Windows Sockets (Winsock) dá suporte ao membro sin6_scope_id na estrutura sockaddr_in6 para uso com endereços com escopo. Para endereços locais de link IPv6 (prefixo fe80::/10), o membro sin6_scope_id na estrutura sockaddr_in6 é o número da interface. Para endereços locais do site IPv6 (prefixo fec0::/10), o membro sin6_scope_id na estrutura sockaddr_in6 é um identificador de site.
Um exemplo de um endereço IPv6 local de link na interface nº 5 é o seguinte:
fe80::208:74ff:feda:625c%5
O comando a seguir está disponível no Windows XP com Service Pack 1 (SP1) e posterior para consultar e configurar o IPv6 em um computador local:
As alterações de configuração feitas usando os comandos Netsh.exe são permanentes e não são perdidas quando o computador ou o protocolo IPv6 é reiniciado.
Antes do Windows XP com Service Pack 1 (SP1), a configuração e o gerenciamento do IPv6 usavam várias ferramentas de linha de comando mais antigas (Net.exe, Ipv6.exe e Ipsec6.exe) para configurar e gerenciar o IPv6. Usando essas ferramentas mais antigas, as alterações IPv6 não são permanentes e são perdidas quando o computador ou o protocolo IPv6 foi reiniciado. Essas ferramentas de linha de comando mais antigas só têm suporte no Windows XP.
No Windows XP com SP1, o comando a seguir exibirá a lista de interfaces IPv6 em um computador local, incluindo o índice da interface, o nome da interface e várias outras propriedades de interface.
interface netsh ipv6 show interface
No Windows XP com SP1, o comando a seguir alterará o identificador de site associado a um índice de interface.
netsh interface ipv6 set interface <InterfaceIndex ou Name> siteid=value
No Windows XP, o comando mais antigo a seguir também alterará o identificador de site associado a um endereço local do site para 3.
ipv6 rtu fec0::/10 3
Se você estiver enviando ou se conectando a um endereço com escopo, o membro sin6_scope_id na estrutura sockaddr_in6 poderá ser deixado não especificado (zero) que representa um endereço com escopo ambíguo. Por exemplo, o seguinte endereço link-local é ambíguo:
fe80::10
Se você estiver associando a um endereço com escopo, o membro sin6_scope_id na estrutura sockaddr_in6 deverá conter um valor diferente de zero que especifica um número de interface válido para um endereço local de link ou um identificador de site para um endereço local do site.
Endereços com escopo ambíguo
Se você estiver enviando ou se conectando a um endereço com escopo e não tiver especificado o membro sin6_scope_id na estrutura sockaddr_in6 , o endereço com escopo será ambíguo. Para resolve isso, primeiro o protocolo IPv6 determina se você vinculou o soquete a um endereço de origem. Nesse caso, o endereço de origem associado resolve a ambiguidade fornecendo um número de interface ou identificador de site.
Se você estiver enviando ou se conectando a um endereço com escopo e não tiver especificado o membro sin6_scope_id nem vinculado a um endereço de origem, o protocolo IPv6 verificará a tabela de roteamento. Por exemplo, o comando a seguir exibirá a tabela de roteamento IPv6 em um computador local:
netsh interface ipv6 show route
No Manual 256 fe80::/64 13 Local Area Connection
No Manual 256 fe80::/64 14 Wireless Network Connection
Isso indica que os endereços locais do link são tratados como no link para a interface nº 13 e nº 14 por padrão.
A ambiguidade surge quando um computador local tem vários adaptadores de rede. Por exemplo, o comando netsh acima indica que há duas interfaces de rede (Conexão de Área Local e Conexão de Rede Sem Fio). Quando um aplicativo especifica um endereço local de link de destino (fe80::10, por exemplo) sem uma ID de escopo, não está claro qual adaptador usar para enviar o pacote. Somente um endereço de destino IPv6 de link-local (fe80::/64) ou um endereço de destino IPv6 de escopo de link (ff00::/8) pode sofrer por não ter uma ID de escopo ao enviar um pacote.
Descoberta de vizinhos
Se você não especificou o membro sin6_scope_id na estrutura sockaddr_in6, não vinculou um endereço de origem e não especificou uma rota para endereços locais de link, o protocolo IPv6 tentará a Descoberta de Vizinho para resolve o endereço local do link de destino. Para um determinado pacote que está sendo enviado, uma interface é tentada. Essa primeira interface que é tentada é considerada a interface mais preferencial. Se a Descoberta de Vizinho não resolve o endereço local do link em uma interface, o pacote a ser enviado será descartado e o sistema lembrará que o endereço local do link de destino não pode ser acessado por essa interface. No próximo pacote a ser enviado sob todas as mesmas condições, uma interface diferente é tentada para a Descoberta de Vizinhos. Esse processo continua por cada uma das interfaces em um computador local para cada novo pacote até que a Descoberta de Vizinhos responda pelo endereço local do link de destino ou todas as interfaces possíveis tenham sido tentadas e falhadas. Cada vez que uma tentativa de resolve o vizinho falha, uma interface é eliminada para esse vizinho.
Se o endereço local do link de destino for resolvido, essa interface será usada para enviar o pacote atual. Essa interface também é usada para quaisquer pacotes com escopo ambíguo subsequentes que são enviados para o mesmo endereço de destino local do link.
Se a Descoberta de Vizinho não conseguir resolve o endereço local do link de destino em todas as interfaces, o sistema tentará enviar o pacote na interface mais preferencial (a primeira interface tentada). A pilha de rede continua tentando resolve o endereço local do link de destino na interface mais preferencial. Após um período de tempo após a falha da Descoberta de Vizinhos em todas as interfaces, a pilha de rede reiniciará o processo novamente e tentará resolve o endereço local do link de destino em todas as interfaces. Atualmente, esse intervalo de tempo quando a Descoberta de Vizinho é testada novamente em todas as interfaces é de 60 segundos. No entanto, esse intervalo de tempo pode mudar em versões do Windows e não deve ser assumido por um aplicativo.
Observação
Se um aplicativo associar o mesmo endereço de link local a uma interface diferente depois que a Descoberta de Vizinho tiver resolvido o endereço local do link, isso não substituirá a interface pelo endereço de destino link-local retornado pela Descoberta de Vizinho.
Para obter mais informações sobre a Descoberta de Vizinhos para IP versão 6, consulte RFC4861 publicado pelo IETF.
Tópicos relacionados