局域网内高速端口向低速端口发送数据,流控不当会有严重的帧溢出风险,引发上层丢包、乱序、重放等问题导致 TCP 重传;从而导致对重传敏感的无线信道性能急剧劣化。建议正确的全链路配置 802.3x 标准支持实现链路层流控,同时高速发送端使用对丢包不敏感的拥塞控制算法 BBR 。对于带无线接入的家庭环境,放弃 TrueNAS Core ,使用 TrueNAS SCALE 并配置 BBR 。
NAS 使用 TrueNAS Core ,万兆 SFP+ 直连主路由( RB5009 ),AP 使用 U6 Enterprise ,2.5GbE 接入主路由。AP 下连客户端协商速率隔墙可达 1.7Gbps ,SMB 从 NAS 中下载文件速率不足 30MB/s ,视无线环境可能更糟,上行可以正常跑到 110MB/s 以上,最高可达 150MB/s ,iperf3 双向测速情况和 SMB 表现基本一致,多线程可缓解,有线条件下一切正常。降级到全千兆接入,问题也极大缓解。
下载:
上传:
问题最早发现的时候还不是这套无线设备,经过漫长的更换设备排查和观察定位,发现以下现象:
1 、主路由 SFP+ 口处发现海量 RX Overflow
2 、客户端上抓包发现大量的 Dup ACK 和由此导致的 Retransmission ,还能看到很多 Out-of-Order 此处未截出
3 、TrueNAS Core 默认拥塞控制算法为 NewReno ,更换为 Cubic 之后好了一点,但很有限
基本可以确定是高速端口在向低速端口发送数据的时候,因为没有正确的流控导致交换设备出现严重的溢出;同时更上层的拥塞控制算法,因为对丢包过于敏感,未能将发送窗口协商至合理的链路带宽;加之无线信道对重传也敏感的多,多种因素综合导致了无线下行拥塞大爆炸,下行速率远劣于上行。问题找到了,于是动手解决:
1 、RouterOS 所有端口手动配置 Flow Control (是的,默认未启用)
2 、更换 NAS 系统为 TrueNAS SCALE 并配置 BBR
解决了困扰很久的问题,希望对你有帮助
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.