IPv6: mudanças entre as edições
Linha 46: | Linha 46: | ||
*'''Rótulo de fluxo''' (''Flow Label''), com 20 bits, pode ser utilizado por nós de origem para rotular sequências de pacotes que requerem tratamento especial em roteadores, como serviços tempo real. | *'''Rótulo de fluxo''' (''Flow Label''), com 20 bits, pode ser utilizado por nós de origem para rotular sequências de pacotes que requerem tratamento especial em roteadores, como serviços tempo real. | ||
*'''Comprimento dos dados''' (''Payload Length''), com 16 bits, especifica o tamanho dos dados após o cabeçalho, em bytes. | *'''Comprimento dos dados''' (''Payload Length''), com 16 bits, especifica o tamanho dos dados após o cabeçalho, em bytes. | ||
*'''Próximo cabeçalho''' ( | *'''Próximo cabeçalho''' (), com 8 bits, especifica o tipo do cabeçalho imediatamente após o cabeçalho IPv6; pode utilizar números similares aos do campo ''Protocol'' do IPv4, ou números específicos para o IPv6, os quais são atualmente estabelecidos ''Next Header''por uma base ''on-line'' <ref>https://www.iana.org/assignments/ipv6-parameters/ipv6-parameters.xhtml</ref>. | ||
*'''Limite de saltos''' (''Hop Limit''), com 8 bits, é decrementado de 1 em cada nó de encaminhamento do pacote; o pacote é descartado quando o ''Hop Limit'' chega a zero. | *'''Limite de saltos''' (''Hop Limit''), com 8 bits, é decrementado de 1 em cada nó de encaminhamento do pacote; o pacote é descartado quando o ''Hop Limit'' chega a zero. | ||
*'''Endereço fonte''' (''Source Address''), com 128 bits. | *'''Endereço fonte''' (''Source Address''), com 128 bits. | ||
Linha 55: | Linha 55: | ||
:*''Identification'', ''Flags'', ''Fragment Offset'', uma vez que no IPv6 não há mais fragmentação do datagrama nos roteadores intermediários, sendo utilizada uma técnica conhecida como descoberta da MTU do caminho (''Path MTU Discovery'') e fragmentação na origem; | :*''Identification'', ''Flags'', ''Fragment Offset'', uma vez que no IPv6 não há mais fragmentação do datagrama nos roteadores intermediários, sendo utilizada uma técnica conhecida como descoberta da MTU do caminho (''Path MTU Discovery'') e fragmentação na origem; | ||
:*''Header Checksum'', o que tornou o processamento mais leve, evitando recalcular o valor do ''checksum'' em cada nó. | :*''Header Checksum'', o que tornou o processamento mais leve, evitando recalcular o valor do ''checksum'' em cada nó. | ||
:*Opções. | :*Opções (''Options'' e ''Padding''), que tiveram suas funções viabilizadas com ''Next Header''. | ||
===Extensões do cabeçalho IPv6=== | ===Extensões do cabeçalho IPv6=== |
Edição das 14h08min de 13 de maio de 2020
IPv6
O protocolo IPv6 é a nova versão do IP, especificado pela RFC2460, e deve substituir o IPv4. Além disto, o IPv6 é incrementado por várias outras RFCs, por exemplo: RFC2463 (ICMP for the Internet Protocol Version 6) e RFC3775 (Mobility Support in IPv6).
Apesar de ter sido definido a 20 anos o IPv6 ainda não tem data para ser implementado em definitivo na Internet. Este atraso se justifica pelo sucesso do IPv4, em particular por sua simplicidade de administração. Sua resiliência, que é a capacidade de voltar ao seu estado normal depois de ter sofrido uma pressão, como por exemplo, congestão ou falta de memória. Sua escalabilidade, na qual partes do sistema podem ser administrados como sistemas autônomos independentes. Sua flexibilidade e extensibilidade, a qual tem possibilitado soluções de alguns de seus problemas, como o CIDR que acabou com as classes de endereçamento, o NAT que possibilitou o uso de IP privados em uma rede interna e a autoconfiguração dos endereços em uma rede local com DHCP.
Um dos motivos que levaram ao desenvolvimento do IPv6 foi a escassez de endereços IP que se avizinhava no início dos anos 1990. Em partes isto foi devido ao uso de classes no IPv4, a qual atribuiu faixas gigantescas de endereços para algumas poucas empresas e instituições. Posteriormente, este problema acabou sendo minimizado com a proposição do endereçamento IP sem classes (CIDR) e também com o uso do NAT. Além da limitação do espaço de endereçamento o IPv4 não incluía em seu projeto original suporte para mobilidade, segurança e qualidade de serviço. Na questão da qualidade de serviço (QoS), o campo TOS (type of service) acabou sendo utilizado posteriormente, como especificado na RFC1349 (Type of Service in the Internet Protocol Suite).
As principais melhorias introduzidas pelo IPv6 são:
- Ampliação do espaço de endereçamento de 32 bits para 128 bits;
- Melhoria no formato do datagrama IP;
- Melhoria no processo de autoconfiguração;
- Inserção de mecanismos para tratamento de mobilidade (MIPv6);
- Inserção de mecanismos de segurança (IPsec);
- Inserção de mecanismos para facilitar o gerenciamento de QoS.
Estrutura do datagrama IPv6
O datagrama IPv6 possui seu cabeçalho com tamanho fixo de 40 bytes, como mostra a figura:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Version| Traffic Class | Flow Label | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Payload Length | Next Header | Hop Limit | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + + | | + Source Address + | | + + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + + | | + Destination Address + | | + + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Versão (Version), de 4 bits, indica a versão do protocolo, no caso = 6 (0110).
- Classe de tráfego (Traffic Class), com 8 bits, é utilizado por nós de origem e roteadores intermediários para diferenciar diferentes classes e prioridade de tráfego entre os pacotes IPv6; tem funcionalidade similar a utilização do campo TOS do IPv4 permitindo de implementar serviços diferenciados de QoS (DiffServ) para os pacotes IP.
- Rótulo de fluxo (Flow Label), com 20 bits, pode ser utilizado por nós de origem para rotular sequências de pacotes que requerem tratamento especial em roteadores, como serviços tempo real.
- Comprimento dos dados (Payload Length), com 16 bits, especifica o tamanho dos dados após o cabeçalho, em bytes.
- Próximo cabeçalho (), com 8 bits, especifica o tipo do cabeçalho imediatamente após o cabeçalho IPv6; pode utilizar números similares aos do campo Protocol do IPv4, ou números específicos para o IPv6, os quais são atualmente estabelecidos Next Headerpor uma base on-line [3].
- Limite de saltos (Hop Limit), com 8 bits, é decrementado de 1 em cada nó de encaminhamento do pacote; o pacote é descartado quando o Hop Limit chega a zero.
- Endereço fonte (Source Address), com 128 bits.
- Endereço destino (Destination Address), com 128 bits.
- Diferenças do cabeçalho do IPv6 em relação a IPv4
- Foram removidos do cabeçalho IPv6 os seguintes campos que haviam no IPv4:
- Tamanho do cabeçalho (Header Length), uma vez que o cabelalho IPv6 possui tamanho fixo;
- Identification, Flags, Fragment Offset, uma vez que no IPv6 não há mais fragmentação do datagrama nos roteadores intermediários, sendo utilizada uma técnica conhecida como descoberta da MTU do caminho (Path MTU Discovery) e fragmentação na origem;
- Header Checksum, o que tornou o processamento mais leve, evitando recalcular o valor do checksum em cada nó.
- Opções (Options e Padding), que tiveram suas funções viabilizadas com Next Header.
Extensões do cabeçalho IPv6
As extensões do cabeçalho IPv6, definidas na RFC2460 são as seguintes:
- Hop-by-Hop Options Header
- Routing Header
- Fragment Header
- Encapsulating Security Payload
- Authentication Header
- Destination Options Header
- Mobility Header
O cabeçalho de opções Hop-by-Hop carrega informações que devem ser processadas por todos nós ao longo do caminho. As informações poderão ser utilizadas para reserva de recursos (exemplo RSVP), para encontrar destinos de multicast, entre outras. A opção Jumbogram da extensão hop-by-hop permite que pacotes maiores que 64K sejam transmitidos. O campo Option Data Lenght, de 32 bits informa o tamanho dos dados, que devem se seguir ao mesmo.
A extensão Routing Header permite informar um conjunto de roteadores que devem ser visitados até o seu destino final e pode ser utilizada por aplicações que exigem qualidade de serviço.
A extensão Fragment header é usada para possibilitar a fragmentação e remontagem de datagramas. O IPv6 usa a técnica PATH MTU Discovery para determinar a máxima MTU na trajetória do pacote. Se o pacote for maior que esta MTU então ele é fragmentado na fonte. Os roteadores ao longo da rota não fragmentam o pacote. O destino remonta o pacote fragmentado.
Endereçamento IPv6 (RFC 3513)
O IPv6 tem endereçamento de 128 bits: espaço de 2128 endereços.
É utilizada uma notação hexadecimal com agrupamento de 16 bits separados por dois pontos, como por exemplo:
2001:0DB8:5002:2019:1111:76ff:FEAC:E8A6
São utilizadas regras para simplificar a representação de zeros, por exemplo o endereço:
0237:0000:ABCD:0000:0000:0000:0000:0010
pode ser transformado em:
237::ABCD:0:0:0:0:10
ou, melhor ainda, 237:0:ABCD::10
Tipos de endereçamento IPv6
- Unicast: identifica um hospedeiro (interface);
- Multicast: identifica um conjunto de hospedeiros. O Ipv6 eliminou o \textit{broadcast} e enriqueceu o processo de multicast;
- Anycast: uma novidade no Ipv6. É um endereço que pode ser atribuído a múltiplos hospedeiros. O roteamento da Internet permite encaminhar pacotes ao endereço anycast mais próximo.
- Endereços Unicast
- Os endereços unicast são endereços públicos, roteáveis na Internet. Apresentam uma estrutura hierárquica, cujas interfaces são configuradas com máscaras de 64 bits.
- Endereços Privados e link-local
- O endereço link-local traz a noção de endereços privados dentro de uma rede. Não são roteáveis e começam com 1111111010. Por exemplo:
FE80:A0000::1
- Outros endereços notáveis
- Endereço Loopback:
::1
- Endereço não especificado:
::
- Endereços Multicast:
FF02::1 -- todos os nós do enlace; FF02::2 -- todos os roteadores do enlace.
ICMPv6
O ICMPv6 (RFC2463) reporta erros se pacotes não podem ser processados apropriadamente e envia informações sobre o status da rede. Apresenta várias melhorias em relação ao ICMPv4. O IGMP, que trata multicast no IPv4, foi incorporado no ICMPv6. O ARP/RARP foi incorporado através da utilização da técnica Neighbour Discovery (descoberta de informações da vizinhança). Incorporou mensagens de registro de localização para IP Móvel.
As mensagens ICMPv6 são transportadas por datagramas IPv6 com número Next Header igual a 58H e tem formato geral mostrado na figura:
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Code | Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Message Body + | |
As mensagem com bit mais significativo (MSB) do campo type = 0 indicam erro (valores de 0--127) e com o MSB = 1 são de informação (valores de 128--255).
São exemplos de mensagens de erro:
Type 1 Destination Unreachable 2 Packet Too Big 3 Time Exceeded 4 Parameter Problem
São exemplos de mensagens de informação:
Type 128 Echo Request 129 Echo Reply 133-136 Neighbor Discovery
O campo Code indica o código da mensagem, por exemplo, para mensagens de erro Destination Unreachable poderemos ter:
Type 1 Code 0 - No route to destination 1 - Communication with destination administratively prohibited 2 - Beyond scope of source address 3 - Address unreachable 4 - Port unreachable 5 - Source address failed ingress/egress policy 6 - Reject route to destination
A mensagems de erro Packet Too Big (Type = 2, Code = 0) é utilizada pela técnica de descoberta da MTU do enlace (Path MTU Discovery), uma vez que o IPv6 não fragmenta do datagrama nos roteadores intermediários. Nesta técnica o nó emissor assume a MTU do seu enlace de saída e envia o pacote para destino. Caso algum roteador da rota detecte que o pacote é muito grande para o MTU então ele avisa o nó fonte com ICMPv6 Packet Too Big (que inclui o tamanho da MTU do enlace problema). O nó usa esta nova MTU para encaminhar o pacote novamente ao seu destino, podendo o processo todo pode se repetir em outros roteadores.
A mensagems de erro Time Exceeded (Type = 3, Code = 0) é enviada quando o limite de saltos (hop limit) é excedido em um dado roteador.
Autoconfiguração
A autoconfiguração (RFC2462) é um dos pontos fortes do IPv6 permitindo gerar endereços IP automaticamente para as interfaces, sem nenhum tipo de configuração manual. Para isto o IPv6 combina prefixos divulgados pelos roteadores com o endereço de MAC (ou número randômico). Na ausência de roteadores usa-se o prefixo FE80 para gerar um endereço privado link-local.
A autoconfiguração é usada quando um sítio não necessita estabelecer endereços particulares as estações. Caso haja necessidade de se atribuir endereços específicos, pode-se utilizar o DHCPv6, como no IPv4.
Na autoconfiguração são utilizadas mensagens ICMPv6 de descoberta de vizinhos (Neighbor Discovery) (RFC2461), as quais são equivalentes as mensagens ARP. As mensagens ICMPv6 Neighbor Discovery podem ser do tipo (entre outras):
Type Code 133 0 Router Solicitation 134 0 Router Advertisement 135 0 Neighbor Solicitation 136 0 Neighbor Advertisement
As mensagens Neighbor Solicitation e Neighbor Advertisement são utilizadas para a descoberta de vizinhos e detecção de endereços duplicados.
A mensagem Router Solicitation é utilizada para a descoberta de roteadores na rede local e Router Advertisement são utilizadas pelos roteadores, periodicamente, para anunciar sua presença e divulgar seu prefixo.
Passos para autoconfiguração
- Um endereço tentativa é formado com o prefixo FE80 (link-local address) e associado ao endereço MAC da interface;
- O nó se junta aos grupos multicasting;
- Uma mensagem Neighbor Solicitation é enviado com o endereço tentativa como target address. Se detectado IP duplicado o nó deverá ser configurado manualmente;
- O nó realiza um Router Solicitation para o endereço FF02::2. (multicast dos roteadores);
- Todos roteadores do grupo multicast respondem e o nó se autoconfigura para cada um deles;
Formação do Endereço a partir do MAC
Os 64 bits do identificador de hospedeiro são formados pela inserção de FFFE entre o terceiro e quarto byte do MAC e complementando-se o segundo bit menos significativo do primeiro byte do MAC. Supondo que o hospedeiro possui endereço MAC
AA:11:BB:2A:EF:35
e o prefixo recebido do Roteador (via Advertência) é
2001:10:/64
então o endereço formado é
2001:10::A811:BBFF:FE2A:EF35
Referências
- ↑ KUROSE, J.F; ROSS K. W. Redes de Computadores e a Internet: Uma abordagem top-down, São Paulo: Pearson, 2010.
- ↑ http://ipv6.br/
- ↑ https://www.iana.org/assignments/ipv6-parameters/ipv6-parameters.xhtml
Evandro.cantu (discussão) 15h06min de 12 de maio de 2020 (-03)