Versão curta
Minha rede doméstica é pura gigabit com dispositivos que suportam quadros jumbo de até pelo menos ~ 9000 bytes. Aumentar a configuração do jumbo frame MTU na Synology para 6000 (bytes) aumenta o desempenho (gravação de 810Mbps e leitura de 945Mbps). Definir o valor para 7000 destrói apenas o desempenho de leitura (que diminui até 4 Mbps); o desempenho de gravação permanece rápido.
Isso é inesperado, porque a maioria dos problemas de quadros gigantes não tem uma direcionalidade associada a eles e geralmente é tudo ou nada (os pacotes são descartados em um comutador, não importa de onde eles vieram). Não parece haver nenhuma fragmentação de IP, mas a camada TCP é realmente infeliz. O que poderia causar esse comportamento assimétrico / escamoso e como posso corrigi-lo para suportar a MTU de 9000 bytes completa que todo o meu equipamento deve suportar?
Versão longa
Estas são minhas anotações editadas, feitas ao tentar descobrir isso.
Cliente
Controlador da família Realtek PCIe GBE RTL8167:
Jumbo Frame: 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 em execução no cliente; todos os tamanhos são de bytes de fio)
[9213, ∞] não enviado pelo host (exigiria fragmentação)
[9019, 9212] enviado, mas sem resposta
[9015, 9018] resposta de IP fragmentado
[42, 9014 ] IP não fragmentado
[0, 41]? (não é possível gerar, pois os cabeçalhos eth + IP + ICMP = 14 + 20 + 8 = 42 bytes)
Roteador (parte do switch)
Asus RT-AC68U - Firmware 3.0.0.4.378_4585
Ativar quadro jumbo: "Ativar"
Não é possível descobrir qual o tamanho do quadro jumbo que ele realmente suporta, parece ter pelo menos 9000
Ele fragmenta as solicitações de ping do Cliente em 1514 bytes (mas executar o ping no roteador pode estar provocando o comportamento do roteador WAN em vez do comportamento do comutador da LAN?)
Switch não gerenciado
TP-LINK TL-SG1008D
Jumbo Frames (folhas de especificações): 9KB (o site diz 15KB, mas parece um dispositivo diferente)
Servidor
Synology DS1815 + - DSM 5.2-5565 Atualização 1
Jumbo Frame: 9000
Pacotes de leitura de arquivo da Synology para o
tamanho do cliente : a maioria tem 9014 bytes (em ambas as direções)
Sinalizadores IP: não fragmenta o
Wireshark descoberto: retransmissão espúria TCP, segmento anterior TCP não capturado, TCP fora de ordem, retransmissão rápida TCP, e pacotes normais (9014 bytes) pacotes
de protocolo SMB2 sobre NetBIOS ler resposta de leitura comprimento de leitura: 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 ligados usando o Adaptive Load Balancing (sem suporte para comutador)
$ ping -c 5 -s 1500 192.168.1.82
(observado com o Wireshark em execução no cliente; todos os tamanhos são de bytes de fio)
[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 um 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 do busybox coloca no mínimo 18 bytes mais os cabeçalhos de 42 bytes)
Dados diversos
- Alterar o MTU do cliente para 8 KB não ajudou
- A velocidade de leitura do servidor cai de um penhasco ao alterar o MTU do servidor de 6000 (ótimo, 945Mbps) para 7000 (terrível, 4Mbps)
- A velocidade de gravação do servidor basicamente não é afetada em todas as configurações da MTU do servidor (sempre entre 700 e 825 Mbps)
- O Synology possui uma rede ligada (2 das 4 portas)
- Os cabos são todos Cat6 ou Cat5e