关于 N5105/N6005+i225/i226 系列软路由搭配 OpenWrt 在高连接数条件下崩溃/软重启的问题和解决思路汇总

2022-09-12 02:30:31 +08:00
 wangyuyang3

一、本人设备:

  某品牌 N6005+四网口 i226-v ( 2.5Gbps )软路由(第四版),作主路由。
  家宽速率:下行 1000M ,上行 230M ;内网速率:软路由网卡接口均自动协商至 1Gbps ,因为交换机和主要客户端设备均未升级 2.5G 网卡)

二、实际可能的问题设备和环境:

  N5095/N5105/N6005 可能都有问题,i225 或 i226 各版本也可能都有问题,产品版本可能横跨厂商定义的第 1 版-第 4 版。
  软路由系统不一定限于 OpenWrt ,爱快可能也有问题。pfsense 等 FreeBSD 版本系统是否有问题也不清楚。
主路由必然有问题,旁路由和单臂路由是否有问题不清楚。
  但本文讨论对象以笔者以及大部分网上相关帖子贴主使用的OpenWrt 主路由使用环境为主。

三、问题描述 /触发条件:

  在** [物理机直装 /ESXi/PVE ] 条件下使用 [不同内核 /不同版本的定制 /自编译固件] 时,使用其他设备连接至 op 网关,挂 qbittorrent 跑 PT (包括任何跑满带宽的多线程下载 /上传行为),①高负载状态下,OpenWrt 主路由系统必定在15 分钟-48 小时内,发生②“软重启”或③“使用特定固件在 PVE 环境中报错崩溃”。** 触发错误所需要的时间,实测 PVE 条件下最快只需 15 分钟,ESXi 通常发生在 24 小时-48 小时。

  (①所谓高负载,是指:下载速度通常跑在 60MB/s 以上,极限在 110MB/s 左右,上传速度可以跑至 28MB/s 左右,上下行可以同时跑满带宽,活动连接数从 4000-17000 不等;实际触发问题所需要的速率和连接数可能不需要如此极限,但如果使用者操作强度太低,有很大概率没有能力触发 bug 。很多人可能误以为“没有能力触发问题=没问题”,导致网上出现大量无效的解决方案,使得深陷泥潭的求助者误入歧途,浪费很多时间精力。)

  (②所谓“软重启”,是指:在物理机直装或 PVE/ESXi 虚拟化环境下,即便实现在 op 开启系统日志自动转储,崩溃发生时也不会有任何异常日志记录,而是直接显示自动重新执行系统引导的过程日志; 而在 ESXi 或 pve 虚拟化环境中,软路由自动重启的同时,ESXi/pve 宿主机控制面板本身不会检测到 op 虚拟机发生的任何错误或重新引导状态,虚拟化宿主机操作系统安然无恙,且控制面板内记载的 op 虚拟机运行时间压根不会归零重新计算,日志亦无明显异常。)

  (③所谓“在 PVE 环境中报错崩溃”,是指:使用特定固件时,重复上述触发条件,op 虚拟机控制面板直接失灵,pve 系统日志报 KVM internal error ,此时只能通过 shell 命令行 kill 虚拟机子进程或重启 pve 才能重新控制 op 虚拟机。)

四、描述了类似问题的相关帖子,供参考:

1 、《 N5105 软路由环境下,电脑使用 IDM 同时下载超过 100 个文件,会随机触发软路由重启》
https://www.v2ex.com/t/860850

2 、《 N6005 主机反复不定时自动重启》
https://github.com/coolsnowwolf/lede/issues/8781

3 、《[openwrt(x86)] [已解决] 虚拟机软路由,迅雷下载流量一大 OpenWRT 就自动重启》
https://www.right.com.cn/forum/thread-8236555-1-1.html
(这个贴主的 OpenWrt 并非主路由,而是旁路由,他的解决方案颇有些掩耳盗铃:将负责多线程下载的群晖操作系统直连主路由,避免流量经过会出问题的 op 旁路由设备。这个案例没有借鉴价值。)

4 、《[虚拟机相关] 发现 5.15 的 Openwrt 内核在 PVE 上必然软重启》
https://www.right.com.cn/forum/thread-8240769-1-1.html

5 、《[虚拟机相关] N5105 第四版 PVE+爱快 不定时重启问题》
https://www.right.com.cn/forum/thread-8250514-1-1.html

6 、《[虚拟机相关] pve 安装的 openwrt,经常自己重启什么原因?》
https://www.right.com.cn/forum/thread-8236555-1-1.html

五、结合上述帖子进行的无效尝试:

1 、清热去火:放弃解锁功耗墙版 BIOS ,回滚至旧版 BIOS ,锁 CPU 频率维持在 0.8Ghz ,双暴力风扇散热。PVE 控制面板显示温度长期低于 55°C ,最低可低至三十多度;

2 、柳暗花明又一村:替换 /尝试不同 linux 内核及 op 版本的固件;

3 、奥卡姆剃刀:编译时去除 Turbo ACC 插件,调整任何与软件加速 /流量分载相关的功能,禁止启用除基本网络功能外的所有插件和可能引发稳定性问题的功能(包括 IPv6 );

4 、瞎猫撞死耗子:更换 PVE 内核 /ESXi 版本,调整各种与硬件相关的设置碰运气(可参考以上帖子提及的任何关于虚拟机配置的修改选项);
包括某博客文章《解决 PVE 下虚拟机自动重启 / Kernel Panic 》(链接: https://blog.mbrjun.cn/archives/412 )提及的 PVE 配置方案。

六、有趣的发现:

1 、多因一果:
  **在 PVE 环境下,即便不做高连接数,不开任何多线程下载,单纯压测 CPU ,人为提高 CPU 温度至 75°C-83°C 之间维持不变,大约经过 30 分钟仍然会出现软重启(此时虚拟化宿主机操作系统依旧不会崩溃)。
  大概可以断定:温控不到位可能会导致表面上一模一样的软重启问题,应该和网卡温度高于 70°C 操作温度有关。但高温触发条件和上述多线程下载的触发条件并无紧密关联(基于 CPU 降频条件下多线程下载的“极寒试验”),可能分别为独立的诱因。

2 、就“ESXi 可否解决问题”而提出的截然矛盾的答案:
  ESXi 比 PVE 有明显更为出色的稳定性,但绝对无法避免软重启问题;部分帖子中少数网友提到 ESXi 不再出现软重启问题,与本人实际情况截然不同,至少有以下 4 种可能:
( 1 )硬件设备压根不相关,误以为自己用的同系列 CPU 或网卡;
( 2 )由于 ESXi 软重启频率相比 PVE 显得过低,误以为情况改善=问题解决,放松警惕;
( 3 )根据不同使用条件,软重启可能引发的连锁反应严重程度大不相同。感知不到软重启余波的群体大概率没遇到以下情况:
  a. 在特定 bug 固件中,软重启有概率导致 Passwall 或 openclash 插件崩溃,导致断连外网访问,不会自动恢复;
  b. 对拨号获取的公网 IP 地址网段高度敏感:这就是为啥我一开始用 ESXi 就敏锐地发觉了问题,因为我 tm 开了电信精品网,好不容易播到的 58.32 网段,一软重启直接梦回 163 网段,就得不停人工或依赖 shell 脚本重播。播频繁了还会触发短期风控(禁止拨号,提示认证失败),气死。
( 4 )压根不搞高负载 /多线程下载的使用行为;或即便搞多线程,但由于购买的宽带套餐速率不高,或运营商有连接数限制,导致其能力范围内的极端“高负载”远不及千兆带宽用户以及 PT 玩家的极端使用习惯,因此没有能力触发上述问题。

3 、议题混淆
  本文及上述帖子提到的软重启或 PVE 虚拟机崩溃,与此前 i225 系列网卡出现的断流情况无关,后者可以在 op 系统日志中轻易探查到接口 down & up 的情况,而前者则显得尤其诡异,难以判断问题根源;很多讨论往往混淆了这两个相互独立的问题。

七、目前行之有效的妥协方案(已实测):

  改用 Windows Server 搭配 Hyper-v 网卡直通给 op ,直通前对网卡配置做调整(教程提供的调整方法意义不明,是否存在性能影响暂无感知)

  《[openwrt(x86)] 疑似可解决 N5105 、i225v 网关虚拟机软重启的问题》
  https://www.right.com.cn/forum/thread-8248900-1-1.html

  《 [ N5105 软路由(后传)] Hyper-V 网卡直通完整版 进阶教程新手小白勿入 i 》 8 分 35 秒起
  https://www.bilibili.com/video/BV1TS4y1873Q

  《[虚拟机相关] [ 7.30 更新] WinServer_2022@R86S&CW-N5105_Hyper-V 集成 i225 网卡驱动及网卡直通》
  https://www.right.com.cn/forum/thread-8223928-1-1.html

八、可能有效的备用方案(未实测)

  继续使用 PVE ,但换用 LXC 容器

  《[openwrt(x86)] PVE-LXC 搭建 Openwrt (同时解决 5105 重启)》
  https://www.right.com.cn/forum/thread-8252802-1-1.html

九、启示和疑问:

  软路由小厂商技术实力和产品可靠性实在堪忧,他们估计压根不知道自己卖的 N5105/N6005+i225/i226 产品出现的软重启问题,且很大可能具有普遍性、固有性,而和设备温度 /物理机直装或虚拟化方案的选择 /op 固件版本几乎没有紧密联系。
  或者换个角度说,目前搭载该系列赛扬 CPU 和同系列及衍生的 2.5Gbps 网卡产品的设备仍然需要谨慎入手,intel 自己产品存在问题,或目前虚拟化操作系统兼容性不足。特定群体,尤其是 PT 玩家和日常高负载玩家,并且极度厌恶上述提及的解决方案的(例如不喜欢 hyper-v 虚拟化方案或 pve-LXC 容器),请三思而后行。
  从原理并不明朗的解决方案看,怀疑软重启问题很可能和硬件、驱动或 BIOS 有关。
  发此贴,单纯是为了将该问题做一个阶段性归纳总结,以便为后续讨论和解决问题提供参考。

  关于 Windows 环境下网卡高级选项卡属性的配置(主要为禁用几种功能或技术特征?),想咨询各位大佬前述帖子修改的选项所对应的含义,解读为啥禁用这些选项能解决软重启问题,进而倒推分析出软重启的问题根源。同时兼分析禁用下述选项是否对性能或稳定性产生负面影响。
  禁用的功能包括:

  1 、IPv4 校验和卸载
  2 、TCP 校验和卸载( IPv4 )
  3 、TCP 校验和卸载( IPv6 )
  4 、UDP 校验和卸载( IPv4 )
  5 、UDP 校验和卸载( IPv6 )
  6 、大量发送卸载 V2 ( IPv4 )
  7 、大量发送卸载 V2 ( IPv6 )
  8 、流控制(笔者注:i226 网卡对应的时“流量控制)
  9 、中断裁决(笔者注:实测不禁用它也不妨碍问题解决)

16261 次点击
所在节点    OpenWrt
97 条回复
putaosi
2022-09-12 03:16:34 +08:00
此问题是主板本身设计缺陷
davidyin
2022-09-12 04:07:11 +08:00
软路由直接安装,别放在虚拟机里。
yyzh
2022-09-12 04:19:35 +08:00
主板问题吧,之前淘宝买的无风扇 6 口软路由就是 3 天 2 头死机,现在换了三大厂出的 ITX 主板之后就没再出过问题.
szdosar
2022-09-12 06:50:01 +08:00
老实说,看这个帖子,有点累,点进来竟然没看完。
ryd994
2022-09-12 06:59:30 +08:00
如果你只是需要禁用这些 offload 的话 ethtool 就可以关。

ethtool -K ethN tso off
ethtool -K ethN gro off
以此类推
你可以用 ethtool -k 查看当前设置

如果是 Debian 系也可以尝试
https://serverfault.com/questions/421995/disable-tcp-offloading-completely-generically-and-easily/849696#849696
ryd994
2022-09-12 07:07:39 +08:00
https://docs.vmware.com/en/VMware-vSphere/7.0/com.vmware.vsphere.networking.doc/GUID-78A92BE1-8901-425E-AAA9-C3B6FD2B402B.html
这是 esxi 的方法。

禁用后性能可能下降。
可以启用 gso/gro ,这两个不涉及硬件但可改善性能。
swiftg
2022-09-12 08:02:49 +08:00
楼主竟然写了篇论文出来,看着真舒服
swiftg
2022-09-12 08:12:28 +08:00
临时用 realtek 的 USB 网卡测试下呢?排除英特尔网卡的问题
xxb
2022-09-12 08:22:57 +08:00
bios 禁用 turbo 试试
Johnoo
2022-09-12 08:52:29 +08:00
感谢老哥严谨的测试,跟我这边的结论大致相同。我正在开发一款同样使用 N5105/N6005 的主动散热多网口产品,到时候恳请老哥也来个压测。了解项目 https://wiki.ikoolcore.cn 感谢。
Greenm
2022-09-12 09:35:26 +08:00
虽然暂时用不上,但楼主的分析和测试很严谨,有说服力,我收藏了。
Rinndy
2022-09-12 09:42:22 +08:00
@Johnoo 看这语气,没点开链接就知道是哪个产品了。。
hadoop
2022-09-12 10:07:45 +08:00
看起来是帝都联通双拨的网络环境啊
qdcv123
2022-09-12 10:56:54 +08:00
intel cpu 问题 应用级 BUG
lleohao
2022-09-12 11:04:33 +08:00
我后来还是单独用了路由器 + debin 旁路由模式
Tink
2022-09-12 11:27:16 +08:00
不走虚拟化还有这个问题吗
Tink
2022-09-12 11:39:48 +08:00
是不是网卡直通的问题
wtks1
2022-09-12 11:46:45 +08:00
老哥真是严谨啊
yujincheng08
2022-09-12 11:49:45 +08:00
同硬件配置,但是这边遇到的问题不是软重启,而是 pve 虚拟化的 pcdn 会在高负载下死机。仅仅是 kvm 死机,pve 本身和其他虚拟机不会有问题。死机时查看虚拟机没任何内核日志,pve 内核日志也没有有用信息,此时会发现 CPU 的其中一个核被 kvm 吃满,强行重启 kvm 可以解决,但是一定时间后问题会再现。尝试更换不同内核或者 pve 版本能缓解问题。改用 lxc 或者 docker 不会出现问题。
cue
2022-09-12 12:48:34 +08:00
只有我的关注点在,为啥你家的上行速率可以到 230M ,我们这里最多只哟 30M

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/879368

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX