Os designers definiram alguns tipos de endereços e deixaram muito disto para futuras definições quando novas necessidades surgirem. A RFC 4291 / IP Version 6 Addressing Architecture define o esquema utilizado no endereçamento atual.
Vamos agora dar uma olhada nos diferentes tipos de prefixos (e também em tipos de endereços):
Estes são endereços epeciais que são válidos somente no link de uma interface. Usando este endereço como destino, os pacotes nunca serão encaminhados a um router. Isto é usado para links de comunicação, tais como:
Há alguém está aqui neste link ?
Há alguém aqui com endereços especiais (ex. procurando por um router) ?
Eles começam com (onde "x" é qualquer caractere hexadecimal, normalmente "0")
fe8x: <- atualmente é o único em uso fe9x: feax: febx: |
Um endereço com este prefixo é encontrado em cada interface com IPv6 habilitado após a auto-configuração stateless (a qual é normalmente sempre o caso).
Estes endereços são similares aos daRFC 1918 / Address Allocation for Private Internets em uso atualmente em IPv4, com a vantagem adicional de que qualquer pessoa que usar este tipo de endereço tem a capacidade de usar até 16 bits para a definição máxima de 65535 subredes. Comparável com o 10.0.0.0/8 do IPv4.
Outra vantagem: como é possível colocar mais de 1 endereço em uma interface com IPv6, voce pode configurar um endereço de "site local" junto com um endereço global.
Ele começa com:
fecx: <- mais usado, mais comum fedx: feex: fefx: |
(onde o "x" é qualquer caractere hexadecimal, geralmente um "0")
Este tipo de endereço não deveria mais ser usado, RFC 3879 / Deprecating Site Local Addresses, mas para um teste em laboratório, estes endereços ainda continuam sendo uma boa escolha (IMHO - em minha humilde opinião).
Por causa da definição original de endereços de site local não serem únicos, pode haver algum problema se duas redes já configuradas forem se conectar em um futuro próximo (overlap de subredes). Este e outros problemas foram os motivos para um novo tipo de endereço definido naRFC 4193 / Unique Local IPv6 Unicast Addresses.
Ele começa com:
fcxx: fdxx: <- atualmente o único em uso |
Uma parte do prefixo (40 bits) é gerada usando um algoritmo pseudo-randomico e é improvável que dois resultados gerados por este algoritmo sejam iguais.
Exemplo de um prefixo gerado por este algoritmo (veja em: Goebel Consult / createLULA):
fd0f:8b72:ac90::/48 |
Atualmente, existe um tipo de endereço definido globalmente (o primeiro design, chamado "provider based") que foi jogado fora a alguns anos atrásRFC 1884 / IP Version 6 Addressing Architecture [obsolete], e voce consegue encontrar em algumas versões do kernel do Linux.
Ele começa com (os caracteres "x" são hexadecimais)
2xxx: 3xxx: |
Nota: o prefixo "aggregatable" foi descartado nos atuais drafts. Há ainda alguns outros subtipos definidos. Veja abaixo:
Estes foram os primeiros endereços globais que foram definidos e usados. Eles começam com
3ffe: |
Exemplo:
3ffe:ffff:100:f102::1 |
Um endereço de teste especial para o 6bone que nunca seria globalmente único começa com
3ffe:ffff: |
e a maioria deles é mostrado em exemplos antigos. A razão para isso é, se endereços reais são mostrados, seria possível alguém copiar e colar estes endereços de arquivos de configuração antigos, o que inadvertidamente causaria um erro de duplicação de endereço de um endereço global único. Isto poderia causar sérios problemas para o host original (como nunca receber as respostas de requisições feitas).
Como o IPv6 agora já está em produção, este prefixo não é mais delegado e ele foi removido do processo de roteamento (vejaRFC 3701 / 6bone Phaseout para mais detalhes).
Estes endereços, feitos para um mecanismo de túnel especial [RFC 3056 / Connection of IPv6 Domains via IPv4 Clouds e RFC 2893 / Transition Mechanisms for IPv6 Hosts and Routers],utilizam um endereço IPv4 já fornecido e a sua possível subnet, e começam com
2002: |
Por exemplo, este endereço 192.168.1.1/5 ficaria:
2002:c0a8:0101:5::1 |
Um pequeno comando em shell poderia ajudar voce a gerar este endereço, baseado em um endereço IPv4 fornecido:
ipv4="1.2.3.4"; sla="5"; printf "2002:%02x%02x:%02x%02x:%04x::1" `echo $ipv4 ¬ | tr "." " "` $sla |
Veja também tunneling using 6to4 e information about 6to4 relay routers.
Este endereço é delegado pelo ISP e começa com
2001: |
Prefixos de ISP's maiores (ou AS's) são delegados pelos local registries e tem atualmente um tamanho de prefixo /32.
Qualquer outro ISP/empresa pode solicitar um prefixo de tamanho /48, mas isto depende da política de distribuição de endereços dos registros locais de cada país ou região.
Atualmente, dois blocos de endereço estão reservados para exemplos e documentação. Veja aRFC 3849 / IPv6 Address Prefix Reserved for Documentation:
3fff:ffff::/32 2001:0DB8::/32 EXAMPLENET-WF |
Estes endereços devem ser filtrados baseados no endereço de origem e NÃO devem ser roteados em roteadores de borda em direção à internet, se possível.
Endereços Multicast são usados por serviços específicos.
Eles sempre começam com (xx é o valor de escopo)
ffxy: |
Existem divisões entre escopo e tipo:
O escopo Multicast é um parametro usado para especificar a distancia máxima que um pacote multicast pode "viajar" a partir de sua origem.
Atualmente, os seguintes escopos (ou regiões) estão definidos:
ffx1: nó local, os pacotes nunca deixam o nó.
ffx2: link-local, os pacotes nunca são encaminhados pelos routers, assim eles nunca deixam o link especificado.
ffx5: site-local, os pacotes nunca deixam o site.
ffx8: organization-local, os pacotes nunca deixam a organização (não é tão fácil de implementar, mas deve ser coberto pelo protocolo de roteamento).
ffxe: escopo global.
outros são reservados
Já existem muitos tipos definidos/reservados (vejaRFC 4291 / IP Version 6 Addressing Architecture para mais detalhes). Alguns exemplos são:
Endereço All Nodes: ID = 1h, endereça todos os host no nó local (ff01:0:0:0:0:0:0:1) ou no link conectado (ff02:0:0:0:0:0:0:1).
Endereço All Routers: ID = 2h, endereça tosos os routers no nó local (ff01:0:0:0:0:0:0:2), no link conectado (ff02:0:0:0:0:0:0:2), ou no site local (ff05:0:0:0:0:0:0:2)
Um endereço de multicast especial que é usado como endereço de destino para a descoberta da vizinhança , uma vez que no IPv6 não há ARP, como existe no IPv4.
Um exemplo deste endereço se parece com
ff02::1:ff00:1234 |
Os prefixos usados mostram que este é um endereço multicast link-local. O sufixo é gerado a partir do endereço de destino. Neste exemplo, um pacote deveria ser enviado ao endereço "fe80::1234", mas a parte de rede não conhece o MAC atual deste destino. Ele então substitui os 104 bits mais altos com "ff02:0:0:0:0:1:ff00::/104" e deixa os menores 24 bits intocados. Este endereço então é agora usado no link para achar o nó correspondente que tem que enviar uma resposta contendo o endereço MAC usado na camada 2.
Endereços Anycast são endereços especiais e eles são usados para muitas coisas, como o servidor DNS ou DHCP mais próximo, e outras coisas. Estes endereços são obtidos do espaço de endereçamento Unicast (aggregatable global ou site-local). O mecanismo anycast (do ponto de vista do cliente) será tratado pelos protocolos de roteamento dinamico.
Nota: Endereços anycast não podem ser usados como endereços de origem, pois eles se aplicam somente a endereços de destino.
Um exemplo simples para um endereço unicast é o anycast subnet-router. Assumindo que um nó tem os seguintes endereços globais IPv6 configurados:
2001:db8:100:f101:210:a4ff:fee3:9566/64 <- Node's address |
O endereço unicast subnet-router será criado removendo o sufixo (os 64 bits menos significantes) completamente:
2001:db8:100:f101::/64 <- subnet-router anycast address |