对应路线图:Phase 6 (Day 169-196,加速路径收官) | 母本:2026-06-29-dpdk-roadmap-v3-design.md546 天设计文档(Day 456-546 收口段)
上一篇:P6-02 面试题库精选 | 下一篇:全系列完结
一句话定位
把 18 个月的执行结果摊开:六阶段走到了哪、性能数字兑现了没有、四个出口通向哪里——以及最重要的,路线图开篇的三个问题,现在能不能答上来。
起点:先诚实盘点(母本第二章)
动笔写路线图那天,我的自评是:DPDK API 中级、用户态协议栈中级、SONiC 入门、内核网络"只看过书没读过源码"、PCIe"没亲手解码过 BAR"。结论只有一句——广度够了,深度不足;能写 demo,写不出线速数据面。这份路线图就是针对这个诊断开的药方。
目标:三个"给我"(母本 1.1 节)
- 给我一张 100Gbps 网卡,我能写出单核线速的用户态数据面;
- 给我一颗 DPU/SmartNIC,我能设计它的数据面架构;
- 给我一套 SONiC,我能让它跑在纯 DPDK 软件转发上。
六阶段回顾(母本第三章主线)
| # | 阶段 | Day 区间 | 核心交付 | 博客 |
|---|---|---|---|---|
| P1 | DPDK 内功 + 协议栈 | 1-91 | 单核 100Gbps echo + 性能报告 | P0-01~P1-07 |
| P2 | SONiC×DPDK | 92-182 | 15 个 SAI API 跑通 L2/L3/ACL | P2-01~P2-07 |
| P3 | vSwitch / 云网关 | 183-273 | VPP plugin + LB 4-tuple hash | P3-01~P3-06 |
| P4 | 安全数据面 | 274-364 | 抗 5Mpps SYN flood | P4-01~P4-03 |
| P5 | DPU 数据面 | 365-455 | 30 页 DPU 架构设计文档 | P5-01~P5-06 |
| P6 | 收口 + 出口 | 456-546 | 简历 + 1 个开源项目 | P6-01~P6-03(本篇) |
路径逻辑是螺旋上升:P2 的 sai-dpdk-mini 用 P1 的内功,P3 的 LB 用 P1 的协议栈,P4 的清洗用 P3 的流处理,P5 把前面全部串起来。每一步都在复用上一步,这是路线图设计里我最满意的一点。
性能基线:数字先行(母本附录 B)
路线图把每个阶段钉死在数字上——"优化过了"和"单核 14.88 Mpps"是两种完全不同的完成标准。下表是写进母本附录 B 的公开承诺,每个阶段的实测数据回填 perf-data/,数字与命令一一对应:
| 场景 | 硬件 | 目标 PPS | 目标带宽 |
|---|---|---|---|
| 单核 echo | X710 10G / 1 core | 14.88 Mpps (64B) | 10 Gbps 线速 |
| 多核 echo | CX5 100G / 8 cores | ~100 Mpps | ~100 Gbps |
| OVS-DPDK L2 fwd | 4 cores | 20 Mpps | 80% 线速 |
| dpdk-lb | 4 cores | 5 Mpps | 20 Gbps |
| ddos-clean SYN cookie | 8 cores | 5 Mpps SYN | — |
| Suricata IDS | 8 cores | — | 10 Gbps |
(本文初稿随 Phase 6 第一篇动笔,最终版在 Day 196 收官日按实测数据回填定稿。)
方法论三条(值得带走的部分)
- 内核横切对照(母本 4.5 节):内核学习不是单独排期,而是每周注入 🐧 子任务,K1-K7 七个模块(packet path → NIC 驱动 → TCP/IP → netlink → tc → 虚拟设备 → PCI/VFIO)横切全程,~195h。DPDK 的每个设计都是对内核某一痛点的回应,不读内核就不知道为什么这么设计。
- 每天一个可见产出物(母本 1.3 节):commit / 笔记 / 数据 / 图,没有产出物的一天等于没学。546 天 × 1 个产出物,就是 546 份证据。
- 阶段答辩:每个阶段末尾自问自答(P1 七篇每篇 2-3 问、P6 20 题对照题库),答不上来就说明这三个月有水分,回去补。
出口映射(母本第六章)
| 出口 | 关键阶段 | 简历卖点 | 时机 |
|---|---|---|---|
| 一线大厂网络团队 | P1+P3+P5 | 单核 100Gbps 协议栈 / DPU 架构设计 | M15 末投递 |
| DPU 厂商 | P5 主 + P2 副 | SAI-DPDK 适配器 / rte_flow offload 验证 | M15 末投递 |
| 现公司晋升专家 | P2+P4 | SONiC×DPDK 融合落地 / DDoS 清洗 5Mpps | M12 末申报 |
| 开源 / 个人品牌 | 全程 | libmtcp-v3 + sai-dpdk-mini + 博客 | M18 |
简历是长出来的,不是写出来的——每个阶段结束更新一版(v1→v6)。
系列博客全目录(39 篇)
- P0 地基(7):cache line → NUMA → PCIe → 无锁 MPSC → perf/火焰图 → gdb → 内核网络栈初探
- P1 DPDK 内功(7):EAL → mempool → ring → mbuf → PMD → NUMA/lcore → RSS/rte_flow
- P2 libmtcp(7):mTCP 论文精读 → mTCP 源码架构 → 内核 TCP 状态机对照 → libmtcp-v3 设计 → 实现(上)RX/TX → 实现(下)状态机与 RTO → 调优实录
- P3 OVS+SAI(6):OVS 数据面 → 调优实战 → SONiC 链路 → SAI 头文件 → sai-dpdk-mini → host_if/BGP
- P4 PCIe(3):Config Space/BAR → MSI-X → 从 0 写内核驱动
- P5 DPU 核心(6):DMA/IOVA → VFIO 源码 → virtio/vhost → vDPA → rte_flow offload → 厂商调研
- P6 收口(3):DPU 架构设计 → 面试题库 20 题 → 本篇
(39 篇全部就位;总表与状态见 blog/README.md。)
回头看:三个问题的答案
① 给我 100G 网卡,能写单核线速数据面吗? 能。而且我知道为什么能:mempool 预分配消灭逐包分配(P1-02)、ring 的 CAS+tail 发布消灭锁(P1-03)、PMD 轮询消灭中断(P1-05)、对称 RSS 保证 per-core 免锁表(P1-07)——168 cycles/pkt 的预算(P6-01 算过)就是靠这四件事省出来的。
② 给我 DPU,能设计数据面架构吗? 能。fast/slow path 划界、HW/FW/SW 三层卸载判据、SR-IOV/SF/vDPA 三种多租户隔离、PCIe 带宽与 PPS/时延预算模型(P6-01)——P5 的 PCIe/VFIO/vDPA/offload 四块积木拼起来就是答案。
③ 给我 SONiC,能让它跑在纯 DPDK 软件转发上吗? 能。APPL_DB → ASIC_DB → sairedis → syncd 的链路读透了(P3-03/P3-04),sai-dpdk-mini 把 15 个 SAI API 翻译成 rte_hash/rte_lpm/rte_flow,host_if 用 TAP 桥接让 FRR/BGP 建邻居(P3-05/P3-06)。
三个问题,39 篇博客,546 个勾选框。这就是"会调 API"和"能设计系统"之间的距离。
🔧 行动清单(对应母本 Day 456-546,W66-W78)
- W66 (456-462):项目盘点四选一(libmtcp-v3 / sai-dpdk-mini / dpdk-lb / ddos-clean)→
P6/project-eval.md; - W68-69 (470-483):v1.0 release + CI + benchmark 套件 + Docker 化;
- W70-72 (484-504):三篇引爆博客各一周——第三篇的选题就是母本 Day 498 的"18 个月从 DPDK 用户到 DPU 架构师",即本篇的公开版;
- W73 (505-511):简历定稿三版本(大厂版/DPU 厂商版/安全版),每个项目改成"动词+数字+技术"格式;
- W74-75 (512-525):题库 200 题——Day 515 的内核对照 20 题即 P6-02,Day 522 的 DPU 架构 20 题种子在 P6-01;
- W76-78 (526-546):系统设计 3 题(CDN/清洗中心/智能网卡卸载)+ 两轮模拟面试 + 投递跟进 + 总复盘(Day 542 万字复盘,Day 546 收官答辩)。
18 个月很长,但日子是一天一天过的。 不用每一天都完美执行,但每天都必须有一个可见的产出物。当回头看 Day 1 到 Day 546 的勾选状态时,你的实力会比任何一份简历都更有说服力。
— 起算日 2026-06-29,目标交付日 2027-12-27。我们 546 天后见。
下一篇:全系列完结。 谢谢阅读,评论区见。
评论 (0)