Kioskea
Recherche

O protocolo IPv6

Fevereiro 2015


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.

Para uma leitura offline, é possível baixar gratuitamente este artigo no formato PDF:
O-protocolo-ipv6.pdf

A ver igualmente


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 Kioskea (pt.kioskea.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.