Com a ampliação do tamanho do endereço de 32 bits para 128 bits foi resolvido um problema que é a exaustão dos endereços IP. Na versão 4 existem 4 Bilhões de endereços aproximadamente e na versão 6 temos aproximadamente 3,4x1038 , milhares de bilhões de endereços globais disponíveis.
No IPv4 o endereço consiste de quatro grupos de 8 bits, sendo cada grupo representado por um número decimal que varia de 0 a 255. Esses números eram separados por pontos, como no exemplo:
DECIMAL => 152.84.253.41 .
OU
BINÁRIO => 10011000.01010100.11111101.00101001
Porém o espaço de endereço IPv6 é um número muito grande e difícil de se representar (2128). Desta forma, segundo a RFC 2373, o endereço IPv6 não é mais representado por números decimais. Nesta nova versão os 128 bits são divididos em 8 grupos de 16 bits representados por números hexadecimais, que variam de 0000 até FFFF e são separados por dois pontos “:”. Na figura 11 podemos visualizar a estrutura do endereço IPv6.
3.
Estrutura do endereço IPv6
A representação do endereço IPv6 pode ser feita por três formas diferentes. A apresentada anteriormente é a mais usual. Abaixo um exemplo numérico desta forma:
2001:0C00:0000:0000:5400:0000:0000:0009
Os zeros à esquerda de cada grupo podem ser retirados, por exemplo, em 0C00 podemos simplificar para C00. Porém os zeros à direita não podem ser desprezados, pois, por exemplo, 5400 é diferente de 54, porque 54 representa 0054, logo ocasionaria um erro na representação deste endereço. Abaixo vemos a representação correta de nosso exemplo:
2001:C00:0:0:5400:0:0:9
Existe também uma forma abreviada de representar um endereço IPv6. Essa abreviação foi criada por que no inicio da utilização do IPv6 deveremos ter muitos campos apenas com zeros, desta forma podemos substituir essa seqüência de zeros por “::“, como no exemplo:
2001:C00::5400:0:0:9
ou
2001:C00:0:0:5400::9
Porém essa abreviação só pode ser feita uma vez. Caso contrário seria impossível diferenciar certos endereço. Por exemplo, no caso anterior poderíamos fazer o seguinte:
2001:C00::5400::9
Mas nesse caso seria impossível saber qual é o endereço, pois não saberemos quantos zeros existem na primeira abreviação ou na segunda. Observe que neste exemplo poderíamos representar o mesmo endereço de 3 formas diferentes:
2001:C00:0:0:5400:0:0:9
ou
2001:C00:0:0:0:5400:0:9
ou
2001:C00:0:5400:0:0:0:9
Por isso é importante que essa abreviação seja feita só uma vez em cada endereço. Essa abrevia cão pode ser feita não só no meio do endereço, mais também no inicio ou no fim, como mostra o exemplo com Tipos de endereços que serem abordados na próxima seção:
Endereço Loopback => |
0:0:0:0:0:0:0:1 |
Abreviando => |
::1 |
|
|
|
|
Endereço Unspecifield => |
0:0:0:0:0:0:0:0 |
Abreviando => |
:: |
Existe ainda uma terceira forma para representar, que é mais conveniente para ambientes mistos com IPv4 e IPv6. Essa forma é a seguinte:
x:x:x:x:x:x.d.d.d.d
Onde os ”X” são os grupos de 4 números hexadecimais e os “d” são valores decimais de 8 bits que variam de 0 a 255, como na notação do IPv4. Essa representação é usada em tipos de endereços que também serão abordados na próxima seção.
0:0:0:0:0:0:152.84.253.35 |
abreviando => |
::152.84.253.35 |
|
|
|
0:0:0:0:0:FFFF:152.84.253.35 |
abreviando => |
::FFFF:152.84.253.35 |
Há também uma outra representação que se refere ao que conhecemos como endereços de rede. Essa representação é da forma endereço/prefixo. Onde endereço corresponde a sub-rede a qual o endereço pertence, completada por zeros, e o prefixo é a quantidade de bits deste endereço referente a sub-rede. Esta notação é similar à notação CIDR do IPv4.
Por exemplo, o endereço de sub-rede 200100000004CFE em hexadecimal, possui 60 bits de prefixo e pode ser representado das seguintes formas:
2001:0000:0004:CFE0:0000:0000:0000:0000/60
Retirando os zeros a esquerda:
2001:0:4:CFE0:0:0:0:0/60
Abreviando:
2001:0:4:CFE0::/60
Essas notações e inclusive suas formas de abreviações são usadas tanto para indicar endereços IPv6 quanto para configurar equipamentos como roteadores e estações de trabalho.
De todo o espaço de endereçamento do IPv6, 3,4x1038 endereços, apenas 15% está previamente alocado para uso. Os outros 85% restantes foram reservados para o futuro.
Na tabela III os tipos de endereço do IPv6 são classificados através de um FP – Format Prefix. Esse prefixo é definido pelos primeiros bits de cada endereço, sendo que dependendo do endereço esse prefixo tem tamanho diferente. A tabela III também mostra a fração do endereço ocupada por seu respectivo prefixo.
Abaixo é apresentada a tabela III que relaciona o tipo de endereço com seu prefixo FP em binários.
III. Tabela de Alocação de endereços IPv6
Alocação |
Prefixo (binário) |
Fração do Espaço de Endereçamento |
Reservado |
0000 0000 |
1/256 |
Não Alocado |
0000 0001 |
1/256 |
|
|
|
Reservado para Alocação NSAP |
0000 001 |
1/128 |
Reservado para Alocação IPX |
0000 010 |
1/128 |
|
|
|
Não Alocado |
0000 |
1/128 |
Não Alocado |
0000 |
1/32 |
Não Alocado |
0001 |
1/16 |
|
|
|
Aggregatable Global Unicast Address |
001 |
1/8 |
Não Alocado |
010 |
1/8 |
Não Alocado |
011 |
1/8 |
Não Alocado |
100 |
1/8 |
Não Alocado |
101 |
1/8 |
Não Alocado |
110 |
1/8 |
|
|
|
Não Alocado |
1110 |
1/16 |
Não Alocado |
1111 0 |
1/32 |
Não Alocado |
1111 10 |
1/64 |
Não Alocado |
1111 110 |
1/128 |
Não Alocado |
1111 1110 0 |
1/512 |
|
|
|
Site-local Unicast Address |
1111 1110 10 |
1/1024 |
Link-local Unicast Address |
1111 1110 11 |
1/1024 |
Multicast Address |
1111 1111 |
1/256 |
Os endereços IPv6 denominados Unicast, que veremos com mais detalhes na próxima seção, foram projetados para sistemas de roteamento da Internet que repassam pacotes baseado num algorítmo de cálculo do prefixo mais longo, sem nenhum conhecimento da estrutura interna do endereço IPv6. Esse tipo específico de endereço IPv6 é indicado pelos primeiros bits do endereço, como vimos na tabela III - Alocações de endereços IPv6.
Dentre os tipos de endereços Unicast apresentados na tabela III, temos os endereços Aggregatable Global Unicast Addresses a serem globalmente utilizados na Internet e definidos pelo formato de prefixo FP = 001. Esses endereços foram criados para suportar a agregação provider-based, onde os endereços possuem uma hierarquia definida por seus provedores de acesso à rede, isto é, cada rede que possui um provedor de acesso terá seu endereço base idêntico ao de seu provedor, acrescido de mais um nível dentro da hierarquia.
Outro tipo de agregação é a denominada exchange-based, necessária para os pontos de troca de tráfego, conhecidos como exchanges, redes que não possuem provedores. São os grandes provedores de distribuição do mundo, que serão os pontos mais altos da hierarquia. Esta combinação permitirá uma agregação eficiente de rotas, tanto para sitios conectados a provedores, quanto para os pontos de troca de tráfego. Para esta estrutura hierárquica existem 4 níveis:
·
TLA ID - Identificador
Top-Level Aggregation;
·
NLA ID - Identificador
Next-Level Aggregation;
·
· Interface ID - Identificador de Interface.
Em termos de topologia, essa estrutura
permite uma organização em três níveis hierárquicos: pública, sítios e identificador
de interface. A topologia pública abrange os campos TLA e NLA e corresponde ao
conjunto de provedores de serviços Internet, provedores de trânsito e pontos de
troca de tráfego. A topologia sítio, do campo SLA, tem abrangência local, ou
seja, uma organização específica que não provê serviços de trânsito para outras
organizações ou sítios, Já o identificador de interface, como o próprio nome
indica, identifica a interface do nó indicada pelo campo Interface ID.
Os identificadores TLA são o topo
da hierarquia de roteamento. Este formato suporta 8.192 ou 213
identificadores TLA. Esse campo pode ser aumentado através do de um espaço
previamente reservado contido em endereços do tipo UNICAST, ou utilizando um prefixo de formato adicional.
Os roteadores devem ter uma entrada na tabela
de roteamento para cada TLA ID ativo, e podem ter entradas adicionais para
otimizar o roteamento de suas topologias específicas. Mas, em todos os níveis,
a topologia de roteamento deve ser projetada para minimizar a quantidade de
entradas na tabela de roteamento.
Os identificadores NLA são utilizados pelas
organizações que possuam um TLA ID para criar uma estrutura de endereçamento
hierárquica e identificar sites. Cada
organização que recebe um TLA ID tem um espaço de endereçamento de 24 bits para
o campo NLA, ou seja, 16.777.216 ou 224 endereços. O que significa
que cada organização com de nível TLA possua aproximadamente a mesma quantidade
de endereços que toda atual Internet - IPv4 pode suportar. Desta forma, uma
distribuição plana de todo espaço NLA acarretaria uma tabela de rotas com
aproximadamente 16 milhões de entradas. Daí a importância de se hierarquizar o
endereçamento para minimizar a tabela de rotas e otimizar o roteamento.
As organizações possuidoras de um TLA ID
podem suportar NLA IDs no seu próprio espaço Site ID, o que possibilita o
provimento de serviços a outras organizações provedoras ou não de serviço
público de trânsito. Por sua vez, as organizações possuidoras de um NLA ID
podem usar o espaço Site ID para suportar outros NLA IDs, como mostrado abaixo:
O esquema acima leva a uma distribuição
hierárquica, onde a responsabilidade para definição e alocação do espaço NLA é
do possuidor do TLA, a responsabilidade do espaço NLA1 é do possuidor do NLA, a
do NLA2 é do possuidor do NLA1 e assim por diante. Na alocação do espaço NLA há
uma troca entre a eficiência da agregação do roteamento e a flexibilidade. Uma
estrutura hierárquica permite uma maior agregação de rotas e, por conseguinte,
uma diminuição das entradas das tabelas de rotas, com otimização do roteamento.
Já uma estrutura plana de distribuição de endereços NLA facilita a alocação de
endereços, mas resulta em grandes tabelas de rotas.
Este exemplo deixa claro que os espaços
previamente definidos para cada nível de hierarquização, são passíveis de
alterações. Porém a estrutura de hierarquização deve ser sempre respeitada para
a otimização do roteamento.
O identificador SLA é utilizado por uma
organização individual, que é responsável por definir a estrutura de endereços
do espaço SLA. Dentro deste espaço, a organização pode criar localmente sua
própria estrutura de endereçamento hierárquica, num procedimento similar a
divisão em sub-redes do IPv4, só que com um número muito maior de sub-redes.
A exemplo do esquema apresentado no NLA, a
organização possuidora do SLA pode decidir utilizar uma estrutura plana,
aumentado a tabelas de rotas, ou definir uma estrutura hierárquica que seria da
forma:
Os identificadores de interface ou Interface
ID, como o próprio nome indica, são utilizados para identificar interfaces
de um enlace específico e devem ser únicos nesse enlace. Também devem ser únicos num escopo mais abrangente. Em
muitos casos, o identificador de interface será o endereço de interface da
camada de enlace (MAC Address) ou
obtido a partir deste.
Para os endereços aggregatable global unicast, os identificadores de
interface de 64 bits devem ser construídos no formato IEEE EUI-64. Estes identificadores
podem ter um escopo global quando formados a partir de registros de escopo
global, como é o caso dos endereços MAC de 48 bits definidos pelo IEEE; ou um
escopo local quando não existirem tais registros. É o caso das conexões seriais
ponto-a-ponto. Para cada RFC que define o protocolo IPv6 sobre algum enlace
específico, como IPv6 sobre Ethernet
ou IPv6 sobre FDDI, há procedimentos para formação do Interface ID. Na
prática para IPv6 sobre Ethernet, que
são os casos mais comuns na Internet, existe uma combinação entre o endereço
MAC e alguns algarismos característicos. Abaixo temos um exemplo:
Para um endereço MAC:
00:A0:C9:C8:E0:C2
E um prefixo de rede :
2001::/16
Seria obtida a seguinte Interface ID:
02A0:C9FF:FEC8:E0C2
E o endereço completo seria:
2001:: 02A0:C9FF:FEC8:E0C2/128
Para que fossem realizados testes e também
para o desenvolvimento do protocolo IPv6 o IETF – Internet Engineering Task Force, criou um Backbone de teste chamado 6Bone. Esse projeto inicialmente operava
como uma rede virtual interligada por túneis IPv6 sobre IPv4. Hoje com o
desenvolvimento e crescimento do projeto, o 6Bone está migrando para um Backbone com IPv6 nativo.
Com o propósito de utilizar o mínimo do
espaço de endereçamento de produção IPv6, o IANA
– Internet Assigned Numbers Authority
alocou ao Projeto 6Bone o prefixo
TLA 3FFE::/16. Esse endereço é especificado na RFC 2471 - IPv6 Testing
Address Allocation.
Sob esse prefixo, o 6Bone criou um formato
próprio para o particionamento de seu espaço de endereços. Esse formato é
baseado no utilizado em endereços de produção, especificado no RFC 2374 - An
IPv6 Aggregatable Global Unicast Address Format.
Os prefixos TLA e NLA do formato de produção
são simulados dentro da faixa de endereços do 6Bone. Eles são chamados pseudo
Top-Level Aggregation Identifier e pseudo Next-Level Aggregation
Identifier, pTLA e pNLA respectivamente.
O formato de endereços utilizado é representado
abaixo:
FP |
TLA |
8 bits |
24 bits |
16 bits |
64 bits |
001 |
0x1FFE |
pTLA |
pNLA |
SLA ID |
Interface ID |
FP |
Format Prefix Identifica o tipo de endereço IPv6. Os bits 001 identificam endereços unicast Aggregatable Global. |
TLA ID |
Top-Level Aggregation Identifier Prefixo do topo da hierarquia de roteamento. O TLA ID 0x1FFE é o identificador atribuído pela IANA ao 6Bone. |
pTLA ID |
pseudo Top-Level Aggregation
Identifier Prefixo alocado pelo 6BONE aos participantes do projeto. Define o nível máximo de agregação dentro do 6Bone. Equivale a um identificador de Backbone. |
pNLA ID |
pseudo Next-Level Aggregation Identifier Utilizado por organizações detentoras de um pTLA ID para criar uma hierarquia de endereçamento e identificar sites. |
SLA ID |
Site-Level Aggregation Identifier Utilizado por organizações individuais para criar sua própria hierarquia de endereçamento e para identificar sub-redes. |
O tamanho do campo pTLA ID original permitia
ao 6Bone atribuir identificadores para até 256 Backbones. No
início de 1999, devido a grande expansão do 6Bone, decidiu-se aumentar o campo
pTLA para que este pudesse acomodar um maior número de redes. Existem hoje,
dois formatos para os campos pTLA e pNLA utilizados no 6BONE. A única diferença
entre esses dois formatos é a quantidade de bits utilizados por cada um desses
dois campos.
No formato original, o campo pTLA possui 8
bits e o campo pNLA 24 bits, como ilustrado no diagrama acima. A notação dos
prefixos pTLA fica, então, 3FFE:nn00::/24, onde "nn" representa o campo pTLA.
O novo formato utiliza os primeiros 4 bits do
campo pNLA, que diminui para 20 bits, e os acrescenta ao campo pTLA, que
aumenta para 12 bits. A nova notação dos prefixos pTLA fica, então, 3FFE:nnn0::/28, onde "nnn" representa o novo campo pTLA. Para
evitar conflitos com os pTLAs já atribuídos, o valor "nnn" começa a partir de 0x800.
Atualmente, já estão sendo oferecidos endereços IPv6 de produção pelos quatro Regional Internet Registries (RIR): ARIN – American Resgistry for Internet Nunbers, responsável pela América do Norte e África sub-Saara; RIPE NCC – Réseaux IP Européens , responsável pela Europa, Oriente Médio, Ásia Central e Norte da África; LACNIC - Latin American and Caribbean IP Address Registry, responsável pela América Latina e Caribe; e APNIC – Asia Pacific Network Information Centre, responsável pela Ásia.
Inicialmente, foi reservado pelo IANA o prefixo TLA 2001::/16 para endereçamento
de produção. Sendo distribuído para os RIR´s os seguintes prefixos,
apresentados na tabela IV:
IV. Tabela de distribuição dos endereços IPv6 de Produção
Prefixo IPv6 |
Sub-TLA - Valores Binários |
Alocado por |
Data |
2001:0000::/23 |
0000 000X XXXX X |
IANA |
jul/99 |
2001:0200::/23 |
0000 001X XXXX X |
APNIC |
jul/99 |
2001:0400::/23 |
0000 010X XXXX X |
ARIN |
jul/99 |
2001:0600::/23 |
0000 011X XXXX X |
RIPE NCC |
jul/99 |
2001:0800::/23 |
0000 100X XXXX X |
RIPE NCC |
May 02 |
2001:0A00::/23 |
0000 101X XXXX X |
RIPE NCC |
nov/02 |
2001:0C00::/23 |
0000 110X XXXX X |
APNIC |
May 02 |
2001:0E00::/23 |
0000 111X XXXX X |
APNIC |
jan/03 |
2001:1000::/23 |
0001 000X XXXX X |
(future assignment) |
|
2001:1200::/23 |
0001 001X XXXX X |
LACNIC |
nov/02 |
2001:1400::/23 |
0001 010X XXXX X |
RIPE NCC |
Feb 03 |
2001:1600::/23 |
0001 011X XXXX X |
RIPE NCC |
jul/03 |
2001:1800::/23 |
0001 100X XXXX X |
ARIN |
Apr 03 |
Através desses prefixos, são alocados os
identificadores para Backbones, utilizando para isso o campo Sub-TLA. O
tamanho do prefixo mínimo alocado é de 32 bits.
O processo de alocação utiliza um procedimento
chamado slow start. Ao se obter um identificador Sub-TLA, os 6 bits
seguintes são reservados pelo RIR que fez a alocação. O RIR só fará alocações
subseqüentes desse espaço reservado quando a organização tiver utilizado pelo
menos 80% do espaço previamente alocado.
Cada organização que recebe um prefixo
Sub-TLA é responsável pelas alocações dentro de seus clientes ou associados.
Para uma organização obter um prefixo Sub-TLA é necessário que lá seja um AS – Autonomo System, ou se torne um AS. Seguindo
então um processo de hierarquização, todos os clientes desta organização
deverão receber um prefixo do tipo SLA de 48 bits, agregado ao prefixo Sub-TLA
de seu provedor.
No caso da América Latina e por sua vez do Brasil, o órgão de registro responsável pelas alocações dos prefixos Sub-TLA é o LACNIC. Sendo então todos os endereços IPv6 da América Latina agregados ao um mesmo prefixo de rede.