Questão MTU é 1500, porque o comprimento do primeiro fragmento é 1496 no IPv6?


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 isso vem?


4


origem


Você está se conectando em um serviço de túnel? - grawity
Não. Se eu usar -s 1452, não haverá fragmento e o comprimento total é 1500. - deepsky
Eu não sei IP6, mas com IP4 eu tenho que ajustar meu TCP MTUs de parâmetro a 1480 porque meu comutador, é como um 15 'caminhão não ajustará debaixo da ponte * / clunk * mas um 14' 11 "um voa direito por. ainda assim vai 99mph dessa maneira, top 1% em testes de velocidade para minha conexão, então eu não me preocupo com a menor diferença - Psycogeek


Respostas:


Isto é apenas para minha própria referência sobre IPv6 MTU. eu precisei alguns pergunta para adicionar - e eu escolho você.

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           /
|                         |
+-------------------------+

Que reduz o MTU disponível para o 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 então, no meu caso, eu estou usando Furacão Elétrico's Tunelamento 6in4, pois meu provedor 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 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              |
                               |                         |
                               +-------------------------+

Em seguida é a confusão sobre o carga útil tamanho, usado ao pingar alguém com o não fragmentar bandeira. 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: Isso é por que você pode pingar com 1,452 carga de bytes 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 6 em 4:

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 ping com uma carga útil de 1.424 bytes.


5





Você veria isso se tiver uma marcação de VLAN em uma interface que não a suporte 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 placa de rede não suportar nativamente, você poderá apoiá-la no software, mas terá que reduzir a MTU para 1496, de modo que tudo se encaixe nos quadros de 1518 bytes que a NIC suporta.


4



Não há VLAN configurada na minha rede. E o quadro Ethernet não contém informações 802.1q. São 14Bytes observados do wireshark. - deepsky
Na verdade, acho que é porque qualquer novo segmento criado deve ter um limite de 8 bytes e ainda ser menor que o MTU. 1500 é 187 div 8 com um resto de 4. Assim, 1500-4 = 1496 teria que ser o novo limite. Há mais detalhes sobre a fragmentação em erg.abdn.ac.uk/~gorry/eg3567/inet-pages/ip-fragmentatiion.html. - Paul
Eu acho que isso faz sentido. Não há reputação suficiente para votar ... - deepsky


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 frente. 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 ao invés de enviar 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.

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.


1





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


1