O protocolo IPv6

Agosto 2016


Documento escrito por Nico VanHaute

Historial do protocolo IP

Os dias do protocolo IP na sua forma actual (IPv4) estão contados. A rede Internet era utilizada largamente pelas universidades, as indústrias de alta tecnologia, e o governo a partir de meados dos anos 90, mas a Internet interessa cada vez mais as empresas e as sociedades comerciais - será utilizada por um grande número de indivíduos e sistemas que exprimem uns e outros necessidades diferentes. Por exemplo: com a convergência iminente do computador, das redes, do audiovisual e da indústria dos lazeres, cada posto de televisão tornar-se-á dentro de pouco tempo um equipamento de acesso à Internet que permite a mil milhões de indivíduos praticar, por exemplo, vídeo on demande, televendas ou comércio electrónico. Nestas circunstâncias, o protocolo IPv6 (chamado igualmente IPng para IP new geração) deve oferecer mais flexibilidade e eficácia, resolver qualquer variedade de problemas novos e não deveria nunca entrar em ruptura de endereços.

Os objectivos principais deste novo protocolo foram:

  • Suportar mil milhões de computadores, libertando-se da ineficácia do espaço dos endereços IP actuais,
  • Reduzir a dimensão das tabelas de encaminhamento,
  • Fornecer uma melhor segurança (autenticação e confidencialidade) que o actual protocolo IP,
  • Atribuir mais atenção ao tipo de serviço, e nomeadamente aos serviços associados ao tráfego em tempo real,
  • Facilitar a divulgação multi-destinatários permitindo especificar a envergadura,
  • Dar a possibilidade a um computador de se deslocar sem estar a alterar o seu endereço,
  • Permitir ao protocolo uma evolução futura,
  • Atribuir ao antigo e ao novo protocolo uma coexistência pacífica.

O protocolo IPv6

O protocolo IPv6 responde razoavelmente aos objectivos estabelecidos. Mantém as melhores funções de IPv4, afasta ou minimiza as más, e acrescenta novas quando são necessárias.

Em geral, o IPv6 não é compatível com o IPv4, mas é compatível com todos os outros protocolos Internet, como TCP, UDP, ICMP, IGMP, OSPF, BGP e DNS; às vezes, ligeiras modificações são necessárias (nomeadamente para funcionar com longos endereços).

As principais funções de IPv6

A novidade essencial de IPv6 é a utilização de endereços mais longos que o IPv4.
São codificadas em 16 bytes e permitem resolver o problema que pôs o IPv6 na ordem do dia: oferecer um conjunto de endereços Internet quase ilimitado.

O IPv4 permite dirigir 2^32=4,29.10^9 endereços enquanto o IPv6 permite dirigir 2^128=3,4.10^38 endereços.

A melhoria essencial de IPv6 é a simplificação da rubrica dos datagramas. A rubrica do datagrama básico IPv6 compreende apenas 7 campos (contra 14 para o IPv4). Esta mudança permite aos switchs tratar mais rapidamente os datagramas e melhora globalmente o seu débito.

A terceira melhoria consiste em oferecer mais flexibilidade às opções. Esta mudança é essencial com a nova rubrica, porque os campos obrigatórios da antiga versão são agora opcionais.
Além disso, a forma como as opções são representadas é diferente; permite às switchs ignorar mais simplesmente as opções que não lhes são destinadas. Esta função acelera o tempo de tratamento dos datagramas.

Por outro lado, o IPv6 confere uam maior segurança :
A autenticação e a confidencialidade constituem as funções de segurança essenciais do protocolo IPv6.

Finalmente, foi atribuída mais atenção do que no passado aos tipos de serviços. Embora o campo Tipo de serviço do datagrama IPv4 apenas seja utilizado muito raramente, o crescimento esperado do tráfego multimédia no futuro precisa de lhe prestar atenção.

Rubrica básica dos datagramas

Eis o aspecto aproximado de um datagrama IPv6:


<--------------------------- 32 bits --------------------------->

Versão Classe de tráfego Identificador de fluxos
Comprimento dos dados
<td width="120">Rubrica seguinte<td width="120"> Número de saltos

<td width="480">Endereço IP fonte

<td width="480">Endereço IP destino

<td width="480">Dados



Eis o significado dos diferentes campos :

  • O campo Versão é sempre igual a 4 bits no IPv6. Durante o período de transição doIPv4 para o IPv6, os switchs deverão examinar este campo para saber que tipo de datagrama eles encaminham.
  • O campo Classe de tráfego (codificado das 8 bits) é utilizado para distinguir as fontes que devem beneficiar do controlo de fluxos dos outro. Prioridades de 0 a 7 são afectadas às fontes capazes de retardar o seu débito em caso de congestão. Os valores 8 a 15 são atribuídos ao tráfego em tempo real (os dados áudio e vídeo fazem parte deste grupo), cujo débito é constante.

Esta distinção dos fluxos permite às switchs reagir melhor em caso de congestão. Em cada grupo prioritário, o nível de prioridade mais fraco corresponde aos datagramas menos importantes.
  • O campo Identificador de fluxos contém um número único escolhido pela fonte que tem por objectivo facilitar o trabalho dos switchs e permitir a aplicação das funções de qualidade de serviços como RSVP (Resource reSerVation setup Protocol). Este indicador pode ser considerado como uma marca para um contexto em switch. O switch pode então fazer um tratamento específico: escolha de uma estrada, tratamento em tempo real da informação,…

O campo identificador de fluxos pode ser preenchido com um valor aleatório que servirá para referenciar o contexto. A fonte guardará este valor para todos os pacotes que emitirá para esta aplicação e este destino. O tratamento é optimizado dado que os switch só tem que consultar cinco campos para determinar a pertença de um pacote. Além disso, se uma extensão de confidencialidade for utilizada, as informações relativas aos números de porta são mascaradas para os switchs intermédios.
  • O campo Comprimento dos dados úteis (em inglês payload) sobre dois bytes, contém apenas a dimensão dos dados úteis, sem ter em conta o comprimento da rubrica. Para pacotes cuja dimensão dos dados seria superior a 65536, este campo vale 0 e a opção "jumbograma" da extensão “de parentes em parente” é utilizada.
  • O campo Rubrica seguinte tem uma função similar ao campo protocolo do pacote IPv4 : Identifica simplesmente a próxima rubrica (no mesmo datagrama IPv6). Pode tratar-se de um protocolo (de nível superior ICMP, UDP, TCP,…) ou de uma extensão.
  • O campo Número de saltos substitui o campo “TTL” (Time-to-Live) no IPv4. O seu valor (em 8 bits) é subtraído a cada nó atravessado. Se este valor atingir 0 enquanto que o pacote IPv6 atravessa o switch, será rejeitado com a emissão de uma mensagem ICMPv6 de erro. É utilizado para impedir os datagramas de circular indefinidamente. Desempenha o mesmo papel que o campo Duração de vida do IPv4, e contém um valor que representa o número de saltos ou passos (hops) que é subtraído a cada passagem em switch. Em teoria, no IPv4, há uma noção de tempos em segundos mas como nenhum switch o utiliza como tal, o nome foi alterado para reflectir o uso actual.
  • Vêm seguidamente os campos Endereço fonte e Endereço de destino.

Após numerosas discussões, decidiu-se que os endereços de comprimento fixo iguais a 16 bytes constituiam um melhor compromisso.
Os primeiros bits do endereço - o prefixo - definem o tipo de endereço. Os endereços que começam por 8 zeros estão reservados para os endereços IPv4. Duas alternativas são suportadas; distinguem-se de acordo com os 16 bits seguintes ( 16 bits a 0 ou a 1).

Identificação geográfica graças aos prefixos

A utilização de prefixos separados para os endereços afectados a um fornecedor e os endereços afectados a uma zona geográfica constitui um compromisso entre duas diferentes visões da futura rede Internet. Cada um destes fornecedores dispõe de uma fracção reservada do espaço de endereçamento (1/8 deste espaço). Os 5 primeiros bits que seguem o prefixo 010 são utilizados para indicar em que “registo” se encontra o fornecedor de acesso. Actualmente, três registos estão operacionais, para a América do Norte, a Europa e a Ásia. Até 29 novos registos poderão ser acrescentados ulteriormente.

Cada registo é livre para dividir os 15 bytes restantes como bem o entender. Uma outra possibilidade é utilizar um byte para indicar a nacionalidade do fornecedor e deixar aos bytes total liberdade para definir uma estrutura de endereços específica.

O modelo geográfico é o mesmo que o da rede Internet actual, na qual os fornecedores de acesso não desempenham um grande papel. Neste quadro, Io Pv6 pode gerir 2 tipos de endereços.

Os endereços Unicast Locales (ULA)
utilizam o prefixo FC00::/7, destinam-se ao equivalente dos endereços ip privados IPV4 (RFC1918) .
Os endereços de relações e de sites locais têm apenas uma especificação local. Podem ser reutilizados por outras organizações sem que haja conflito. Não podem ser propagados fora dos limites das organizações, o que os torna bem adaptados às que utilizam guardas-barreira para proteger a sua rede privada da rede Internet.

Endereço broadcast

Os endereços de divulgação multidestinatário dispõem de um campo Bandeira (4 bits) e de um campo Envergadura (4 bits) na sequência do prefixo, seguidamente de um campo Identificador de grupo (112 bits). Um dos bits da bandeira distingue os grupos permanentes dos grupos transitórios.
O campo Envergadura permite uma divulgação limitada numa zona

Endereço anycast

Além de suportar o endereçamento ponto a ponto clássico (unicast) e o endereçamento de divulgação multidestinatário (multicast), o IPv6 suporta um novo tipo de endereçamento de divulgação (anycast).

Esta técnica é semelhamte à difusão multidestinatário no sentido em que o endereço de destino é um grupo de endereços mas, em vez de enviar o datagrama a todos os membros do grupo, tenta enviá-lo apenas a um membro do grupo, o mais próximo.

A notação IPv6

Uma nova notação foi definida para descrever os endereços IPv6 de 16 bytes. Compreende 8 grupos de 4 números hexadecimais separados com o símbolo dois-pontos. Por exemplo:

8000:0000:0000:0000:0123:4567:89AB:CDEF


Dado que vários endereços têm numerosos zeros na sua minuta, 3 optimizações foram definidas. Em primeiro lugar, os 1° zero de um grupo podem ser omitidos, como por exemplo 0123 que pode escrever-se 123. Seguidamente, um ou vários grupos de 4 zeros consecutivos podem ser substituídos por um duplo dois-pontos. É assim que o endereço acima passa a ser :

8000::::123:4567:89AB:CDEF



Por último, os endereços IPv4 podem ser escritos utilizando a representação do endereço em notação decimal apontada, precedida de um duplo dois-pontos, como por exemplo:

::192.31.254.46



O campo Protocolo está excluído porque o campo Rubrica seguinte da última rubrica IP de um datagrama precisa o tipo de protocolo (por exemplo,UDP ou TCP).

Todos os campos relativos à fragmentação foram retirados, porque o IPv6 tem uma abordagem diferente da fragmentação.
Para começar, todos os computadores e switchs conformes ao IPv6 devem suportar os datagramas de 576 bytes. Esta regra coloca a fragmentação num papel secundário. Além disso, quando um computador envia um datagrama IPv6 demasiado grande, contrariamente ao que se passa com a fragmentação, o switch que não pode transmiti-lo envia uma mensagem de erro à fonte. Esta mensagem diz ao computador fonte para interromper o envio de novos datagramas para este destino. Ter um computador que transmite imediatamente datagramas de boa dimensão é bem mais eficaz do que ver os switchs fragmentá-los.

Por último, o campo Total de controlo já não existe porque o seu cálculo é demasiado redutor de desempenho. Com efeito, a fiabilidade das redes actuais, combinada com o facto de que as camadas ligações de dados e transporte efectuam o seu próprio controlo, faz com que o ganho em qualidade de um total de controlo suplementar não valha o preço a pagar para o codificar.

Rubrica de extensão

Esta rubrica fornece uma informação complementar de maneira eficaz. Cada uma delas é opcional. Se mais de uma rubrica estiverem presentes, devem aparecer imediatamente após a rubrica fixa, preferivelmente na ordem da lista.

Certas rubricas têm um formato fixo; outras contêm um número variável de campos variáveis. Por isso, cada item é codificado sob a forma de um trio (Tipo, Comprimento, Valor). O Tipo é um campo de um byte que precisa a natureza da opção. Os diferentes tipos foram escolhidos de modo a que os 2 primeiros bits dissessem o que fazer aos switchs que não sabem executar a opção.
As escolhas são:

  • saltar a opção
  • destruir o datagrama
  • devolver uma mensagem ICMP à fonte
  • destruir o datagrama sem reenviar uma mensagem ICMP se se tratar de um datagrama multidestinatário (a fim de evitar um número demasiado importante de relatório ICMP em regresso).



O Comprimento é um campo de um byte. Indica a dimensão do campo Valor (de 0.255) que contém uma informação qualquer dirigida ao destinatário.

Rubrica Passo a passo

A rubrica Passo a Passo contém informações destinadas a todos os switchs no caminho.

Rubrica Encaminhamento

A rubrica Encaminhamento dá a lista de um ou vários switchs que devem ser visitados no trajecto para o destino. Duas formas de encaminhamento são aplicadas de maneira combinada: o encaminhamento estrito (a estrada integral é definida) e o encaminhamento impresciso (só os switchs obrigatórios são definidos).

Os 4 primeiros campos da rubrica de extensão Encaminhamento contêm 4 totalidades de um byte:

  • o tipo de rubrica seguinte
  • o tipo de encaminhamento (habitualmente 0)
  • o número de endereços presentes na rubrica (de 1 a 24)
  • um endereço que dá o próximo endereço a visitar.

Este último campo começa com o valor 0, é incrementado a cada endereço visitado.

Rubrica fragmentação

A rubrica Fragmentação trata da fragmentação de maneira semelhante ao IPv4. A rubrica contém o identificador de datagrama, o número de fragmento e um bit que precisa se houver outros fragmentos a seguir. No IPv6, contrariamente ao IPv4, só o computador fonte pode fragmentar o datagrama. OS switchs no trajeto não o podem. Isto permite ao computador fonte fragmentar o datagrama em partes e utilizar a rubrica Fragmentação para as transmitir.

Autenticação

A rubrica Autenticação fornece um mecanismo que permite ao destinatário de um datagrama assegurar-se da identidade da fonte. No IPv4, nenhuma garantia semelhante é oferecida.

A utilização da codificação dos dados do datagrama (a sua carga útil) reforça a sua segurança; só o verdadeiro destinatário pode ler-o.

Quando um emissor e um receptor querem comunicar em total segurança, devem em primeiro lugar estar de acordo sobre uma ou várias chaves secretas conhecidas unicamente por eles. É atribuído um número chave de 32 bits a cada uma das 2 chaves.

Os números chave são globais de modo que, por exemplo, se A utilizar a chave 4 para comunicar com B, A não pode utilizar esta chave para comunicar com C. Outros parâmetros são associados a cada número chave, como a sua duração de vida, etc.…

Para enviar uma mensagem autenticada, o computador fonte cria primeiramente um datagrama que contém todas as rubricas IP e a carga útil, seguidamente substitui os campos que alteram pouco por zeros (por exemplo: o campo Número máximo de saltos). O datagrama é completado com zeros para ser um múltiplo de 16 bytes. De maneira similar, a chave secreta utilizada também é completada com zeros para ser um múltiplo de 16 bytes. Seguidamente, um total de controlo codificado é calculado após concatenação da chave secreta completa, o datagrama completo e, de novo, a chave secreta completa.

A rubrica Autenticação contém 3 partes. A primeira conta 4 bytes que precisam o número de rubrica seguinte, o comprimento da rubrica de autenticação, e 16 bits a zero. O segundo define o número chave em 32 bits. O terceiro contém o total de controlo codificado (com o algoritmo MD5 ou outro).

O destinatário utiliza o número chave para encontrar a chave secreta. O valor completo da chave secreta é acrescentado antes e após a carga útil própria completada, os campos variáveis da rubrica são esvaziados dos seus zeros, seguidamente o total de controlo codificado é calculado. Se o resultado do cálculo for igual ao total de controlo codificado contido na rubrica Autenticação, o destinatário tem a certeza de que o datagrama vem bem da fonte com a qual partilha a chave secreta. Tem igualmente a certeza de que o datagrama não foi falsificado às escondidas.

Para os datagramas que devem ser enviados secretamente, é necessário utilizar a rubrica de extensão Carga útil codificada. Esta rubrica começa por um número chave de 32 bits, seguido pela carga útil calculada.

Opção de destino

A rubrica Opção de destino é utilizada para campos que têm necessidade de ser interpretados e compreendidos apenas pelo computador destinatário. Na versão original de IPv6, a única opção de destino que foi definida foi a opção nula. Permite completar esta rubrica com zeros para obter um múltiplo de 8 bytes. Esta rubrica não será utilizada inicialmente. Foi definida para garantir que os novos softwares de encaminhamento possam tê-la em conta, no caso de alguém um dia pensar em utilizar uma opção de destino.

Mais informações

Para mais informações sobre o protocolo IPv6, é melhor consultar o RFC 2460 que explica de maneira detalhada o protocolo :




Artigo escrito por Nico VanHaute.


Veja também :

IPv6 protocol
IPv6 protocol
Protocolo IPv6
Protocolo IPv6
Das Protokoll IPv6
Das Protokoll IPv6
Le protocole IPv6
Le protocole IPv6
Il protocollo IPv6
Il protocollo IPv6
Este documento, intitulado « O protocolo IPv6 »a partir de CCM (br.ccm.net) está disponibilizado sob a licença Creative Commons. Você pode copiar, modificar cópias desta página, nas condições estipuladas pela licença, como esta nota aparece claramente.