Files
dpdk-blog/products/home-gateway.md
T
newbieandClaude Code 71c90bb632 fix: uNOS 硬件基线对齐 jb3455b 实测
- 1G 大页规划(×2-4) vs 实机实际 1G=0,须加内核引导参数
- 数据面单核 → 1-2 核:纯转发单核够,叠加 NAT/ACL/QoS 后无余量
- unos-design §2.2 物理口笔误 82576 × 2 → X540-T2 10G × 2
- home-gateway 补「研发机 vs 量产 BOM」分工说明
- §4.0「单核转发无法扩展」限定为 Cloud Edge 目标,与 Home CPE 区分

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-10-10 00:13:26 +08:00

13 KiB
Executable File
Raw Blame History

家用 DPDK 网络加速器 — 产品规划文档

创建日期: 2026-07-13 关联学习路线: 2026-06-29-dpdk-roadmap-v3-design.md 目标: 基于 DPDK 做一个低成本家用网络加速器,可以量产销售


一、产品定义

项目 内容
产品名 家用网络加速器(暂定)
定位 插在光猫和路由器之间,即插即用
一句话卖点 "让千兆宽带真正跑满,全家不卡,不用设置"
目标用户 家庭用户,不折腾
参考售价 ¥299(100 台试水,单台毛利 ~¥118)

使用方式

原来:    光猫 ─── 路由器 ─── 全家设备
              ↑ 光猫 NAT 性能差,有人下载全家卡

加盒子:  光猫 ─── [你的盒子] ─── 路由器 ─── 全家设备
              ↑                ↑
         桥模式/无感透传     DPDK 线速 + 智能 QoS

二、三大核心功能

# 功能 痛点 实现原理
1 提速 运营商光猫 NAT 差,千兆宽带只能跑 600M 光猫改桥接,盒子 DPDK 线速 NAT/转发,跑满 940M
2 不卡 有人下载/BT/看视频,其他人游戏延迟爆炸 DPDK rte_flow 按流特征分类:小包优先、大包限速、视频保底
3 零配置 用户不想进后台、不想学网络知识 开机自动 DHCP 探测 WAN/LAN 方向,默认桥模式透传

功能 2 详细:智能流控

收包 → rte_flow 五元组分类
         │
         ├── 小包持续流 (<256B, >100pps)
         │      → 标记 "游戏/通话/视频会议"
         │      → 高优先级队列,绝对优先
         │
         ├── 大包持续流 (>1024B, >50Mbps)
         │      → 标记 "下载/BT/视频缓冲"
         │      → 低优先级队列,带宽上限
         │
         └── 其他
                → 普通优先级,尽力转发

关键设计:不识别具体应用(不需要 DPI),只靠流特征判断。简单、可靠、私密。


三、硬件 BOM(最低成本,支持 VFIO)

研发机 vs 量产 BOM 的分工(2026-10-03):本节是量产 BOM——目标是 ¥299 售价下的最低成本 + 低功耗(常开设备)。 研发/验证机已就绪:jb3455b = J3455 四核 + X540-AT2 10G × 2 + 8GB DDR3。 两者不要混:X540 单价/功耗都高于 82576,对 1 Gbps 产品是过度设计;研发机上的价值是能跑通代码 + 压实测数字,不是出货配置。 X540 在 jb3455b 上实测 PCIe 2.0 x2(≈8 Gbps),对 1G 产品 8 倍余量,不构成约束。

选型理由

  • J3355B-ITX: Apollo Lake 起全系支持 VT-d,这是 Intel 平台最便宜的 VT-d 方案
  • Intel 82576: DPDK igb PMD 原生驱动,最老最稳定的网卡之一,二手极便宜
  • VFIO > UIO: VFIO 是 DPDK 官方推荐驱动方式,内核主线永久支持,DMA 安全隔离

逐项 BOM

# 零件 规格 来源 单价
1 主板 ASRock J3355B-ITX (双核 2.0GHz, 10W, VT-d) 闲鱼 ¥100
2 内存 DDR3L 2GB SODIMM 闲鱼拆机 ¥12
3 存储 8GB mSATA SSD 闲鱼拆机 ¥10
4 网卡 Intel 82576 双口千兆 (PCIe 2.0 x4) 闲鱼拆机 ¥30
5 电源 12V 3A 适配器 + DC 5.5×2.5mm 线 1688 批发 ¥8
6 外壳 3mm 亚克力激光切割 (17×17cm ITX) 淘宝定制 ¥10
7 铜柱+螺丝 M3×6 一套 4 颗 1688 ¥2
8 导热垫 40×40×1mm 硅胶 — ¥1
合计 ¥173

备选主板

型号 CPU 核数 VT-d 价格 备注
ASRock J3355B-ITX J3355 双核 ✅ ¥100 首选,最便宜 VT-d
ASRock J3455-ITX J3455 四核 ✅ ¥140 J3355 缺货时备选
ASRock J4205-ITX J4205 四核 ✅ ¥160 第二备选

内存使用分析

DPDK hugepage:  64MB
Alpine Linux:   ~128MB
DPDK app:       ~50MB
空闲缓冲:       ~1.7GB
总计 (2GB):     ~300MB 使用 / ~1.7GB 空闲

结论: 2GB 绰绰有余,不需要 4GB

存储使用分析

Alpine Linux:      ~130MB ISO → 安装后 ~50MB
DPDK 库:           ~20MB
应用二进制:         ~5MB
配置/日志:          ~10MB
总计:              <100MB

结论: 8GB mSATA 完全够用

四、软件技术栈

层 组件 说明
操作系统 Alpine Linux 3.20 最小 Linux 发行版,~50MB
内核 linux-lts 6.6 VFIO、hugepage、AF_PACKET 主线支持
数据面框架 DPDK 24.11 LTS 用户态高性能包处理
PMD 驱动 drivers/net/igb Intel 82576 原生 DPDK Poll Mode Driver
设备绑定 vfio-pci VT-d + IOMMU,DPDK 官方推荐方式
转发 自研 DPDK 应用 L3 转发 + NAT + rte_flow QoS
控制面 Unix socket + HTTP API 配置下发、状态查询
初始化 自定义 init 脚本 DHCP 探测、自动识别 WAN/LAN

DPDK 技术点与学习路线对应

DPDK 技术 用途 学习路线阶段
rte_mempool 包内存池管理 P1
rte_mbuf 包数据结构 P1
rte_ring lcore 间无锁通信 P1
rte_eal_init EAL 初始化 (hugepage/lcore) P1
rte_ethdev (igb PMD) 82576 网卡收发 P1
rte_eth_tx_burst / rte_eth_rx_burst 批量收发包 P1
rte_flow 流分类 (小包/大包分流) P3
rte_hash NAT 连接跟踪表 P1
rte_lcore 核绑定 (控制面/数据面分离) P1
rte_kni DPDK↔内核通道 (可选) P2

五、数据面架构

整体架构:快慢路径分离

                    ┌────────────────────┐
                    │   控制面 (lcore 0)   │
                    │                    │
                    │  DHCP Client       │ ← 自动探测 WAN 口
                    │  配置管理           │
                    │  HTTP API (可选)    │ ← 手机配置用
                    │  日志/统计          │
                    └────────┬───────────┘
                             │
                        Unix socket
                             │
    ┌────────────────────────┼────────────────────────┐
    │                        │                        │
    ▼                        ▼                        ▼
WAN 口 (port 0)       转发核 (lcore 1)          LAN 口 (port 1)
    │                        │                        │
    ▼                        ▼                        ▼
┌─────────┐          ┌───────────────┐          ┌─────────┐
│ RX 队列 │──mbuf──►│ rte_flow 分流  │──mbuf──►│ TX 队列 │
│         │         │               │          │         │
│ 82576   │         │ 小包→高优先    │          │ 82576   │
│ igb PMD │         │ 大包→低优先    │          │ igb PMD │
│         │         │ NAT 连接跟踪   │          │         │
└─────────┘         └───────────────┘          └─────────┘

收发包路径

收包:
  rte_eth_rx_burst(port, queue, mbufs, BURST_SIZE)
  → 逐包处理:
    1. rte_flow 匹配(五元组 hash)
    2. 如果不是已知流 → 新建流表项
    3. 按流优先级入队
    4. NAT 转换 (SNAT/DNAT)
    5. 查路由表决定出端口

发包:
  高优先队列 → rte_eth_tx_burst (先发)
  低优先队列 → rte_eth_tx_burst (后发,有剩余带宽才发)

Lcore 分配

lcore 0 (主核):
  - EAL 初始化
  - 控制面逻辑
  - 定时器 (统计收集)
  - Unix socket 服务

lcore 1 (转发核):
  - 数据面死循环
  - 收包 → 分流 → NAT → 发包
  - 独占 100% CPU,无中断干扰

六、软件模块划分

dpdk-gateway/
├── src/
│   ├── main.c              # EAL 初始化,启动 lcore
│   ├── forward.c           # 转发核主循环
│   ├── forward.h
│   ├── nat.c               # NAT 连接跟踪 (SNAT/DNAT)
│   ├── nat.h
│   ├── classifier.c        # rte_flow 流分类 + 优先级队列
│   ├── classifier.h
│   ├── control.c           # 控制面 (DHCP 探测 + 配置)
│   ├── control.h
│   ├── stats.c             # 统计收集
│   └── stats.h
├── scripts/
│   ├── init.sh             # 启动脚本 (配 hugepage/绑定网卡)
│   └── probe.sh            # WAN/LAN 自动探测脚本
├── config/
│   └── gateway.conf        # 默认配置文件
├── Makefile                 # 或 meson.build
└── README.md

七、量产降本路径

阶段 数量 主板来源 网卡来源 单台 BOM
样机验证 1 台 闲鱼 J3355B ¥100 闲鱼 82576 ¥30 ¥173
小批试水 100 台 闲鱼打包 ¥90 闲鱼打包 ¥25 ¥146
中批 500 台 批发商 ¥85 批发 ¥22 ¥130
大批定制 1000 台 自研板 (I226 焊板) 芯片直焊 ~¥120

1000 台定制板后,Intel I226-V 网卡芯片直接焊主板上,省去独立网卡和 PCIe 槽。


八、成本与利润测算

100 台试水

项目 金额
单台 BOM ¥146
单台组装(自己干) ¥0
包装盒(定制牛皮纸,100 个) ¥3/台
快递费(均摊) ¥5/台
单台全成本 ¥154
售价 ¥299
单台毛利 ¥145
100 台总毛利 ¥14,500

1000 台(定制板)

项目 金额
单台 BOM ¥120
组装(深圳厂 ¥15/台) ¥15
包装盒 ¥3
快递 ¥5
单台全成本 ¥143
售价 ¥299
单台毛利 ¥156
1000 台总毛利 ¥156,000

九、下一步行动计划

Phase 1: 样机验证 (1-2 周)
  □ 1. 采购 J3355B-ITX + Intel 82576 + DDR3L 2GB + mSATA 8GB
  □ 2. 安装 Alpine Linux,配置 VFIO + hugepage
  □ 3. 编译 DPDK,跑通 testpmd L2 转发
  □ 4. 编写最简单的 DPDK L3 转发程序 (main.c + forward.c)

Phase 2: 核心功能 (2-4 周)
  □ 5. 实现 NAT (SNAT/DNAT + 连接跟踪)
  □ 6. 实现 rte_flow 流分类 (小包/大包分流)
  □ 7. 实现优先级队列调度
  □ 8. 实现 WAN/LAN 自动探测 (DHCP)

Phase 3: 产品化 (2-4 周)
  □ 9. 添加启动脚本 (init.sh + probe.sh)
  □ 10. 添加 LED 状态指示 (通过 GPIO 或内核接口)
  □ 11. 制作 Alpine 固件镜像 (dd 可刷)
  □ 12. 设计外壳图纸 (DXF for 亚克力切割)

Phase 4: 自用验证 (4 周)
  □ 13. 替换家中路由器,自己用 1 个月
  □ 14. 记录所有问题和改进点
  □ 15. 性能压测 (iperf3 小包/大包)

Phase 5: 开源 + 销售
  □ 16. GitHub 开源基础版
  □ 17. 恩山论坛 / chiphell 发帖
  □ 18. 淘宝/闲鱼上架

十、风险评估

风险 严重度 概率 应对措施
二手主板货源不稳定 🟡 中 中 初期囤 100 片;J3455-ITX 备选;1000 台后走定制
用户不会改光猫桥接 🔴 高 高 默认纯桥模式透传,不改任何配置也能工作(仅提速效果打折)
2 口不够替代路由器 🟡 中 高 就定位加速器,不定位路由器;明确告诉用户"插在光猫和路由器之间"
GPL 合规问题 🟢 低 低 DPDK 用户态程序 BSD 协议,Alpine Linux 用 GPL 但无需修改内核
售后工作量大 🔴 高 中 初期配详细 LED 故障灯说明、FAQ 文档;逐步建立知识库
被友商抄袭 🟡 中 中 开源 + 社区粘性 + 持续更新;品牌信任是壁垒
3C 认证 (做硬件后) 🔴 高 中 初期只卖固件/散件/DIY 套件;量大了再走认证

十一、竞品对比

对比维度 运营商光猫 小米路由器 软路由 (iStoreOS) 你的盒子
NAT 性能 (千兆) ~600M ~940M ~940M ~940M (线速)
满载延迟 (小包) 200ms+ 80ms+ 50ms+ <20ms
智能流控 ❌ 基础 QoS 需手动配置 自动,零配置
配置难度 不用 (默认烂) 中等 高 不用配
售价 ¥0 (送的) ¥300 ¥400+ ¥299
开源 ❌ ❌ 部分 ✅ 核心开源

十二、相关资源

  • 学习路线文档: 2026-06-29-dpdk-roadmap-v3-design.md
  • 加速路径文档: DPDK_ACCELERATED_PATH.md
  • DPDK 源码: ~/myshare/dpdk-stable-24.11.6
  • 内核对照: ~/myshare/linux-stable (v6.6)
  • 性能压测工具: ~/myshare/dperf-main