Isto é apenas para minha própria referência sobre IPv6 MTU. Eu precisava de algumas perguntas para adicioná-las a ... e eu escolho você.
O primeiro é o nosso pacote Ethernet, que normalmente ignoramos:
+-------------------------+
| Ethernet - 16 bytes |
| 6 byte destination MAC |
| 6 byte source MAC |
| 4 byte type |
+-------------------------+
| |
/ 1,500 byte payload /
| |
+-------------------------+
Agora adicionamos o cabeçalho IPv4 ou IPv6:
IPv4 IPv6
+-------------------------+ +-------------------------+
| Ethernet - 12 bytes | | Ethernet - 12 bytes |
| 6 byte destination MAC | | 6 byte destination MAC |
| 6 byte source MAC | | 6 byte source MAC |
| 4 byte type | | 4 byte type |
+-------------------------+ +-------------------------+
| IPv4 - 20 bytes | | IPv6 - 40 bytes |
| 10 byte control flags | | 6 byte control flags |
| 2 byte total length | | 2 byte payload length |
| 4 byte source addr | | 16 byte source addr |
| 4 byte dest addr | | |
+-------------------------+ | 16 byte dest addr |
| | | |
| | +-------------------------|
| | | |
/ 1,480 payload / / 1,460 payload /
| | | |
+-------------------------+ +-------------------------+
Em seguida, adicionamos a realidade de uma conexão PPPoE, que retira 8 bytes do pacote para a tag PPPoE PADS:
+-------------------------+
| Ethernet - 12 bytes |
| 6 byte destination MAC |
| 6 byte source MAC |
| 4 byte type |
+-------------------------+
| PPPoE PADS - 8 bytes |
+-------------------------+
| |
/ 1,492 payload /
| |
+-------------------------+
O que reduz o MTU disponível para nosso tráfego IPv4 e IPv6:
IPv4 IPv6
+-------------------------+ +-------------------------+
| Ethernet - 12 bytes | | Ethernet - 12 bytes |
| 6 byte destination MAC | | 6 byte destination MAC |
| 6 byte source MAC | | 6 byte source MAC |
| 4 byte type | | 4 byte type |
+-------------------------+ +-------------------------+
| PPPoE PADS - 8 bytes | | PPPoE PADS - 8 bytes |
+-------------------------+ +-------------------------+
| IPv4 - 20 bytes | | IPv6 - 40 bytes |
| 10 byte control flags | | 6 byte control flags |
| 2 byte total length | | 2 byte payload length |
| 4 byte source addr | | 16 byte source addr |
| 4 byte dest addr | | |
+-------------------------+ | 16 byte dest addr |
| | | |
| | +-------------------------|
| | | |
/ 1,472 payload / / 1,452 payload /
| | | |
+-------------------------+ +-------------------------+
E, no meu caso, estou usando o Furacão Electric
IPv4 IPv6
+-------------------------+ +-------------------------+
| Ethernet - 12 bytes | | Ethernet - 12 bytes |
| 6 byte destination MAC | | 6 byte destination MAC |
| 6 byte source MAC | | 6 byte source MAC |
| 4 byte type | | 4 byte type |
+-------------------------+ +-------------------------+
| PPPoE PADS - 8 bytes | | PPPoE PADS - 8 bytes |
+-------------------------+ +-------------------------+
| IPv4 - 20 bytes | | IPv4 - 20 bytes |
| 10 byte control flags | | 10 byte control flags |
| 2 byte total length | | 2 byte total length |
| 4 byte source addr | | 4 byte source addr |
| 4 byte dest addr | | 4 byte dest addr |
+-------------------------+ +-------------------------+
| | | IPv6 - 40 bytes |
| | | 6 byte control flags |
| | | 2 byte payload length |
| | | 16 byte source addr |
| | | |
| | | 16 byte dest addr |
| | | |
| | +-------------------------|
| | | |
/ 1,472 payload / / 1,432 payload /
| | | |
+-------------------------+ +-------------------------+
Mas o número importante é o MTU , que é o tamanho que o IPv4 ou o IPv6 tem disponível para si mesmo (incluindo seus cabeçalhos):
IPv4 IPv6
+-------------------------+ +-------------------------+
| Ethernet - 12 bytes | | Ethernet - 12 bytes |
| 6 byte destination MAC | | 6 byte destination MAC |
| 6 byte source MAC | | 6 byte source MAC |
| 4 byte type | | 4 byte type |
+-------------------------+ +-------------------------+
| PPPoE PADS - 8 bytes | | PPPoE PADS - 8 bytes |
+-------------------------+ +-------------------------+
| | | IPv4 - 20 bytes |
/ MTU = 1492 / | 10 byte control flags |
| | | 2 byte total length |
+-------------------------+ | 4 byte source addr |
| 4 byte dest addr |
+-------------------------+
| |
/ MTU = 1472 |
| |
+-------------------------+
A próxima é a confusão sobre o tamanho do payload , usado ao pingar alguém com o sinalizador não fragmentar . O ICMP opera sobre IP e adiciona sua própria sobrecarga de cabeçalho:
IPv4 IPv6
+-------------------------+ +-------------------------+
| Ethernet - 12 bytes | | Ethernet - 12 bytes |
| 6 byte destination MAC | | 6 byte destination MAC |
| 6 byte source MAC | | 6 byte source MAC |
| 4 byte type | | 4 byte type |
+-------------------------+ +-------------------------+
| IPv4 - 20 bytes | | IPv6 - 40 bytes |
| 10 byte control flags | | 6 byte control flags |
| 2 byte total length | | 2 byte payload length |
| 4 byte source addr | | 16 byte source addr |
| 4 byte dest addr | | |
+-------------------------+ | 16 byte dest addr |
| ICMP - 8 bytes | | |
+-------------------------+ +-------------------------|
| | | ICMP - 8 bytes |
| | +-------------------------+
| | | |
/ 1,472 ping payload / / 1,452 ping payload /
| | | |
+-------------------------+ +-------------------------+
Nota : É por isso que você pode fazer ping com 1,452
de carga antes de precisar fragmentar.
No meu caso, com a sobrecarga de uma tag PPPoE PADS:
IPv4 IPv6
+-------------------------+ +-------------------------+
| Ethernet - 12 bytes | | Ethernet - 12 bytes |
| 6 byte destination MAC | | 6 byte destination MAC |
| 6 byte source MAC | | 6 byte source MAC |
| 4 byte type | | 4 byte type |
+-------------------------+ +-------------------------+
| PPPoE PADS - 8 bytes | | PPPoE PADS - 8 bytes |
+-------------------------+ +-------------------------+
| IPv4 - 20 bytes | | IPv6 - 40 bytes |
| 10 byte control flags | | 6 byte control flags |
| 2 byte total length | | 2 byte payload length |
| 4 byte source addr | | 16 byte source addr |
| 4 byte dest addr | | |
+-------------------------+ | 16 byte dest addr |
| ICMP - 8 bytes | | |
+-------------------------+ +-------------------------|
| | | ICMP - 8 bytes |
| | +-------------------------+
| | | |
/ 1,464 ping payload / / 1,444 ping payload /
| | | |
+-------------------------+ +-------------------------+
E minha sobrecarga adicional de 6in4 :
IPv4 IPv6
+-------------------------+ +-------------------------+
| Ethernet - 12 bytes | | Ethernet - 12 bytes |
| 6 byte destination MAC | | 6 byte destination MAC |
| 6 byte source MAC | | 6 byte source MAC |
| 4 byte type | | 4 byte type |
+-------------------------+ +-------------------------+
| PPPoE PADS - 8 bytes | | PPPoE PADS - 8 bytes |
+-------------------------+ +-------------------------+
| IPv4 - 20 bytes | | IPv4 - 20 bytes |
| 10 byte control flags | | 10 byte control flags |
| 2 byte total length | | 2 byte total length |
| 4 byte source addr | | 4 byte source addr |
| 4 byte dest addr | | 4 byte dest addr |
+-------------------------+ +-------------------------+
| ICMP - 8 bytes | | IPv6 - 40 bytes |
+-------------------------+ | 6 byte control flags |
| | | 2 byte payload length |
| | | 16 byte source addr |
| | | |
| | | 16 byte dest addr |
| | | |
| | +-------------------------|
| | | ICMP - 8 bytes |
| | +-------------------------+
| | | |
/ 1,464 ping payload / / 1,424 ping payload /
| | | |
+-------------------------+ +-------------------------+
E você vê porque eu só posso pingar com uma carga útil de 1.424 bytes.