MTU é 1500, por que o tamanho do primeiro fragmento é 1496 no IPv6?

4
ping6 ipv6Address -s 1500

Este comando resultará em um fragmento. Observado por wireshark, o comprimento do primeiro pacote de fragmentos é 1496 (da camada 3). Como o MTU é 1500, estou confuso com esse comprimento de 1496. De onde vem?

    
por deepsky 05.10.2011 / 07:49

4 respostas

5

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 tunelamento 6in4 , pois meu ISP não oferece conectividade IPv6 nativa. Isso significa que meu tráfego IPv6 está envolto em um pacote IPv4:

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.

    
por 01.04.2012 / 05:06
4

Você veria isso se tivesse uma marcação de VLAN em uma interface que não a suporta nativamente. As tags de VLAN 802.1Q recebem um adicional de 4 bytes. Se a sua NIC oferecer suporte nativamente, ela suportará quadros Ethernet de 1522 bytes (em vez de mais antigos de 1518 bytes) para que você ainda possa ter uma MTU de 1500 bytes. Se a sua NIC não suportar nativamente, você poderá apoiá-la no software, mas terá que encolher o MTU para 1496, de modo que tudo se encaixe nos velhos quadros de 1518 bytes que a NIC suporta.

    
por 05.10.2011 / 08:43
1

A unidade de transmissão máxima (MTU) de um protocolo de comunicações de uma camada é o tamanho em bytes da maior unidade de dados de protocolo que a camada pode transmitir em diante. Para o exemplo de IP sobre conexões DSL usando PPPoA / VC-MUX, novamente optando por preencher 31 células ATM como antes, obtemos um valor de MTU reduzido ideal de 1478 = 31 * 48-10 levando em conta uma sobrecarga de 10 bytes consistindo de uma sobrecarga do protocolo ponto a ponto de 2 bytes e uma sobrecarga AAL5 de 8 bytes. Isto dá um custo total de 31 * 53 = 1643 bytes transmitidos via ATM de um pacote de 1478 bytes passado para PPPoA. No caso de IP enviado via ADSL usando PPPoA, a figura de 1478 seria o comprimento total do pacote IP, incluindo os cabeçalhos IP. Portanto, neste exemplo, manter uma MTU reduzida auto-imposta de 1478 em oposição ao envio de pacotes IP de comprimento total 1500 economiza 53 bytes por pacote na camada ATM a um custo de uma redução de 22 bytes do tamanho dos pacotes IP. / p>

A RFC 2516 prescreve uma MTU máxima para conexões PPPoE / DSL de 1492 bytes: a carga útil máxima de Ethernet de 1500 bytes menos 8 bytes de cabeçalhos PPPoE (2 bytes para a sobrecarga de PPP e 6 bytes para o cabeçalho PPPoE). Isso não necessariamente preencherá um número inteiro de células ATM. A camada de enlace de dados é a camada 2 do modelo OSI de sete camadas de redes de computadores. Corresponde ou faz parte da camada de enlace do modelo de referência TCP / IP. Você mede na camada 3, de modo que a diferença é óbvia. Por causa do tipo de rede que você está usando, 4 bytes são usados para fins de gerenciamento de rede.

    
por 01.04.2012 / 17:17
1

Você está usando DSL? O cabeçalho PPPoE consome 8 bytes.

    
por 02.04.2012 / 00:19