简洁版本

简洁版本

简洁版本

我的家庭网络是纯千兆的,所有设备都支持至少 9000 字节的巨型帧。将 Synology 上的 MTU 巨型帧设置增加到 6000(字节)可提高性能(写入 810Mbps 和读取 945Mbps)。将值设置为 7000 只会破坏读取性能(一直下降到 4Mbps);写入性能保持快速。

这是出乎意料的,因为大多数巨型帧问题没有与之相关的方向性,并且通常是全有或全无(无论数据包来自哪里,它们都会在交换机上被丢弃)。似乎没有任何IP 碎片化一直在发生,但 TCP 层确实不高兴。什么可能导致这种不对称/不稳定的行为?我该如何修复它以支持我的所有设备应该支持的完整 9000 字节 MTU?


长版本

这些是我在尝试弄清楚这一点时所做的编辑过的笔记。

客户

Realtek PCIe GBE 系列控制器 RTL8167
巨型帧:9KB MTU

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

(似乎 9198 不包含 14 字节以太网头)

$ ping -l 1500 -f 192.168.1.84

(使用在客户端上运行的 Wireshark 进行观察;所有大小均为线路字节大小)
[9213,∞] 未由主机发送(需要分段)
[9019,9212] 已发送但无响应
[9015,9018] 分段 IP 响应
[42,9014] 未分段 IP
[0,41] ?(无法生成,因为 eth+IP+ICMP 标头 = 14+20+8 = 42 字节)

路由器(交换机部分)

Asus RT-AC68U - 固件 3.0.0.4.378_4585
启用巨型帧:“启用”
无法确定它实际支持的巨型帧大小,似乎至少为 9000

它将来自客户端的 ping 请求分段为 1514 字节(但 ping 路由器可能会触发其 WAN 路由器行为而不是 LAN 交换机行为?)

非管理型交换机

TP-LINK TL-SG1008D
巨型帧(规格表):9KB(他们的网站说是 15KB,但看起来像是不同的设备)

服务器

Synology DS1815+ -- DSM 5.2-5565 更新 1
巨型帧:9000

从 Synology 到客户端的文件读取数据包
大小:大多数为 9014 字节(双向)
IP 标志:不分段
Wireshark 发现:TCP 虚假重传、未捕获的 TCP 前一段、TCP 无序、TCP 快速重传和正常(9014 字节)数据包
SMB2-over-NetBIOS 协议数据包读取响应读取长度:65,536(~8 个 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 和 eth3 使用自适应负载平衡进行绑定(不支持交换机)

$ ping -c 5 -s 1500 192.168.1.82

(使用在客户端上运行的 Wireshark 进行观察;所有大小均为线路字节大小)
[9019,∞] 请求已发送,响应已发送,未收到响应
[9015,9018] 碎片 IP 请求(可能被 Synology 碎片化,busybox ping 没有无碎片选项,因此很难判断)
[60,9014] 未碎片化的 IP
[0,59] ?(无法生成,因为 busybox ping 至少放置了 18 个字节加上 42 字节的标头)

杂项数据

  • 将客户端 MTU 改为 8KB 也无济于事
  • 当将服务器的 MTU 从 6000(非常好,945Mbps)更改为 7000(非常糟糕,4Mbps)时,服务器的读取速度急剧下降
  • 所有服务器 MTU 设置均不会影响服务器的写入速度(始终在 700 到 825 Mbps 之间)
  • Synology 有一个绑定网络(4 个端口中的 2 个)
  • 电缆均为 Cat6 或 Cat5e

答案1

更新固件

根据我的经验,Synology 在每个固件版本中修复了很多问题,而你运行的这个版本已经是近四年前了。我没有读过发布说明,但从那时起,似乎有很多机会可以修复 Jumbo 帧错误。

使用直接连接进行测试

使用新的跳线将测试机器直接连接到 Synology(在同一子网上分配静态 IP),然后重新运行测试。这将消除布线和交换机以及任何其他设备和配置问题。如果问题仍然存在,请使用另一台计算机运行测试。如果问题仍然存在,那肯定是 NAS 的问题。

如果问题在直接连接测试期间消失,则尝试先更换交换机,然后更换电缆。您没有显示连接,所以我假设测试机器和 NAS 之间只有 TPLINK。

相关内容