Por que vejo quadros Ethernet que excedem o tamanho do cabeçalho MTU + Ethernet?

2

Eu tenho um roteador Wi-Fi de nível de consumidor que hospeda uma rede local. O roteador está conectado à Internet através de uma rede de campus (por exemplo, um cabo Ethernet conecta a porta WAN a um plug Ethernet de campus). Estou executando tcpdump nas interfaces WLAN e WAN do roteador para capturar o tráfego gerado pelos dispositivos conectados ao roteador.

O que me intriga é que eu vejo quadros que são significativamente maiores que o limite definido pelo MTU mais o tamanho do cabeçalho da camada 2. Primeiro, pensei que isso seria explicado pelo suporte da rede do campus a quadros jumbo de Ethernet, mas eles são (geralmente) limitados a 9.000 bytes de MTU , e vejo alguns quadros com quase 13.000 bytes de comprimento.

Em seguida, achei que, como os dispositivos estão conectados por Wi-Fi, eles não são limitados pela Ethernet MTU, mas sim pela 802.11 MTU, mas esse parece ter cerca de 2304 bytes , então um quadro de 13KB ainda é muito grande. Nota: os quadros aparecem como quadros Ethernet no Wireshark, mas isso aparentemente é explicado por quadros 802.11 sendo convertidos para quadros Ethernet "falsos" antes de serem entregues à pilha de rede do sistema operacional, conforme explicado aqui :

802.11 adapters often transform 802.11 data packets into fake Ethernet packets before supplying them to the host, and, even if they don't, the drivers for the adapters often do so before supplying the packets to the operating system's networking stack and packet capture mechanism.

Algumas observações interessantes que podem ajudar você a me ajudar a esclarecer isso:

  • Para o rastreio capturado na interface WLAN do roteador, são apenas pacotes originados de um dispositivo local e direcionados para um host da Internet que excede a MTU. Todos os pacotes de entrada (host da Internet para o dispositivo local) são de comprimento 1514 ou menos.
  • Para o rastreio capturado na interface WAN do roteador, é apenas o tráfego de entrada (host da Internet para roteador) que excede a MTU Ethernet.
  • Pode-se realmente "mapear" o quadro grande (que excede o MTU) capturado em um lado do roteador para vários quadros que são de tamanho MTU ou menos no outro lado do roteador fazendo referência cruzada aos dois traços.
  • Isso é todo o tráfego TLS (mas isso não deve fazer diferença, pois esse é um limite da camada 2).

Acredito que esse comportamento pode ser devido ao TSO / GSO com base na resposta . No entanto, ele diz que não se deve ver esses quadros maiores se realizarmos a captura em um dispositivo de rede:

[...] you might see TCP sending out larger segments than the MTU. The packets on the wire , however, will be MTU size only. You can verify this by capturing on a network device (switch) etc.

Realmente, faço a captura em um dispositivo de rede (um roteador), mas ainda vejo os quadros grandes. No entanto, o roteador executa o LEDE / OpenWrt, que eu acho que torna o dispositivo de rede "aprimorado" mais parecido com um host real do que um dispositivo de rede ...?

Anexei um exemplo de um quadro que excede o MTU. Observe que esse quadro foi capturado na interface WAN do roteador ( eth0 ). Isso é simplesmente um resultado do TSO / GSO, ou há algo mais acontecendo que eu não conheço? Além disso, o TSO / GSO funciona em ambas as direções ou só se aplica a pacotes de saída? Se este for o caso, então TSO / GSO não pode ser a explicação, já que o pacote de exemplo é de entrada do ponto de vista do roteador.

Atualização: desabilitar o TSO / GSO nas interfaces WAN e WLAN do roteador não alterou nada; os quadros grandes ainda estão presentes quando o experimento é reexecutado.

    
por Janus Varmarken 05.09.2018 / 05:32

1 resposta

3

Este é apenas o seu roteador fazendo LRO (ou talvez GRO).

Não é TSO / GSO porque você só o vê nos pacotes recebidos pelo seu roteador, não pelos que ele está transmitindo.

    
por 06.09.2018 / 01:52