A fragmentação dos pacotes em redes IPv6 é diferente do que ocorre em redes IPv4.
Enquanto em redes v4 a fragmentação acontece de salto em salto, sendo cada elemento responsável por fragmentar os pacotes de acordo com o MTU configurado na interface de saída, em redes IPv6 a fragmentação acontece apenas no host de origem. E para isto, é utilizada a mensagem ICMPv6 Packet Too Big.
Em redes IPv6, quando um host recebe um pacote maior do que o MTU configurado na interface de saída, este host descarta o pacote e então envia uma mensagem Packet Too Big para a origem, que recria o pacote com o tamanho correto. Este processo pode acontecer em todos os saltos até o destino final, e ao fim o pacote vai sair do host origem já com o tamanho mínimo para percorrer todo o trajeto até o destino.
A saber: Segundo a RFC2460 – Internet Protocol, Version 6 (IPv6) Specification, o tamanho mínimo para MTU em redes IPv6 é de 1280 bytes.
Podemos ver este comportamento com uma topologia simples, como na figura abaixo. Nos roteadores configuramos IPv6 nas interfaces e rotas, e na interface F0/1 do R2 mudamos o MTU para 1280.
Configuração R1:
ipv6 unicast-routing
!
interface FastEthernet0/0
ipv6 address 2001:DB8:1::1/64
!
ipv6 route ::/0 2001:DB8:1::2Configuração R2:
ipv6 unicast-routing
!
interface FastEthernet0/0
ipv6 address 2001:DB8:1::2/64
!
interface FastEthernet0/1
ipv6 address 2001:DB8:2::1/64
ipv6 mtu 1280Configuração R3:
ipv6 unicast-routing
!
interface FastEthernet0/1
ipv6 address 2001:DB8:2::2/64
!
ipv6 route ::/0 2001:DB8:2::1
Após fazer esta configuração basta dar um ping de R1 para R3, com pacotes de 1500.
No próprio roteador podemos ver que a primeira reposta do ping foi “B”, que significa que o pacote era maior do que suportado no caminho (pra ser sincero não encontrei nenhuma documentação confirmando isso, mas imagino que o B seja de Big). Mas para ficar mais claro podemos usar também o Wireshark.
Bônus Track
Encontrei em outro blog um experimento também interessante.
Podemos criar uma access-list IPv6 bloqueando as mensagens do tipo ICMP Packet Too Big. E como é de se imaginar, neste caso o ping com pacotes maiores do que 1280 bytes (tamanho máximo neste nosso exemplo) não funciona, pois R1 não sabe que precisa fragmentar.
Para este teste crie uma ACL e aplique na interface F0/0 do R1, no sentido in.
Configuração R1:
ipv6 access-list Block-PTBM
deny icmp any any packet-too-big
permit icmp any any
!
interface FastEthernet0/0
ipv6 traffic-filter Block-PTBM in
Agora o teste.
R1#ping 2001:DB8:2::2 size 1500
Type escape sequence to abort.
Sending 5, 1500-byte ICMP Echos to 2001:DB8:2::2, timeout is 2 seconds:
…..
Success rate is 0 percent (0/5)
R1#
Já havia falado da importância do ICMPv6, e este exemplo mostra isso mais uma vez.
Até a próxima.
Parabéns, como sempre o sr. apresentou um trabalho simples, mas de grande qualidade e objetividade.