V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
OpenWrt 是一个专门面向嵌入式设备的 Linux 发行版。你可以将 OpenWrt 支持的型号的嵌入式设备,比如各种路由器上的系统,换成一个有更多可能性可以折腾的 Linux 系统。
OpenWrt 官方网站
wangyuyang3
V2EX  ›  OpenWrt

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

  •  7
     
  •   wangyuyang3 · 79 天前 · 4928 次点击
    这是一个创建于 79 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一、本人设备:

      某品牌 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 更新] [email protected]&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 、中断裁决(笔者注:实测不禁用它也不妨碍问题解决)

    第 1 条附言  ·  74 天前
    windows server 2022 + Hyper-v 实测四天了,依旧软重启。N5105 别买了。
    56 条回复    2022-11-27 08:00:12 +08:00
    putaosi
        1
    putaosi  
       79 天前 via iPhone
    此问题是主板本身设计缺陷
    davidyin
        2
    davidyin  
       79 天前 via Android
    软路由直接安装,别放在虚拟机里。
    yyzh
        3
    yyzh  
       79 天前
    主板问题吧,之前淘宝买的无风扇 6 口软路由就是 3 天 2 头死机,现在换了三大厂出的 ITX 主板之后就没再出过问题.
    szdosar
        4
    szdosar  
       79 天前 via iPhone   ❤️ 1
    老实说,看这个帖子,有点累,点进来竟然没看完。
    ryd994
        5
    ryd994  
       79 天前 via Android
    如果你只是需要禁用这些 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
        6
    ryd994  
       79 天前 via Android
    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
        7
    swiftg  
       78 天前 via iPhone
    楼主竟然写了篇论文出来,看着真舒服
    swiftg
        8
    swiftg  
       78 天前 via iPhone
    临时用 realtek 的 USB 网卡测试下呢?排除英特尔网卡的问题
    xxb
        9
    xxb  
       78 天前 via iPhone
    bios 禁用 turbo 试试
    Johnoo
        10
    Johnoo  
       78 天前 via Android
    感谢老哥严谨的测试,跟我这边的结论大致相同。我正在开发一款同样使用 N5105/N6005 的主动散热多网口产品,到时候恳请老哥也来个压测。了解项目 https://wiki.ikoolcore.cn 感谢。
    Greenm
        11
    Greenm  
       78 天前 via iPhone
    虽然暂时用不上,但楼主的分析和测试很严谨,有说服力,我收藏了。
    Rinndy
        12
    Rinndy  
       78 天前 via iPhone
    @Johnoo 看这语气,没点开链接就知道是哪个产品了。。
    hadoop
        13
    hadoop  
       78 天前
    看起来是帝都联通双拨的网络环境啊
    qdcv123
        14
    qdcv123  
       78 天前
    intel cpu 问题 应用级 BUG
    lleohao
        15
    lleohao  
       78 天前 via iPhone
    我后来还是单独用了路由器 + debin 旁路由模式
    Tink
        16
    Tink  
       78 天前 via Android
    不走虚拟化还有这个问题吗
    Tink
        17
    Tink  
       78 天前 via Android
    是不是网卡直通的问题
    wtks1
        18
    wtks1  
       78 天前 via Android
    老哥真是严谨啊
    yujincheng08
        19
    yujincheng08  
       78 天前 via Android   ❤️ 2
    同硬件配置,但是这边遇到的问题不是软重启,而是 pve 虚拟化的 pcdn 会在高负载下死机。仅仅是 kvm 死机,pve 本身和其他虚拟机不会有问题。死机时查看虚拟机没任何内核日志,pve 内核日志也没有有用信息,此时会发现 CPU 的其中一个核被 kvm 吃满,强行重启 kvm 可以解决,但是一定时间后问题会再现。尝试更换不同内核或者 pve 版本能缓解问题。改用 lxc 或者 docker 不会出现问题。
    cue
        20
    cue  
       78 天前
    只有我的关注点在,为啥你家的上行速率可以到 230M ,我们这里最多只哟 30M
    HFX3389
        21
    HFX3389  
       78 天前
    怪不得现在 J4125 的价格还是降不下来,原因是这个....
    hellskof
        22
    hellskof  
       77 天前
    所以为什么不直接买 J4125 版本
    ZYMah
        23
    ZYMah  
       71 天前
    LXC 容器安装 OpenWRT 暂时稳定: https://zhaiyiming.com/archives/openwrt-lxc-on-r86s.html
    yamabu
        24
    yamabu  
       70 天前 via iPhone
    你如果有办法抓到崩溃时的内核日志,譬如硬件串口,可以很清楚的看到发生了什么。直接说结论,可以使用 5.19 以上内核,openwrt 如果没有这么高的内核版本,可以放在 5.19 内核宿主机的虚拟机里。
    DhhhhhhL
        25
    DhhhhhhL  
       70 天前
    老哥这个行文逻辑真不错
    465456
        26
    465456  
       69 天前
    大佬写的小作文厉害,千兆网卡用官方 op 稳如狗
    FabricPath
        27
    FabricPath  
       60 天前
    这个 CPU ,即使裸机跑 debian ,也会经常性报 traps 、乱七八糟的内存访问异常。
    楼主检查一下 dmesg 看看有没有类似的错误。
    我现在就只剩内存一个怀疑点了,其他都换过了,如果大家的 dmesg 里面都有乱七八糟的内存访问异常,那就锁定 CPU 的问题了。
    ungrown
        28
    ungrown  
       59 天前
    楼主的小标题太逗了,我只看小标题就好开心
    MeDeath
        29
    MeDeath  
       54 天前
    我之前用 4125 225VB3 和 4105 螃蟹 8111 用的 EISR 的 OP 5.10 和 5.15 和 SIRPD 的 5.15 PC 下 BT 和迅雷这些,1W+连接数就开始断流,(此时迅雷队列 50 个,BC 队列 100 多个 下行跑在 120MB/S 上行 10MB/S 左右)最后试了下 esir 的 op5.4 内核又没啥问题,但是端口回流有问题,最后还是看群友推荐上了爱快,问题都解决了
    ZYMah
        30
    ZYMah  
       52 天前   ❤️ 1
    已持续运行 21 天,当然由于使用的 LXC 容器,OpenWRT 的内核已经完全不起作用了,Turbo ACC 无法启用,但是不影响使用。https://zhaiyiming.com/archives/openwrt-lxc-on-r86s.html
    blues9
        31
    blues9  
       50 天前   ❤️ 1
    赞严谨。所以目前最稳的还是 j4125 ?
    Melodyer
        32
    Melodyer  
       47 天前
    @ZYMah 大佬,问一下,LXC 下的 OpenWrt 软重启(指直接在 OpenWrt 系统内 reboot 重启)后能正常 PPPoe 拨号吗?我的不行,必须得在 pve 控制面板下重启 OpenWrt 实例才行。
    Motionall
        33
    Motionall  
       46 天前
    所以说这些小厂的硬件还是不稳定。自用的华硕 PN41 ,一个 5105 ,一个 6005 ,Hyper 正常配置很稳定

    gujiangjiang
        34
    gujiangjiang  
       46 天前
    刚才差点就买了,还好刷到这篇文章,给力
    feirisu
        36
    feirisu  
       41 天前
    我畅网的 N5105 第五版,单装 op 用 esir 的精品小包已经跑了俩月没问题了。
    lexin132
        37
    lexin132  
       41 天前
    这两天想搞一台,然后就看到 i225 翻车了,后来看人说 i225b3 也翻车了,现在 i226 也翻车了,黄鱼里 j4125+i210 比现在的新款都贵,我还有什么选择。。
    yujincheng08
        38
    yujincheng08  
       38 天前
    在 PVE 论坛有个讨论:
    https://forum.proxmox.com/threads/vm-freezes-irregularly.111494/

    似乎 5.19 有改善。
    yujincheng08
        39
    yujincheng08  
       38 天前
    @yry0008 我更新试过一段时间,似乎有改善。但是也有人报告 5.19 会死。
    FabricPath
        40
    FabricPath  
       34 天前
    @yujincheng08
    可以试试 6.0 ,我跑了一周多了,稳定,网心云也稳定
    Melodyer
        41
    Melodyer  
       34 天前
    @FabricPath 6.0 内核还是 PVE 6.0 版本?
    FabricPath
        42
    FabricPath  
       33 天前
    @Melodyer 内核
    Melodyer
        43
    Melodyer  
       33 天前
    @FabricPath 有链接么,我看官方的目前支持到了 5.19
    FabricPath
        44
    FabricPath  
       33 天前
    @Melodyer 我自己编译的,可以 clone 一份下来 make 一份,或者看看别人有现成的 deb 没
    zycboss
        45
    zycboss  
       32 天前
    N5105+i255V3 ,我跟你一模一样的问题,折腾了一个月主路由怎么都不行,现在换成旁路由,稳的一逼,流量再大也不怕,挂机下了一天的电影也没重启,已经正常用了两个月了,所以就别当主路由就完事了
    zycboss
        46
    zycboss  
       29 天前
    现在有 J6413 的版本了,不知道是不是 N 系列的 bug ? J 系列如果没有就换 J6413
    eunrui
        47
    eunrui  
       28 天前
    @zycboss 同配置 主路由的时候 openwrt 有发现降速吗
    zycboss
        48
    zycboss  
       28 天前
    @eunrui 没发现降速,倒是现在旁路由跑梯子速度没有主路由速度稳,不过至少能用
    allen2000
        49
    allen2000  
       25 天前   ❤️ 1
    可以试一下这个方法:
    1. 升级 PVE 内核到到 pve-kernel-5.19.7-2-pve
    apt update
    apt install pve-kernel-5.19
    reboot
    2. 然后安装 microcode update 后重启
    https://wiki.debian.org/Microcode
    Jacksu
        50
    Jacksu  
       16 天前
    @allen2000 5.19 官方内核之前安装了核显不能硬解,需要怎么设置?目前用的 5.17 非官方内核在 LXC 里面可以成功安装 PLEX 硬解
    allen2000
        51
    allen2000  
       15 天前
    @Jacksu 这个倒不清楚,我没用使用核显硬解。我用的是 Intel NUC11ATKC4 ,安装 PVE 后,VM 装了 openwrt 和 debian ,升级内核和 microcode 后,目前运行稳定,没有出现过 VM 重启等异常现象了。
    yujincheng08
        52
    yujincheng08  
       14 天前
    N5105 升级 pve-kernel-5.19 ,然后 sources.list 里面加上 non-free 源升级 intel-microcode 之后,问题似乎得到解决。

    N6005 升级 pve-kernel-5.19 ,并且在 sources.list 里面加上 **sid** 的 non-free 源升级 intel-microcode 之后,似乎也能解决。
    zycboss
        53
    zycboss  
       11 天前
    @yujincheng08 建议多跑几天下载,至少稳定 1 周之后再说
    FabricPath
        54
    FabricPath  
       5 天前
    @yujincheng08 我之前本来以为好了。。。结果这周宽带升级了之后,100MB/s 下东西的时候+HDMI 输出看电影,机器负载 80%左右。机器直接死了,宿主机死了,没有任何信息输出,通过调整 coredump 和接串口,确定了不是 kernel panic ,就是 CPU 直接 halt 。。。离了个大谱
    wolf1981
        55
    wolf1981  
       3 天前 via iPhone
    有在用 j4125+i226 的吗?是否也有此问题?若没有软重启问题,要把 N5105 出掉重新买 j4125 版本的,N5105 放弃了
    zinkworld
        56
    zinkworld  
       2 天前
    我使用 Ubuntu22 跑 OpenWrt 的 kvm 虚拟机也是各种重启,主路由旁路由都有这个问题。
    什么关 TurboACC 、开 IOMMU 、升级 5.19/5.17 内核都没用(不过之前尝试过硬装,没什么问题)
    日志什么的也找不到什么信息,实在是不知道该怀疑什么了。
    现在关了 Openclash 再看看是不是一些代理软件的问题,准备下一步再尝试下 docker 或者 lxc 跑了。
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1349 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 48ms · UTC 23:31 · PVG 07:31 · LAX 15:31 · JFK 18:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.