Endereço IPv6

Um endereço de protocolo de Internet versão 6 (endereço IPv6) é um rótulo numérico usado para identificar e localizar uma interface de rede de um computador ou um nó de rede que participa de uma rede de computadores utilizando o IPv6. Os endereços IP são incluídos no cabeçalho do pacote para indicar a origem e o destino de cada pacote. O endereço IP do destino é usado para tomar decisões sobre o roteamento de pacotes IP para outras redes.

Decomposição de um endereço IPv6 em sua forma binária.

O IPv6 é o sucessor da primeira infraestrutura de endereçamento da Internet, o protocolo de Internet versão 4 (IPv4). Diferentemente do IPv4, que definiu um endereço IP como um valor de 32 bits, os endereços IPv6 têm um tamanho de 128 bits. Portanto, em comparação, o IPv6 tem um espaço de endereçamento vastamente ampliado.

Métodos de endereçamento

Os endereços IPv6 são classificados pelas metodologias primárias de endereçamento e roteamento comuns em redes: endereçamento unicast, endereçamento anycast e endereçamento multicast.[1]

Um endereço unicast identifica uma única interface de rede. O protocolo de Internet entrega pacotes enviados a um endereço unicast para essa interface específica.

Um endereço anycast é atribuído a um grupo de interfaces, geralmente pertencentes a nós diferentes. Um pacote enviado a um endereço anycast é entregue à apenas uma das interfaces membro, normalmente o host mais próximo, de acordo com a definição de distância do protocolo de roteamento. Os endereços anycast não podem ser identificados facilmente, eles têm o mesmo formato dos endereços unicast e diferem apenas por sua presença na rede em vários pontos. Quase qualquer endereço unicast pode ser empregado como um endereço anycast.

Um endereço multicast também é usado por vários hosts que adquirem o destino do endereço multicast participando do protocolo de distribuição multicast entre os roteadores da rede. Um pacote enviado a um endereço multicast é entregue à todas as interfaces que se juntaram ao grupo multicast correspondente. O IPv6 não implementa endereçamento de broadcast. A função tradicional da transmissão é subsumida pelo endereçamento multicast para o grupo multicast link-local de todos os nós ff02::1. No entanto, o uso do grupo de todos os nós não é recomendado e a maioria dos protocolos IPv6 usa um grupo multicast link-local dedicado para evitar perturbar todas as interfaces da rede.

Formatos de endereço

Um endereço IPv6 consiste em 128 bits.[1] Para cada uma das principais metodologias de endereçamento e roteamento, vários formatos de endereço são reconhecidos dividindo os 128 bits de endereço em grupos de bits e usando regras estabelecidas para associar os valores desses grupos de bits com recursos de endereçamento especiais.

Formato de endereço unicast e anycast

Os endereços unicast e anycast são normalmente compostos de duas partes lógicas: um prefixo de rede de 64 bits usado para roteamento e um identificador de interface de 64 bits usado para identificar a interface de rede de um host.

Formato geral de endereço unicast (o tamanho do prefixo de roteamento varia)
áreaprefixo de roteamentoidentificador de sub-redeidentificador de interface
bits48 (ou mais)16 (ou menos)64

O prefixo de rede (o prefixo de roteamento combinado com o identificador de sub-rede) está contido nos 64 bits mais significativos do endereço. O tamanho do prefixo de roteamento pode variar, um tamanho de prefixo maior significa um tamanho de identificação de sub-rede menor. Os bits da área do identificador de sub-rede estão disponíveis para o administrador da rede definir as sub-redes dentro de uma determinada rede. O identificador de interface de 64 bits é gerado automaticamente a partir do endereço MAC da interface usando o formato EUI-64 modificado, obtido de um servidor DHCPv6, estabelecido automaticamente de forma aleatória ou atribuído manualmente.

Os endereços locais exclusivos são endereços análogos ao endereçamento de rede privada IPv4.

Formato de endereço local exclusivo
áreaprefixoLaleatórioidentificador de sub-redeidentificador de interface
bits71401664

A área de prefixo contém o valor binário 11111102 . O bit L é zero para endereços atribuídos globalmente e um para endereços atribuídos localmente. A área aleatório é escolhida aleatoriamente uma vez, no início do prefixo de roteamento /48.

Um endereço link-local também é baseado no identificador de interface, mas usa um formato diferente para o prefixo de rede.

Formato de endereço link-local
áreaprefixozerosidentificador de interface
bits105464

A área de prefixo contém o valor binário 11111110102. Os 54 zeros a seguir tornam o prefixo de rede total o mesmo para todos os endereços link-local (prefixo de endereço link-local fe80::/64), tornando-os não roteáveis.

Formato de endereço multicast

Os endereços multicast são formados de acordo com várias regras de formatação específicas, dependendo da aplicação.

Formato geral de endereço multicast
áreaprefixoflgscID de grupo
bits844112

Para todos os endereços multicast, o campo de prefixo contém o valor binário 111111112.

Atualmente, três dos quatro bits de sinalização (flag) na área flg são definidos[1] e o bit mais significativo dessa área é reservado para uso futuro.

Sinalizadores de endereço multicast[2]
bitflagSignificado quando 0Significado quando 1
8reservadoreservadoreservado
9R (encontro)[3]ponto de encontro não incorporadoponto de encontro incorporado
10P (prefixo)[4]sem informação de prefixoendereço baseado no prefixo da rede
11T (transiente)[1]endereço multicast conhecidoendereço multicast atribuído dinamicamente

A área de escopo de quatro bits (sc) é usada para indicar onde o endereço é válido e exclusivo.

Além disso, o campo de escopo é usado para identificar endereços multicast especiais, como o nó solicitado.

Formato de endereço multicast de nó solicitado
áreaprefixoflgsczerosunsendereço unicast
bits84479924

A área de e(sc)opo contém o valor binário 00102 (link-local). Os endereços multicast de nós solicitados são calculados como uma função dos endereços unicast ou anycast de um nó. Um endereço multicast de nó solicitado é criado copiando os últimos 24 bits de um endereço unicast ou anycast para os últimos 24 bits do endereço multicast.

Formato de endereço multicast baseado em prefixo unicast[3][4]
áreaprefixoflgscresriidplenprefixo de redeID de grupo
bits8444486432

Os endereços multicast com escopo de link usam um formato comparável.[5]

Representação

Um endereço IPv6 é representado como oito grupos de quatro dígitos hexadecimais, cada grupo representando 16 bits [a] Os grupos são separados por dois pontos (:). Um exemplo de endereço IPv6 é:

2001:0db8:85a3:0000:0000:8a2e:0370:7334

Os padrões fornecem flexibilidade na representação de endereços IPv6. A representação completa de oito grupos de quatro dígitos pode ser simplificada por várias técnicas, eliminando partes da representação. Em geral, as representações são encurtadas tanto quanto possível. No entanto, esta prática complica várias operações comuns, nomeadamente a procura de um endereço específico ou um padrão de endereço em documentos de texto ou fluxos e a comparação de endereços para determinar a equivalência. Para mitigar essas complicações, a IETF definiu um formato canônico na RFC 5952 para processar endereços IPv6 em texto[8]:

Os dígitos hexadecimais são sempre comparados sem distinção entre maiúsculas e minúsculas, mas as recomendações da IETF sugerem o uso de apenas letras minúsculas. Por exemplo, 2001:db8::1 é preferível a 2001:DB8::1.

Os zeros à esquerda em cada área de 16 bits são suprimidos, mas cada grupo deve reter pelo menos um dígito no caso do grupo totalmente zero. Por exemplo, 2001:0db8::0001:0000 é apresentado como 2001:db8::1:0. A área zero que é explicitamente apresentada é apresentada como 0.

A sequência mais longa de áreas totalmente zeradas consecutivas é substituída por dois pontos ("::"). Se o endereço contiver várias execuções de áreas totalmente zero, é a mais à esquerda que é compactada para evitar ambiguidades. Por exemplo, 2001:db8:0:0:1:0:0:1 é apresentado como 2001:db8::1:0:0:1 em vez de 2001:db8:0:0:1::1.

"::" não é usado para representar apenas uma única área totalmente zero. Por exemplo, 2001:db8:0:0:0:0:2:1 é abreviado para 2001:db8::2:1, mas 2001:db8:0000:1:1:1:1:1 é apresentado como 2001:db8:0:1:1:1:1:1.

Esses métodos podem levar à representações muito curtas para endereços IPv6. Por exemplo, o endereço localhost (loopback), 0:0:0:0:0:0:0:1, e o endereço IPv6 não especificado, 0:0:0:0:0:0:0:0, são reduzidos para ::1 e ::, respectivamente.

Durante a transição da Internet de IPv4 para IPv6, é comum operar em um ambiente de endereçamento misto. Para esses casos de uso, uma notação especial foi introduzida, que expressa endereços IPv6 mapeados com IPv4 e compatíveis com IPv4, gravando os 32 bits menos significativos de um endereço na conhecida notação ponto-decimal IPv4, enquanto os 96 bits mais significativos são escritos no formato IPv6. Por exemplo, o endereço IPv6 mapeado para IPv4 ::ffff:c000:0280 é escrito como ::ffff:192.0.2.128, expressando assim claramente o endereço IPv4 original que foi mapeado para IPv6.

Redes

Uma rede IPv6 usa um bloco de endereço que é um grupo contíguo de endereços IPv6 com um tamanho de potência de dois. O conjunto principal de bits dos endereços são idênticos para todos os hosts em uma determinada rede e são chamados de endereço de rede ou prefixo de roteamento.

Os intervalos de endereços de rede são escritos em notação CIDR. Uma rede é denotada pelo primeiro endereço no bloco (terminando em zeros), uma barra (/) e um valor decimal igual ao tamanho em bits do prefixo. Por exemplo, a rede escrita como 2001:db8:1234::/48 começa no endereço 2001:db8:1234:0000:0000:0000:0000:0000 e termina em 2001:db8:1234:ffff:ffff:ffff:ffff:ffff.

O prefixo de roteamento de um endereço de interface pode ser indicado diretamente com o endereço pela notação CIDR. Por exemplo, a configuração de uma interface com endereço 2001:db8:a::123 conectada à sub-rede 2001:db8:a::/64 é escrita como 2001:db8:a::123/64.

Tamanhos de bloco de endereço

O tamanho de um bloco de endereços é especificado escrevendo uma barra (/) seguida por um número decimal cujo valor é o comprimento do prefixo de rede em bits, em vez de especificar explicitamente quais endereços estão no bloco. Por exemplo, um bloco de endereço com 48 bits no prefixo é indicado por /48. Esse bloco contém 2128 - 48 = 2 80 endereços. Quanto menor for o valor do prefixo de rede, maior será o bloco: um bloco /21 é 8 vezes maior do que um bloco /24.

Endereços IPv6 literais em identificadores de recursos de rede

Os caracteres de dois pontos (:) em endereços IPv6 podem entrar em conflito com a sintaxe estabelecida de identificadores de recursos, como URIs e URLs. Os dois pontos têm sido tradicionalmente usados para encerrar o caminho do host antes de um número de porta.[9] Para aliviar esse conflito, os endereços IPv6 literais são colocados entre colchetes nesses identificadores de recursos, por exemplo:

http://[2001:db8:85a3:8d3:1319:8a2e:370:7348]/

Quando o URL também contém um número de porta, a notação é:

https://[2001:db8:85a3:8d3:1319:8a2e:370:7348]:443/

onde o 443 final é o número da porta do exemplo.

Endereços IPv6 literais com escopo (com índice de zona)

Para endereços com escopo diferente do global (conforme descrito abaixo), e em particular para endereços link-local, a escolha da interface de rede para enviar um pacote pode depender de qual zona o endereço pertence: o mesmo endereço pode ser válido em diferentes zonas e estar em uso por um host diferente em cada uma dessas zonas. Mesmo se um único endereço não estiver em uso em zonas diferentes, os prefixos de endereço para endereços nessas zonas ainda podem ser idênticos, o que torna o sistema operacional incapaz de selecionar uma interface de saída com base nas informações na tabela de roteamento (que é baseada em prefixo).

A fim de resolver a ambiguidade em endereços textuais, um índice de zona deve ser anexado ao endereço, os dois separados por um sinal de porcentagem (%).[10] A sintaxe dos índices de zona é uma string dependente da implementação, embora os índices de zona numéricos também devam ser universalmente suportados. O endereço link-local

fe80::1ff:fe23:4567:890a

poderia ser expresso por

fe80::1ff:fe23:4567:890a%eth2

ou:

fe80::1ff:fe23:4567:890a%3

O primeiro (usando um nome de interface) é comum na maioria dos sistemas operacionais do tipo Unix (BSD, Linux ou macOS, por exemplo). A última (usando um número de interface) é a sintaxe padrão no Microsoft Windows, mas como o suporte para essa sintaxe é obrigatório, também está disponível em outros sistemas operacionais.

Os sistemas operacionais baseados em BSD (incluindo o macOS) também suportam uma sintaxe alternativa não padrão, em que um índice de zona numérico é codificado na segunda palavra de 16 bits do endereço. Por exemplo:

fe80:3::1ff:fe23:4567:890a

Em todos os sistemas operacionais mencionados acima, o índice de zona para endereços link-local na verdade se refere a uma interface, não a uma zona. Como várias interfaces podem pertencer à mesma zona (por exemplo, quando conectadas ao mesmo switch), na prática, dois endereços com identificadores de zona diferentes podem realmente ser equivalentes e se referir ao mesmo host no mesmo link.

Uso de índices de zona em URIs

Quando usado em identificadores uniformes de recursos (URI), o uso do sinal de porcentagem causa um conflito de sintaxe, portanto, deve ser escapado por meio de codificação de porcentagem,[11] por exemplo:

http://[fe80::1ff:fe23:4567:890a%25eth0]/

Endereços IPv6 literais em nomes de caminho UNC

Nos sistemas operacionais Microsoft Windows, os endereços IPv4 são identificadores de local válidos nos nomes de caminho da convenção de nomenclatura uniforme (UNC). No entanto, os dois pontos são um caractere não permitido em um nome de caminho UNC. Portanto, o uso de endereços IPv6 também não é permitido em nomes UNC. Por esse motivo, a Microsoft implementou um algoritmo de transcrição para representar um endereço IPv6 na forma de um nome de domínio que pode ser usado em caminhos UNC. Para tanto, a Microsoft registrou e reservou o domínio de segundo nívelo ipv6-literal.net na Internet (embora tenha desistido do domínio em janeiro de 2014[12]). Os endereços de IPv6 são transcritos como um nome de host ou nome de subdomínio neste espaço de nomes, da seguinte maneira:

2001:db8:85a3:8d3:1319:8a2e:370:7348

é escrito como

2001-db8-85a3-8d3-1319-8a2e-370-7348.ipv6-literal.net

Essa notação é resolvida automaticamente localmente pelo software da Microsoft, sem nenhuma consulta aos servidores de nomes DNS.

Se o endereço IPv6 contiver um índice de zona, ele será anexado à parte do endereço após um caractere "s":

fe80::1ff:fe23:4567:890a%3

é escrito como

fe80--1ff-fe23-4567-890as3.ipv6-literal.net

Escopos de endereços

Todo endereço IPv6, exceto o endereço não especificado (::), tem um "escopo",[10] que especifica em qual parte da rede ele é válido.

Unicast

Para endereços unicast, dois escopos são definidos: o link-local e o global.

Os endereços link-local e o endereço de loopback têm escopo link-local, o que significa que só podem ser usados em uma única rede conectada diretamente (link). Todos os outros endereços (incluindo os endereços locais exclusivos) têm escopo global (ou universal), o que significa que eles são (ou poderiam ser) globalmente roteáveis e podem ser usados para se conectar a endereços com escopo global em qualquer lugar ou a endereços com escopo de link-local na rede conectada diretamente. Pacotes com origem ou destino em um escopo não podem ser roteados para um escopo diferente.[13]

Os endereços locais exclusivos têm escopo global, mas não são administrados globalmente. Como resultado, apenas outros hosts no mesmo domínio administrativo (uma organização, por exemplo) ou dentro de um domínio administrativo cooperativo são capazes de alcançar esses endereços, se encaminhados corretamente. Como seu escopo é global, esses endereços são válidos como um endereço de origem ao se comunicar com qualquer outro endereço de escopo global, mesmo que seja impossível rotear pacotes do destino de volta para a origem.

Anycast

Os endereços anycast são sintaticamente idênticos e indistinguíveis dos endereços unicast. Sua única diferença é administrativa. Os escopos para endereços anycast são, portanto, os mesmos dos endereços unicast.

Multicast

Para endereços multicast, os quatro bits menos significativos do segundo octeto de endereço (ff0s::) identificam o escopo do endereço, ou seja, o domínio no qual o pacote multicast deve ser propagado. Os escopos predefinidos e reservados[1] são:

Valores de escopo
ValorNome do escopoNotas
0x0reservado
0x1interface-localO escopo interface-local abrange apenas uma única interface em um nó e é útil apenas para transmissão loopback de multicast.
0x2link-localO escopo link-local abrange a mesma região topológica que o escopo unicast correspondente.
0x3realm-localO escopo realm-local é definido como maior do que o link-local, determinado automaticamente pela topologia da rede e não deve ser maior do que os escopos a seguir.[14]
0x4admin-localO escopo admin-local é o menor escopo que deve ser configurado administrativamente, ou seja, não derivado automaticamente da conectividade física ou outra configuração não relacionada ao multicast.
0x5site-localO escopo site-local se destina a abranger um único site pertencente a uma organização.
0x8organization-localO escopo organization-local se destina a abranger todos os sites pertencentes a uma única organização.
0xeglobalO escopo global abrange todos os nós alcançáveis na Internet. Portanto, é ilimitado.
0xfreservado

Todos os outros escopos não foram atribuídos e estão disponíveis aos administradores para definir regiões adicionais.

Espaço de endereçamento

Alocação geral

O gerenciamento do processo de alocação de endereços IPv6 é delegado à autoridade para atribuição de números de 'Internet (IANA)[15] pelo Internet architecture board e pelo Grupo de direção de engenharia da Internet. Sua principal função é a atribuição de grandes blocos de endereços aos registros regionais da Internet (RIRs), que tem delegada a tarefa de alocação a provedores de serviços de rede e outros registros locais. A IANA mantém a lista oficial de alocações do espaço de endereçamento IPv6 desde dezembro de 1995.[16]

Apenas um oitavo do espaço total de endereços é atualmente alocado para uso na Internet, 2000 ::/3, a fim de fornecer agregação de rotas eficiente, reduzindo assim o tamanho das tabelas de roteamento da Internet; o restante do espaço de endereço IPv6 é reservado para uso futuro ou para fins especiais. O espaço de endereço é atribuído aos RIRs em grandes blocos de /23 até /12.[17]

Os RIRs atribuem blocos menores aos registros locais de Internet que os distribuem aos usuários. Estes são tipicamente em tamanhos de /19 à /32.[18][19][20] Os endereços são tipicamente distribuídos em blocos de tamanhos /48 à /56 para os usuários finais.[21]

Registros de atribuição global unicast podem ser encontrados nos vários RIRs ou outros sites.[22]

Os endereços IPv6 são atribuídos à organizações em blocos muito maiores em comparação com as atribuições de endereço IPv4. A alocação recomendada é um bloco /48 que contém 280 endereços, sendo 248 ou cerca de 28×1014 vezes maior que todo o espaço de endereço IPv4 de 232 endereços e 72×1016 vezes maior que os blocos /8 de endereços IPv4, que são as maiores alocações de endereços IPv4. O conjunto total, no entanto, é suficiente para o futuro previsível, porque há 2128 (exatamente 340.282.366.920.938.463.463.374.607.431.768.211.456) ou cerca de 34×1038 (340 trilhões trilhões de trilhões) endereços IPv6 exclusivos.

Cada RIR pode dividir cada um dos seus múltiplos blocos /23 em 512 blocos /32, tipicamente um para cada ISP. Um ISP pode dividir o seu bloco /32 em 65536 blocos /48, normalmente um para cada cliente.[23] Os clientes podem criar 65536 redes /64 de seu bloco /48 atribuído , cada um com 264 (18.446.744.073.709.551.616) endereços. Em contraste, todo o espaço de endereço IPv4 tem apenas 232 (exatamente 4.294.967.296 ou cerca de 43×109) endereços.

Por projeto, apenas uma pequena fração do espaço de endereço será realmente usada. O espaço de endereço grande garante que os endereços estejam quase sempre disponíveis, o que torna o uso da tradução de endereços de rede (NAT) para fins de conservação de endereços completamente desnecessário. O NAT foi cada vez mais usado em redes IPv4 para ajudar a aliviar o esgotamento do endereço IPv4.

Alocação especial

Para permitir mudanças de provedor sem renumeração, o espaço de endereço independente do provedor, atribuído diretamente ao usuário final pelos RIRs, é obtido do intervalo especial 2001:678::/29.

Os pontos de troca da Internet (IXPs) são atribuídos a endereços especiais do intervalo 2001:7f8::/29 para comunicação com seus ISPs conectados.[24] Os servidores de nome raiz receberam endereços do mesmo intervalo.

Endereços anycast reservados

O endereço mais baixo dentro de cada prefixo de sub-rede (o identificador de interface definido com todos os zeros) é reservado como o endereço anycast do "roteador de sub-rede".[1] Os aplicativos podem usar esse endereço ao se comunicar com qualquer um dos roteadores disponíveis, pois os pacotes enviados para esse endereço são entregues a apenas um roteador.

Os 128 endereços mais altos em cada prefixo de sub-rede /64 são reservados para serem usados como endereços anycast.[25] Esses endereços geralmente têm os primeiros 57 bits do identificador de interface definidos como 1, seguido pela ID anycast de 7 bits. Os prefixos para a rede, incluindo sub-redes, devem ter um comprimento de 64 bits, caso em que o bit universal/local deve ser definido como 0 para indicar que o endereço não é globalmente exclusivo. O endereço com valor 0x7e nos 7 bits menos significativos é definido como um endereço anycast de agente doméstico IPv6 móvel. O endereço com valor 0x7f (todos os bits 1) é reservado e não pode ser usado. Não são feitas mais atribuições desse intervalo, portanto, os valores de 0x00 à 0x7d também são reservados.

Endereços especiais

Existem vários endereços com significado especial no IPv6.[26] Eles representam menos de 2% de todo o espaço de endereço:

Blocos de endereços especiais
Bloco de endereço (CIDR)Primeiro endereçoÚltimo endereçoNúmero de endereçosUsoPropósito
::/0::ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff2128RoteamentoRota padrão (nenhuma rota específica)
::/128::::1SoftwareEndereço não especificado
::1/128::1::11HostEndereço loopback — uma interface virtual que retorna todo o tráfego para si mesma, o host local
::ffff:0:0/96::ffff:0.0.0.0::ffff:255.255.255.2552128 - 96 = 232 = 4294967296SoftwareEndereços mapeados para IPv4
::ffff:0:0:0/96::ffff:0:0.0.0.0::ffff:0:255.255.255.255232SoftwareEndereços IPv4 traduzidos
64:ff9b::/9664:ff9b::0.0.0.064:ff9b::255.255.255.255232Internet globalTradução IPv4/IPv6[27]
64:ff9b:1::/4864:ff9b:1::0.0.0.064:ff9b:1:ffff:ffff:ffff:255.255.255.255280internets privadasTradução IPv4/IPv6[28]
100::/64100::100::ffff:ffff:ffff:ffff264RoteamentoPrefixo de descarte[29]
2001:0000:/322001::2001::ffff:ffff:ffff:ffff:ffff:ffff296

Internet global

Teredo tunneling[30]
2001:20::/282001:20::2001:2f:ffff:ffff:ffff:ffff:ffff:ffff2100SoftwareORCHIDv2[31]
2001:db8::/322001:db8::2001:db8:ffff:ffff:ffff:ffff:ffff:ffff296DocumentaçãoEndereços usados em documentação e exemplo de código-fonte[32]
2002::/162002::2002:ffff:ffff:ffff:ffff:ffff:ffff:ffff2112Internet globalO esquema de endereçamento 6to4 (obsoleto)[33]
fc00::/7fc00::fdff:ffff:ffff:ffff:ffff:ffff:ffff:ffff2121internets privadasEndereço local exclusivo[34]
fe80::/10fe80::fe80::ffff:ffff:ffff:ffff264LinkEndereço link-local
ff00::/8ff00::ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff2120Internet globalEndereço multicast

Endereços unicast

Rota padrão

  • ::/0 - O endereço de rota padrão (correspondente a 0.0.0.0/0 em IPv4) para endereços de destino (unicast, multicast e outros) não especificados em outras partes em uma tabela de roteamento.

Endereço não especificado

  • ::/128 - O endereço com todos os bits zero é chamado de endereço não especificado (correspondente ao 0.0.0.0/32 no IPv4). Este endereço nunca deve ser atribuído a uma interface e deve ser usado apenas no software antes que o aplicativo tenha aprendido o endereço de origem do seu host apropriado para uma conexão pendente. Os roteadores não devem encaminhar pacotes com o endereço não especificado. Os aplicativos podem estar "ouvindo" uma ou mais interfaces específicas para conexões de entrada, que são mostradas nas listagens de conexões ativas da Internet por um endereço IP específico (e um número de porta, separados por dois pontos). Quando o endereço não especificado é mostrado, significa que um aplicativo está ouvindo conexões recebidas em todas as interfaces disponíveis.

Endereços locais

  • ::1/128 - O endereço de loopback é um endereço localhost unicast (correspondente a 127.0.0.1/8 no IPv4). Se um aplicativo em um host envia pacotes para este endereço, a pilha IPv6 lançará esses pacotes de volta na mesma interface virtual.
  • fe80::/10 - Os endereços no prefixo link-local são exclusivos e válidos apenas em um único link (comparável aos endereços de configuração automática 169.254.0.0/16 do IPv4). Dentro deste prefixo, apenas uma sub-rede é alocada (54 bits zero), produzindo um formato efetivo de fe80::/64. Os 64 bits menos significativos são geralmente escolhidos como o endereço de hardware de interface construído no formato EUI-64 modificado. Um endereço link-local é necessário em cada interface habilitada para IPv6 - em outras palavras, os aplicativos podem confiar na existência de um endereço link-local, mesmo quando não há roteamento IPv6.

Endereços locais exclusivos

  • fc00::/7 - Endereços locais exclusivos (ULAs) destinam-se à comunicação local[34] (comparável aos endereços privados 10.0.0.0/8, 172.16.0.0/12 e 192.168.0.0/16 do IPv4). Eles são roteáveis apenas dentro de um conjunto de sites de cooperação e o bloco é dividido em duas metades. A metade inferior do bloco (fc00::/8) foi destinada a prefixos globalmente alocados, mas um método de alocação ainda não foi definido. A metade superior (fd00::/8) é usada para endereços "probabilisticamente exclusivos" nos quais o prefixo /8 é combinado com um número pseudoaleatório, gerado localmente, de 40 bits para obter um prefixo privado /48. A maneira pela qual tal número de 40 bits é escolhido resulta em apenas uma chance insignificante de que dois sites, que desejam mesclar ou comunicar-se uns com os outros, usarão o mesmo número de 40 bits e, assim, o mesmo prefixo.[34]

Transição do IPv4

  • ::ffff:0:0/96 - Este prefixo é usado para mecanismos de transição IPv6 e designado como um endereço IPv6 mapeado para IPv4. Com algumas exceções, esse tipo de endereço permite o uso transparente dos protocolos da camada de transporte sobre IPv4 por meio da interface de programação de aplicações de rede IPv6. Os aplicativos de servidor só precisam abrir um único soquete de escuta para lidar com conexões de clientes que usam protocolos IPv6 ou IPv4. Os clientes IPv6 serão tratados nativamente por padrão e os clientes IPv4 aparecem como clientes IPv6 em seus endereços IPv6 mapeados para IPv4. A transmissão é tratada de forma semelhante, soquetes estabelecidos podem ser usados para transmitir datagramas IPv4 ou IPv6, com base na ligação a um endereço IPv6 ou um endereço mapeado para IPv4.
  • ::ffff:0:0:0/96 - Um prefixo usado para endereços para IPv4 traduzidos. Eles são usados pelo protocolo SIIT (de tradução IP/ICMP sem estado).[35]
  • 64:ff9b::/96 - O prefixo "conhecido". Endereços com este prefixo são usados para tradução automática de IPv4/IPv6.[27]
  • 64:ff9b:1::/48 - Um prefixo para endereços IPv4 /IPv6 traduzidos localmente.

Os endereços com este prefixo podem ser usados para vários mecanismos de tradução IPv4/IPv6, como NAT64 e SIIT.[28]

  • 2002::/16 - Este prefixo foi usado para o endereçamento 6to4 (um endereço 192.88.99.0/24, da rede IPv4, também foi usado). O esquema de endereçamento 6to4 está obsoleto.[33]

Endereços para fins especiais

A IANA reservou um bloco de endereços de 2001::/23, dividido no intervalo de 64 prefixos de rede de 2001:0000::/29 a 2001:01f8::/29 denominado "Sub-TLA ID", para atribuições especiais[26][36] . Três atribuições deste bloco estão atualmente atribuídas:
  • 2001::/32 - Usado para tunelamento Teredo.
  • 2001:2::/48 - Usado para avaliação comparativa IPv6 (correspondendo ao 198.18.0.0/15 para avaliação comparativa IPv4).Atribuído ao grupo de trabalho da metodologia de avaliação comparativa (BMWG).[37]
  • 2001:20::/28 - ORCHIDv2 (identificadores de hash criptográfico roteável de sobreposição).[31] Esses são endereços IPv6 não roteados usados para identificadores de hash criptográfico.

Documentação

  • 2001:db8::/32 - Este prefixo é usado em documentação[32] (correspondendo aos endereços 192.0.2.0/24, 198.51.100.0/24 e 203.0.113.0/24 do IPv4).[38] Esses endereços devem ser usados em qualquer lugar em que um exemplo de endereço IPv6 seja fornecido ou cenários de rede modelo são descritos.

Descarte

  • 100::/64 - Este prefixo é usado para descartar o tráfego.[29]

Endereços preteridos e obsoletos

Endereços multicast

Os endereços multicast ff0x:: (onde x é qualquer valor hexadecimal) são reservados[1] e não devem ser atribuídos a nenhum grupo multicast. A autoridade para atribuição de números de Internet (IANA) gerencia os endereços reservados.[39]

Alguns endereços multicast IPv6 comuns são os seguintes:

EndereçoDescriçãoEscopos disponíveis
ff0x::1Todos os endereços de nós, identifica o grupo de todos os nós IPv6Disponível nos escopos 1 ( interface-local) e 2 (link-local):
  • ff01::1 → Todos os nós em interface-local
  • ff02::1 → Todos os nós em link-local
ff0x::2Todos os roteadoresDisponível nos escopos 1 ( interface-local), 2 (link-local) e 5 ((site-local):
  • ff01::2 → Todos os roteadores na interface-local
  • ff02::2 → Todos os roteadores no link-local
  • ff05::2 → Todos os roteadores no site-local
ff02::5OSPFIGP2 (link-local)
ff02::6Roteadores designados por OSPFIGP2 (link-local)
ff02::9Roteadores RIP2 (link-local)
ff02::aRoteadores EIGRP2 (link-local)
ff02::dTodos os roteadores PIM2 (link-local)
ff02::1aTodos os roteadores RPL2 (link-local)
ff0x::fbmDNSv6Disponível em todos os âmbitos
ff0x::101Todos os servidores NTPDisponível em todos os âmbitos
ff02::1:1Nome do link2 (link-local)
ff02::1:2Todos os agentes DHCP (DHCPv6)2 (link-local)
ff02::1:3Resolução de nome multicast link-local2 (link-local)
ff05::1:3Todos os servidores DHCP (DHCPv6)5 (site-local)
ff02::1:ff00:0/104Endereço multicast de nó solicitado. Ver abaixo2 (link-local)
ff02::2:ff00:0/104Consultas de informações de nó2 (link-local)

Endereço multicast de nó solicitado

Os 24 bits menos significativos do ID de grupo de um endereço multicast de nó solicitado são preenchidos com os 24 bits menos significativos do endereço unicast ou anycast da interface. Esses endereços permitem a resolução do endereço da camada de link por meio do protocolo de descoberta de vizinhos (NDP) no link sem perturbar todos os nós da rede local. Um host é necessário para ingressar em um grupo multicast de nó solicitado para cada um de seus endereços unicast ou anycast configurados.

Configuração automática de endereço sem estado

Na inicialização do sistema, um nó cria automaticamente um endereço link-local em cada interface habilitada para IPv6, mesmo se os endereços globalmente roteáveis forem configurados manualmente ou obtidos por meio de "protocolos de configuração" (veja abaixo). Ele faz isso de forma independente e sem qualquer configuração prévia por configuração automática de endereço sem estado (SLAAC), [39] usando um componente do NDP. Este endereço é selecionado com o prefixo fe80::/64.

No IPv4, os "protocolos de configuração" típicos incluem DHCP ou PPP. Embora o DHCPv6 exista, os hosts IPv6 normalmente usam o NDP para criar um endereço unicast roteável globalmente: o host envia solicitações de solicitação de roteador e um roteador IPv6 responde com uma atribuição de prefixo.[40]

Os 64 bits inferiores desses endereços são preenchidos com um identificador de interface de 64 bits no formato EUI-64 modificado. Esse identificador é geralmente compartilhado por todos os endereços configurados automaticamente dessa interface, o que tem a vantagem de apenas um grupo multicast precisar ser unido para a descoberta de vizinho. Para isso, é utilizado um endereço multicast, formado a partir do prefixo de rede ff02::1:ff00:0/104 e dos 24 bits menos significativos do endereço.

EUI-64 modificado

Um identificador de interface de 64 bits é mais comumente derivado de seu endereço MAC de 48 bits. Um endereço MAC 00-0C-29-0C-47-D5 é transformado em um EUI-64 de 64 bits inserindo FF-FE no meio: 00-0C-29-FF-FE-0C-47-D5. Quando este EUI-64 é usado para formar um endereço IPv6, ele é modificado:[1] o significado do bit universal/local (o 7º bit mais significativo do EUI-64, começando em 1) é invertido, de modo que um 1 agora significa universal. Para criar um endereço IPv6 com o prefixo de rede 2001:db8:1:2::/64, ele produz o endereço 2001:db8:1:2:020c:29ff:fe0c:47d5 (com o bit universal/local, o segundo bit menos significativo do quarteto sublinhado, invertido para 1 neste caso porque o endereço MAC é universalmente único).

Detecção de endereço duplicada

A atribuição de um endereço IPv6 unicast a uma interface envolve um teste interno para a singularidade desse endereço usando as mensagens de solicitação vizinha e anúncio vizinho (ICMPv6 tipo 135 e 136). Durante o processo de estabelecer a singularidade, um endereço tem um estado provisório.

O nó junta-se ao endereço multicast de nó solicitado para o endereço provisório (se ainda não foi feito assim) e envia solicitações vizinhas, com o endereço provisório como endereço de destino e endereço não especificado (::/128) como endereço de origem. O nó também se junta ao endereço multicast FF02::1 de todos os hosts, então será capaz de receber anúncios vizinhos.

Se um nó receber uma solicitação vizinha com seu próprio endereço provisório como endereço de destino, esse endereço não é único. O mesmo é verdade se o nó receber um anúncio vizinho com o endereço provisório como a fonte do anúncio. Somente depois de ter estabelecido com sucesso que um endereço seja único, ele pode ser atribuído e usado por uma interface.

Tempo de vida de endereço

Cada endereço IPv6 que é compelido a uma interface tem uma vida útil fixa. Os tempos de vida são infinitos, a menos que sejam configurados para um período mais curto. Existem dois tempos de vida que regem o estado de um endereço: a vida útil preferencial e a vida útil válida.[41] Os tempos de vida podem ser configurados em roteadores que fornecem valores usados para autoconfiguração ou especificados quando configurando endereços manualmente em interfaces.

Quando um endereço é atribuído a uma interface, ele recebe o status de "preferencial", que é mantido durante sua vida útil preferencial. Depois que o tempo de vida expira, o status se torna "depreciado" e nenhuma nova conexão deve ser feita usando este endereço. O endereço se torna "inválido" após sua vida válida também expirar. Então, o endereço é removido da interface e pode ser atribuído em outro lugar na Internet.

Nota: Na maioria dos casos, a vida não expira porque novos anúncios de roteadores (RAs) atualizam os temporizadores. Mas se não houver mais RAs, eventualmente, os tempos de vida preferidos passam e os endereços se tornam "depreciados".

Endereços temporários

Os endereços MAC globalmente exclusivos e estáticos, usados pela autoconfiguração de endereço sem estado para criar identificadores de interface, oferecem uma oportunidade de rastrear o equipamento do usuário (através de alterações de tempo e prefixo de rede IPv6).[42] Para reduzir a perspectiva de uma identidade de usuário estar permanentemente vinculada a uma parte do endereço IPv6, um nó pode criar endereços temporários com identificadores de interface baseados em strings aleatórias de tempos variáveis[43] e tempos de vida relativamente curtos (horas à dias), após os quais serão substituídos por novos endereços.

Endereços temporários podem ser usados como endereço de origem para conexões de origem, enquanto hosts externos usam um endereço público consultando o sistema de nomes de domínio (DNS).

As interfaces de rede configuradas para IPv6 usam endereços temporários por padrão no OS X Lion e sistemas Apple posteriores, bem como no Windows Vista, Windows Server 2008 e sistemas Microsoft posteriores.

Endereços gerados criptograficamente

Como um meio de aumentar a segurança para endereços gerados criptograficamente (ou CGAs), o protocolo de descoberta de vizinhos foi introduzido em 2005[44] como parte do protocolo seguro de descoberta de vizinho (SEND).

Esse endereço é gerado usando duas funções hash que usam várias entradas. A primeira usa uma chave pública e um modificador aleatório e a final vai incrementando repetidamente até que uma quantidade específica de bits zero da hash resultante seja adquirida (comparável à área "prova de trabalho" na mineração de Bitcoin.) A segunda função hash leva o prefixo da rede e o valor hash anterior. Os 64 bits menos significativos do segundo resultado de hash são anexados ao prefixo de rede de 64 bits para formar um endereço de 128 bits.

As funções hash também podem ser usadas para verificar se um endereço IPv6 específico atende ao requisito de ser um CGA válido. Dessa forma, a comunicação pode ser configurada exclusivamente entre endereços confiáveis.

Endereços de privacidade estáveis

O uso de endereços autoconfigurados sem estado tem sérias implicações para questões de segurança e privacidade,[45] porque o endereço de hardware subjacente (mais tipicamente o endereço MAC) é exposto além da rede local, permitindo o rastreamento das atividades do usuário e a correlação das contas do usuário com outras informações. Ele também permite estratégias de ataque específicas do fornecedor e reduz o tamanho do espaço de endereço para a busca de alvos de ataque.

Endereços de privacidade estáveis foram introduzidos para remediar essas deficiências. Eles são estáveis dentro de uma rede específica, mas mudam quando mudam para outra, para melhorar a privacidade. Eles são escolhidos de forma determinística, mas aleatória, em todo o espaço de endereço de rede.

A geração de um endereço de privacidade estável é baseada em uma função hash que usa vários parâmetros estáveis. É específico da implementação, mas é recomendável usar pelo menos o prefixo de rede, o nome de interface de rede, um contador de endereço duplicado e uma chave secreta. O valor hash resultante é usado para construir o endereço final: normalmente, os 64 bits menos significativos são concatenados ao prefixo de rede de 64 bits, para produzir um endereço de 128 bits. Se o prefixo de rede for menor que 64 bits, mais bits de hash serão usados. Se o endereço resultante não entrar em conflito com os endereços existentes ou reservados, ele será atribuído à interface.

Seleção de endereço padrão

As interfaces de rede habilitadas para IPv6 geralmente têm mais de um endereço IPv6 (um link-local e um global, por exemplo). Eles também podem ter endereços temporários que mudam depois que um determinado tempo de vida útil expirou. O IPv6 introduz os conceitos de escopos de endereços e preferência de seleção, gerando várias opções para as seleções de endereço de origem e destino na comunicação com outro host.

O algoritmo de seleção de preferência publicado na RFC 6724 seleciona o endereço mais apropriado para uso em comunicações com um destino particular, incluindo o uso de endereços mapeados para IPv4 em implementações de pilha dupla.[46] Ele usa uma tabela de preferências configuráveis que associa cada prefixo de roteamento a um nível de precedência. A tabela padrão possui o seguinte conteúdo:[46]

PrefixoPrecedênciaIndicaçãoUso
::1/128500Localhost
::/0401Unicast padrão
::ffff:0:0/96354Endereço IPv6 mapeado para IPv4
2002::/163026to4
2001::/3255Tunelamento Teredo
fc00::/7313Endereço local exclusivo
::/9613Endereços compatíveis com IPv4 (obsoleto)
fec0::/10111Endereço site-local (obsoleto)
3ffe::/161126bone (revertido)

A configuração padrão dá preferência ao uso do IPv6 e seleciona endereços de destino dentro do menor escopo possível para que a comunicação link-local seja preferida, em vez de caminhos roteados globalmente, quando igualmente adequado. A tabela de políticas de prefixo é semelhante a uma tabela de roteamento, com o valor de precedência servindo como a função de um custo de link, onde a preferência mais alta é expressa como um valor maior. É preferível que os endereços de origem tenham o mesmo valor de indicação do endereço de destino. Os endereços são correspondidos a prefixos com base na mais longa sequência de bits mais significativa correspondente. Os endereços de origem dos candidatos são obtidos do sistema operacional e os endereços de destino dos candidatos podem ser consultados por meio do sistema de nomes de domínio (DNS).

Para minimizar o tempo de estabelecimento de conexões quando vários endereços estão disponíveis para comunicação, o algoritmo Happy Eyeballs foi desenvolvido. Ele consulta o sistema de nomes de domínio (DNS) em busca de endereços IPv6 e IPv4 do host de destino, classifica os endereços candidatos usando a tabela de seleção de endereços padrão e tenta estabelecer conexões em paralelo. A primeira conexão estabelecida aborta as tentativas atuais e futuras de se conectar a outros endereços.

Sistema de nome de domínio

No sistema de nomes de domínio (DNS), os hostnames são mapeados para endereços IPv6 pelos registros de recursos AAAA, chamados de registros quad-a.[47] Para pesquisa inversa, o IETF reservou o domínio ip6.arpa, onde o espaço de nome é hierarquicamente dividido pela representação hexadecimal de 1 dígito de unidades nibble (4 bits) do endereço IPv6.

Assim como no IPv4, cada host é representado no DNS por dois registros DNS (um registro de endereço e um registro de ponteiro de mapeamento inverso). Por exemplo, um computador host chamado derrick na zona example.com tem o endereço local exclusivo fdda:5cc1:23:4::1f. Seu registro de endereço quad-a é

 derrick.example.com.  IN  AAAA  fdda:5cc1:23:4::1f

e seu registro de ponteiro IPv6 é

f.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.4.0.0.0.3.2.0.0.1.c.c.5.a.d.d.f.ip6.arpa.  IN  PTR   derrick.example.com.

Este registro de ponteiro pode ser definido em várias zonas, dependendo da cadeia de delegação de autoridade na zona d.f.ip6.arpa.

O protocolo DNS é independente de seu protocolo de camada de transporte. Consultas e respostas podem ser transmitidas por transportes IPv6 ou IPv4, independentemente da família de endereços dos dados solicitados.

Áreas de um registro AAAA (quad-a)
NAMENome de domínio
TYPEAAAA (28)
CLASSInternet (1)
TTLTempo de vida em segundos
RDLENGTHComprimento da área RDATA
RDATAEndereço IPv6 de 128 bits, ordem de byte de rede

Notas históricas

Endereços depreciados e obsoletos

  • O prefixo site-local fec0::/10 especifica que o endereço é válido apenas dentro da rede do site de uma organização. Fazia parte da arquitetura original de endereçamento[48] em dezembro de 1995, mas sua utilização foi reprovada em setembro de 2004[49] porque a definição do termo local foi ambígua, o que levou a regras de roteamento confusas. Novas redes não devem suportar este tipo especial de endereço. Em outubro de 2005, uma nova especificação[34] substituiu este tipo de endereço por endereços locais exclusivos.
  • O bloco de endereços 200::/7 foi definido como um prefixo mapeado OSI NSAP em agosto de 1996[50][51] mas foi reprovado em dezembro de 2004.[52]
  • O prefixo de valor zero de 96 bits ::/96, originalmente conhecido como endereços compatíveis com IPv4, foi mencionado em 1995[48] mas descrito pela primeira vez em 1998.[53] Essa gama de endereços foi usada para representar endereços IPv4 dentro de uma tecnologia de transição IPv6. Tal endereço IPv6 tem seus primeiros (mais significativos) 96 bits definidos como zero, enquanto seus últimos 32 bits são o endereço IPv4 representado. Em fevereiro de 2006, a força tarefa de engenharia da Internet (IETF) depreciou o uso de endereços compatíveis com IPv4.[1] O único uso remanescente deste formato de endereço é para representar um endereço IPv4 em uma tabela ou banco de dados com membros de tamanho fixo que também poderá armazenar um endereço IPv6.
  • O bloco de endereços 3ffe::/16 foi alocado para testes para a rede 6bone em dezembro de 1998.[53] Antes disso, o bloco de endereço 5f00::/8 foi usado para este mesmo propósito. Ambos os blocos de endereços foram devolvidos à reserva de endereços em junho de 2006.[54]
  • Devido a problemas operacionais com o 6to4, o uso do bloco de endereço 2002::/16 está diminuindo, pois o mecanismo 6to4 está obsoleto desde maio de 2015.[33] Embora o bloco de endereço IPv4 192.88.99.0/24 esteja obsoleto, o 2002::/16 não está.
  • Em abril de 2007, o bloco de endereços 2001:10::/28 foi atribuído para identificadores hash criptográficos roteáveis de sobreposição (ORCHID).[55] Foi planejado para uso experimental. Em setembro de 2014, uma segunda versão do ORCHID foi especificada[31] e, com a introdução do bloco 2001:20::/28, o bloco original foi devolvido à IANA.

Diversos

  • Para a pesquisa reversa de DNS, os endereços IPv6 foram originalmente registrados na zona DNS ip6.int, porque era esperado que o domínio de nível superior arpa fosse retirado. Em 2000, o conselho de arquitetura da Internet (IAB) reverteu essa intenção e decidiu em 2001 que o arpa deveria manter sua função original. Os domínios em ip6.int foram movidos para ip6.arpa[56] e a zona ip6.int foi oficialmente removida em 6 de junho de 2006.
  • Em março de 2011, a IETF refinou as recomendações para a alocação de blocos de endereços para sites finais.[21] Em vez de atribuir um /48, /64 ou /128 (de acordo com as visões do IAB e do IESG de 2001),[57] os provedores de serviço de Internet devem considerar a atribuição de blocos menores (um /56, por exemplo) aos usuários finais. As políticas dos registros regionais ARIN, RIPE e APNIC incentivam atribuições de /56 quando apropriado.[21]
  • Originalmente, existiam duas propostas para traduzir nomes de domínio para endereços IPv6: uma usando registros AAAA[58], a outra usando registros A6[59]. Os registros AAAA, o método que prevaleceu, são comparáveis aos registros A para IPv4, fornecendo um mapeamento simples do nome do host para o endereço IPv6. O método usando registros A6 usava um esquema hierárquico, no qual o mapeamento de grupos subsequentes de bits de endereço era especificado por registros A6 adicionais, fornecendo a possibilidade de renumerar todos os hosts em uma rede alterando um único registro A6. Como os benefícios do formato A6 não foram considerados para superar os custos[60][61][62], o método foi movido para o status experimental em 2002 e, em 2012, para o status histórico[63].
  • Em 2009, muitos resolvedores de DNS em dispositivos e roteadores NAT de redes domésticas manipulavam registros AAAA de maneira inadequada.[64] Alguns deles simplesmente descartavam as solicitações de DNS para tais registros, em vez de retornar adequadamente a resposta de DNS negativa apropriada. Como a solicitação é descartada, o host que a envia precisa aguardar o fim do tempo limite de espera para a próxima ação. Isso geralmente causa lentidão ao se conectar a hosts IPv6/IPv4 de pilha dupla, pois o software cliente aguardará a falha da conexão IPv6 antes de tentar o IPv4.

Notas

Referências

Ligações externas