Short Version
My home network is pure gigabit with devices that all support jumbo frames up to at least ~9000 bytes. Increasing the MTU jumbo frame setting on the Synology to 6000 (bytes) increases performance (810Mbps write and 945Mbps read). Setting the value to 7000 destroys only read performance (which decreases all the way down to 4Mbps); write performance stays speedy.
This is unexpected because most jumbo frame problems don't have a directionality associated with them and are typically all or nothing (packets are dropped at a switch no matter where they came from). There doesn't appear to be any IP fragmentation going on at all, but the TCP layer is really unhappy. What could cause this asymmetric/flaky behavior and how can I fix it to support the full 9000 byte MTU all of my equipment is supposed to support?
Long Version
These are my edited notes taken while trying to figure this out.
Client
Realtek PCIe GBE Family Controller RTL8167
Jumbo Frame: 9KB MTU
$ netsh interface ipv4 show subinterfaces
MTU MediaSenseState Bytes In Bytes Out Interface
------ --------------- --------- --------- -------------
9198 1 32501506 11275394 Local Area Connection
(appears 9198 doesn't include the 14 byte ethernet header)
$ ping -l 1500 -f 192.168.1.84
(observed with Wireshark running on Client; all sizes are wire byte sizes)
[9213, ∞] not sent by host (would require fragmenting)
[9019, 9212] sent but no response
[9015, 9018] fragmented IP response
[42, 9014] unfragmented IP
[0, 41] ? (unable to generate since eth+IP+ICMP headers = 14+20+8 = 42 bytes)
Router (switch portion)
Asus RT-AC68U -- Firmware 3.0.0.4.378_4585
Enable Jumbo Frame: "Enable"
Can't figure out what jumbo frame size it actually supports, appears to be at least 9000
It fragments ping requests from Client right at 1514 bytes (but pinging the router might be triggering its WAN router behavior instead of its LAN switch behavior?)
Unmanaged Switch
TP-LINK TL-SG1008D
Jumbo Frames (spec sheets): 9KB (their website says 15KB but it looks like a different device)
Server
Synology DS1815+ -- DSM 5.2-5565 Update 1
Jumbo Frame: 9000
File-read packets from Synology to Client
Size: most are 9014 bytes (in both directions)
IP Flags: Don't fragment
Wireshark discovered: TCP Spurious Retransmission, TCP Previous segment not captured, TCP Out-Of-Order, TCP Fast Retransmission, and normal (9014 byte) packets
SMB2-over-NetBIOS-protocol packets read response read length: 65,536 (~8 TCP segments)
$ 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 and eth3 are bonded using Adaptive Load Balancing (no switch support)
$ ping -c 5 -s 1500 192.168.1.82
(observed with Wireshark running on Client; all sizes are wire byte sizes)
[9019, ∞] request sent, response sent, response not received
[9015, 9018] fragmented IP request (probably fragmented by Synology, busybox ping doesn't have a no-fragment option so it's hard to tell)
[60, 9014] unfragmented IP
[0, 59] ? (unable to generate because busybox ping puts at a minimum 18 bytes plus the 42 byte headers)
Misc Data
- Changing the Client MTU down to 8KB didn't help
- The Server's read speed falls off a cliff when changing the Server's MTU from 6000 (great, 945Mbps) to 7000 (terrible, 4Mbps)
- The Server's write speed is basically unaffected at all Server MTU settings (always between 700 and 825 Mbps)
- The Synology has a bonded network (2 of the 4 ports)
- Cables are all Cat6 or Cat5e