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