4.  Arquitetura dos endereços IPv6

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


4.1.  Hierarquia dos endereços IPv6

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;

·        SLA ID - Identificador Site-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.

Top-Level Aggregation 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.

Next-Level Aggregation ID

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.

Site-Level Aggregation ID

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:

 

Interface ID

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

4.2.  Endereçamento no 6Bone

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 IANAInternet 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.

4.3.  Endereços IPv6 de Produção

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.