烧饼论坛 LZ.SB
登录

【开源】luci-app-qsdk-accel:高通 QSDK / NSS 硬件加速监控与诊断面板

669
  • crazy
    UID 94Lv.2 新手上路 编辑于

    最近整理并开发了一个用于 Qualcomm QSDK 固件的 LuCI 插件:luci-app-qsdk-accel,在烧饼论坛首发。

    项目地址:https://github.com/wwng2333/luci-app-qsdk-accel

    当前版本:v0.5.1

    这个插件主要用于查看 ECM、NSS、PPE、SFE、SDX 等硬件加速组件的运行状态,帮助判断连接是否真正进入硬件加速,以及排查 NSS 驱动、ECM 前端和固件接口之间的兼容问题。

    本插件不是 NSS/ECM 驱动,也不会凭空为固件增加硬件加速能力。使用前需要确保固件已经包含并正确加载相应的 ECM、NSS 或 PPE 模块。

    主要功能

    加速状态概览

    image.webp

    可以集中查看:

    • 当前识别到的 ECM 前端:NSS、PPE、SFE 或 SDX
    • ECM 服务运行状态
    • ECM 当前连接数量
    • IPv4/IPv6 硬件加速连接数量
    • TCP、UDP 和非端口协议加速数量
    • 待处理的加速和减速命令
    • ECM 命令平均延迟
    • ECM hosts、interfaces、mappings、nodes 数据库统计
    • NSS redirect 和前端选择状态
    • SUnreclaim 等内存指标

    NSS 实时性能监控

    Performance 页面每 5 秒采样一次,可以显示:

    • NSS Core 0 当前负载
    • NSS 实际运行时钟
    • IPv4/IPv6 加速流数量
    • Pending queue
    • NSS driver、N2H、IPv4、IPv6、Wi-Fi、Wi-FiLi 和 PPPoE 统计
    • RX/TX、drop/error 累计计数
    • 根据实际采样间隔计算的每秒速率

    页面最多保存 180 个样本,大约对应 15 分钟历史。

    历史数据只保存在浏览器内存中:

    • 不启动后台采样进程
    • 不写入 /tmp
    • 不写入闪存
    • 刷新或关闭页面后自动清除

    三态能力检测

    不同 QSDK 固件中的 debugfs 路径和统计格式差异很大。本插件不会简单地把缺失数据当成零,而是区分三种状态:

    1. 固件没有提供对应统计文件
    2. 统计文件存在,但当前版本尚未识别其文本格式
    3. 已成功解析并显示统计数据

    例如:

    /sys/kernel/debug/qca-nss-drv/stats/ipv4
    

    即使文件存在但格式无法解析,也不会再错误显示为 “此固件未提供”,而会明确提示 “统计源存在,但尚未识别其计数格式”。

    如果已经解析到有效计数,但没有匹配到标准 RX/TX、丢包或错误分类,页面会自动回退展示原始计数器。

    硬件卸载异常统计

    支持查看 IPv4/IPv6 offload exception:

    • 异常类型
    • 触发次数
    • 所占比例
    • 常见异常排序

    对于没有提供 exception stats 的固件,会显示为可选能力缺失,不会误报为硬件加速故障。

    健康检查

    内置只读健康检查,可以检查:

    • ECM 是否运行
    • NSS 驱动是否加载
    • 加速前端是否存在
    • NSS 固件是否成功启动
    • NSS Core 是否被识别
    • NSS 时钟是否可读取
    • IPv4/IPv6 加速能力
    • Wi-Fi NSS 模块或启动日志
    • 内存回收压力
    • Pending command 是否异常

    检查结果分为正常、警告和失败,并附带对应说明。

    组件和平台识别

    采用 capability-based 检测,不按具体路由器型号硬编码。

    目前重点兼容:

    • Qualcomm IPQ5000/IPQ50xx
    • IPQ807x 等 NSS 平台
    • 较老的 QSDK 5.4
    • 新版 QSDK/ImmortalWrt
    • 单核或双核 NSS
    • 不同 ECM 前端目录
    • 不同 NSS 时钟节点
    • 不同 Wi-Fi NSS/Wi-FiLi 驱动组合

    旧版 QSDK 没有提供某些 sysctl、debugfs 或 Core 1 时,不会因此直接判定系统异常。

    ECM 管理

    插件还提供有限的 ECM 管理功能:

    • 启动 ECM
    • 停止 ECM
    • 重启 ECM
    • 清理 ECM 连接
    • 可选的延迟启动配置

    可能影响现有连接的操作都会要求确认。

    诊断信息导出

    支持生成和下载诊断信息:

    • 文本诊断报告
    • JSON 诊断快照
    • 平台、ECM、NSS 和 telemetry 状态
    • 近期相关内核日志
    • NSS 客户端能力
    • ECM exception 信息

    仓库中还提供了脱敏采集脚本,方便收集不同 QSDK 固件的接口差异。采集过程会对 MAC 地址等信息进行脱敏。

    APK 安装方法

    APK 适用于采用 APK 包管理器的新版 OpenWrt/ImmortalWrt。

    请先从 GitHub Release 下载与你的固件匹配的 .apk 文件,然后上传到路由器的 /tmp 目录。

    在电脑上执行:

    scp luci-app-qsdk-accel-*.apk [email protected]:/tmp/
    

    登录路由器:

    ssh [email protected]
    

    安装软件包:

    apk add --allow-untrusted /tmp/luci-app-qsdk-accel-*.apk
    

    安装后重启 rpcd:

    /etc/init.d/rpcd restart
    

    如果 LuCI 菜单没有立即出现,可以退出 LuCI 后重新登录,或者清除浏览器缓存。

    插件入口:

    状态 → QSDK Acceleration
    

    升级已有版本

    先把新版本上传到 /tmp,然后再次执行:

    apk add --allow-untrusted /tmp/luci-app-qsdk-accel-*.apk
    /etc/init.d/rpcd restart
    

    建议确保 /tmp 中只保留一个版本的软件包,避免通配符同时匹配多个 APK。

    可选:安装前校验文件

    如果 Release 同时提供了 SHA256SUMS,可以将它和 APK 放在同一目录并执行:

    cd /tmp
    sha256sum -c SHA256SUMS
    

    校验通过后再安装。

    关于旧版 IPK 固件

    OpenWrt/ImmortalWrt 23.05、21.02 以及其他使用 opkg 的旧固件不能安装 APK,需要下载对应的 .ipk 文件:

    opkg install /tmp/luci-app-qsdk-accel_*.ipk
    /etc/init.d/rpcd restart
    

    APK 和 IPK 不能混用,请根据固件实际使用的包管理器选择。

    依赖说明

    插件依赖:

    luci-base
    rpcd
    jsonfilter
    

    正常情况下,配置好软件源后,包管理器会自动处理这些依赖。

    ECM、NSS、PPE 等内核驱动需要由固件自身提供,本插件不会自动安装或替换任何加速驱动。

    安全与兼容说明

    • 性能监控和诊断接口均为只读。
    • 不会自动修改 vendor ECM 参数。
    • 不会自动调节 NSS 时钟。
    • 不会持久化性能历史。
    • 不存在的可选统计项不会被当作零值。
    • 缺少 Core 1、exception stats 或 Wi-Fi stats 不一定表示硬件加速异常。
    • 停止、重启或清理 ECM 连接可能短暂影响现有网络连接。

    如果遇到某项显示 “统计源存在,但尚未识别其计数格式”,欢迎使用仓库里的采集脚本生成脱敏信息并反馈,我会继续补充不同 QSDK 固件的解析兼容。

  • 收藏支持反对打赏

9 条回复

发表回复