O desempenho de leitura de Synology degrada com Jumbo Frames acima de 6000

7

Versão resumida

Minha rede doméstica é pura gigabit com dispositivos que suportam quadros jumbo de pelo menos ~ 9000 bytes. Aumentar a configuração do quadro jumbo MTU no Synology para 6000 (bytes) aumenta o desempenho (gravação de 810 Mbps e leitura de 945 Mbps). Definir o valor para 7000 destrói apenas o desempenho de leitura (que diminui até 4 Mbps); o desempenho da gravação permanece veloz.

Isso é inesperado porque a maioria dos problemas do Jumbo Frame não tem uma direcionalidade associada a eles e são tipicamente tudo ou nada (os pacotes são descartados em um switch, não importa de onde eles vieram). Não parece haver qualquer qualquer fragmentação de IP acontecendo, mas a camada TCP é realmente infeliz. O que poderia causar esse comportamento assimétrico / escamoso e como posso consertá-lo para suportar a MTU total de 9000 bytes que todo o meu equipamento deve suportar?

Versão longa

Estas são as minhas notas editadas durante a tentativa de descobrir isso.

Cliente

Controlador Família Realtek PCIe GBE RTL8167
Quadro Jumbo: 9KB MTU

$ netsh interface ipv4 show subinterfaces
   MTU  MediaSenseState   Bytes In  Bytes Out  Interface
------  ---------------  ---------  ---------  -------------
  9198                1   32501506   11275394  Local Area Connection

(aparece 9198 não inclui o cabeçalho ethernet de 14 bytes)

$ ping -l 1500 -f 192.168.1.84

(observado com o Wireshark sendo executado no Cliente; todos os tamanhos são tamanhos de bytes) | [9213, ∞] não enviado pelo host (exigiria fragmentação)
[9019, 9212] enviado mas sem resposta
[9015, 9018] resposta IP fragmentada
[42, 9014] IP não fragmentado
[0, 41]? (não é possível gerar desde os cabeçalhos eth + IP + ICMP = 14 + 20 + 8 = 42 bytes)

Roteador (parte da chave)

Asus RT-AC68U - Firmware 3.0.0.4.378_4585
Ativar Jumbo Frame: "Ativar"
Não consigo descobrir qual tamanho de quadro jumbo realmente suporta, parece ser pelo menos 9000

Ele fragmenta as solicitações de ping do Cliente diretamente em 1514 bytes (mas o ping do roteador pode estar acionando o comportamento do roteador WAN em vez do comportamento do switch da LAN?)

Switch não gerenciado

TP-LINK TL-SG1008D
Jumbo Frames (folhas de especificações): 9KB (o site deles diz 15KB, mas parece um dispositivo diferente)

Servidor

Synology DS1815 + - DSM 5.2-5565 Atualizar 1
Moldura Jumbo: 9000

Pacotes de leitura de arquivos da Synology para o Client
Tamanho: a maioria é 9014 bytes (em ambas as direções)
Flags IP: não fragmentar
Wireshark descobriu: TCP Retransmissão falsa, TCP Segmento anterior não capturado, TCP fora de ordem, TCP Fast Retransmission e pacotes normais (9014 bytes)
Os pacotes do protocolo SMB2-over-NetBIOS lêem o comprimento de leitura da resposta: 65.536 (~ 8 segmentos TCP)

$ ifconfig
bond0     Link encap:Ethernet  HWaddr --:FF
          inet addr:192.168.1.84  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addrs: --/64 Scope:Link, --/64 Scope:Global, --/64 Scope:Global
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:9000  Metric:1
          RX packets:lots errors:85 dropped:0 overruns:0 frame:85
          TX packets:lots errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:237 GiB  TX bytes:117 GiB

eth2      Link encap:Ethernet  HWaddr --:00
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:9000  Metric:1
          RX packets:lots errors:19 dropped:0 overruns:0 frame:19
          TX packets:lots errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:236 GiB  TX bytes:83 GiB

eth3      Link encap:Ethernet  HWaddr --FF
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:9000  Metric:1
          RX packets:lots errors:66 dropped:0 overruns:0 frame:66
          TX packets:lots errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1 GiB  TX bytes:33 GiB

eth2 e eth3 são vinculados usando o Adaptive Load Balancing (sem suporte a switch)

$ ping -c 5 -s 1500 192.168.1.82

(observado com o Wireshark sendo executado no Cliente; todos os tamanhos são tamanhos de bytes) | [9019, ∞] solicitação enviada, resposta enviada, resposta não recebida
[9015, 9018] solicitação de IP fragmentada (provavelmente fragmentada pela Synology, o busybox ping não tem uma opção sem fragmento, por isso é difícil dizer)
[60, 9014] IP não fragmentado
[0, 59]? (não é possível gerar porque o ping de busybox coloca no mínimo 18 bytes mais os cabeçalhos de 42 bytes)

Dados Diversos

  • Alterar a MTU do cliente para 8 KB não ajudou
  • A velocidade de leitura do servidor cai de um precipício ao mudar a MTU do servidor de 6000 (excelente, 945Mbps) para 7000 (terrível, 4Mbps)
  • A velocidade de gravação do servidor basicamente não é afetada em todas as configurações de MTU do servidor (sempre entre 700 e 825 Mbps)
  • A Synology tem uma rede conectada (2 das 4 portas)
  • Os cabos são todos Cat6 ou Cat5e
por colithium 09.06.2015 / 07:41

1 resposta

1

Não que isso seja muito útil para você, mas posso replicar o problema. Assim que eu ligar quadros jumbo para meu DS413j meu switch (d-link dgs-1100-24) erros RX disparam na porta relacionada. Isso acontece em QUALQUER MTU acima de 1500. Parece estar fundamentalmente quebrado.

    
por 18.01.2016 / 21:47