- 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>
13 KiB
Executable File
13 KiB
Executable File
家用 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