这门课解决什么工作场景
在数据中心与云原生架构中,传统 Linux 内核协议栈因频繁的用户态与内核态切换、中断处理开销及缓存命中率低,已难以支撑万兆乃至更高速率下的业务需求。本课程聚焦于 DPDK 技术栈,深入讲解如何在用户态直接接管网络接口,绕过内核构建高性能协议栈。其核心价值在于解决 NFV 虚拟网络功能、SDN 数据平面、DDos 清洗设备及高性能网关开发中的性能瓶颈问题。通过掌握网卡绑定、多队列分发、零拷贝机制及 ARP/ICMP/UDP/TCP 协议的底层实现,学习者能够从根本上理解高速数据包的处理流转逻辑,为后续研发自定义网络协议栈或优化现有开源组件奠定坚实基础。
适合基础与学习路径建议
本课具备较高的技术门槛,适合具备 Linux C 语言开发能力、熟悉 Socket 编程及 TCP/IP 协议原理的开发者。初学者若缺乏内核网络模块的基础认知,建议先补充内存管理、中断处理及队列机制的相关知识。推荐的学习顺序应从环境搭建与网卡绑定入手,这是实现内核旁路的前提。随后重点钻研 ARP 与 ICMP 的实现,这两个协议结构相对简单,有助于快速验证报文收发链路并理解校验和计算逻辑。在此基础上,再深入 UDP 系统 API 设计及 TCP 状态机的复杂实现。务必结合课程提供的调试资源,通过抓包工具对比标准报文与构造报文的差异,建立“代码实现-报文解析-性能调优”的闭环思维,避免仅停留在理论层面。
学完能独立做什么及资料配合
完成本课程后,你将具备独立设计并实现基于 DPDK 的高性能网络协议栈的能力。具体产出包括:能够正确处理 ARP 请求与响应、维护动态 ARP 表项;实现符合 RFC 标准的 ICMP 回显服务;设计并提供稳定的 UDP/TCP Socket 抽象接口,支持应用层并发连接。此外,你还能针对特定场景对协议栈进行性能诊断与优化。在学习过程中,请充分利用课程源码与调试指南。建议每完成一个模块(如 ARP 或 ICMP),立即进行端到端的连通性测试,并使用 GDB 等工具追踪关键数据结构的内存布局与流转过程。这种边写代码边调试、边验证边复盘的资料配合方式,是将理论知识转化为实际工程能力的最佳路径,也能帮助你在面对复杂的网络故障时,具备独立的排查与解决能力。
课程目录
高性能.jpg (27. 05 KB, ) 2023-7-24 07: 28 上传 01. 【dpdk网络】协议栈之arp/icmp的实现(10节) 1.课程学习路线与大纲内容 试学 28分钟 2.dpdk环境搭建与多队列网卡 试学 70分钟 3.dpdk网卡绑定与arp 66分钟 4.dpdk发送过程的实现 61分钟 5.dpdk发送过程调试 20分钟 6.dpdk-arp实现 38分钟 7.arp 调试流程 14分钟 8.dpdk-icmp实现 39分钟 9.dpdk-icmp流程调试与checksum实现 11分钟 10.arp-table的实现 50分钟 02. 【dpdk网络】协议栈之udp/tcp的实现(10节) 1.arp request实现 44分钟 2.arp 调试流程 13分钟 3.协议栈架构设计优化 63分钟 4.udp实现之udp系统api的设计 24分钟 5.udp实现之sbuf与rbuf的环形队列 53分钟 6.udp实现之发送流程与并发解耦 50分钟 7.udp实现之架构设计与调试 46分钟 8.tcp 三次握手实现之dpdk tcp流程架构设计 48分钟 9.tcp三次握手实现之dpdk tcp11个状态实现 63分钟 10.tcp三次握手实现之dpdk代码调试 29分钟 03. 【dpdk网络】协议栈之tcp的实现(10节) 1.tcp数据传输之ack与seqnum的确认实现 45分钟 2.tcp数据传输之ack与seqnum代码实现 13分钟 3.tcp协议api实现之bind,listen的实现 试学 43分钟 4.tcp协议api实现之accept的实现 39分钟 5.tcp协议api实现之send,recv的实现 32分钟 6.tcp协议api实现之close的实现 33分钟 7.tcp协议栈调试之段错误与逻辑流程 40分钟 8.tcp协议栈调试之ringbuffer内存错误. 34分钟 9.dpdk kni的原理与kni启动 50分钟 10.重构网络协议分发的流程 46分钟 04. 【dpdk网络】基础组件(10节) 1.kni抓包调试tcpdump 16分钟 2.dpdk kni mempool错误与内存泄漏 22分钟 3.DPDK的kni内核处理流程(补) 138分钟 4.dpdk dns处理流程(1) 62分钟 5.dpdk dns处理流程(2) 61分钟 6.基于熵的ddos检测的数学理论 38分钟 7.dpdk ddos熵计算代码实现 26分钟 8.dpdk ddos attach检测准确度调试 10分钟 9.ddos attack 测试工具hping3 10分钟 10.dpdk 布谷鸟hash原理与使用 52分钟 05. 【安全与网关开发】可扩展的矢量数据包处理框架VPP(c/c++)(8节) 1.vpp环境部署与vpp命令讲解 60分钟 2.vpp源码-plugin流程 70分钟 3.flowtable的plugin的运行流程 52分钟 4.flowtable的get flowinfo实现 37分钟 5.flowtable的loadbalancer的框架 38分钟 6.flowtable流程分析 22分钟 7.vpp多网口数据接收与转发 31分钟 8.解决plugin编译加载失败 16分钟 06. 【安全与网关开发】可扩展的矢量数据包处理框架VPP(c/c++) 源码(8节) 1.vpp启动load so,注册node,函数init 63分钟 2.vpp的运行流程 协程的实现,node的运行 49分钟 3.vpp的结构体vlib_main 49分钟 4.vpp结构体 vnet_main以及vpp内容总结 28分钟 5.vcl与posix对nginx,redis性能对比 52分钟 6.vppcom实现tcpserver以及vcl配置 55分钟 7.vcl与posx对比,与vcl分层模型 45分钟 8.vcl的session管理与fd.io文档 53分钟 07. 【安全与网关开发】golang的网络开发框架 nff-go(golang)(4节) 1.nff-go的技术原理分析 57分钟 2.nff-go数据接收代码实现 34分钟 3.nff-go收发数据与包解析显示 35分钟 4.ipsec协议解析与strongswan的ipsec 59分钟 08. 【存储】高效磁盘io读写 spdk(C)(5节) 1.存储框架spdk,为技术栈打开一扇存储的大门 试学 95分钟 2.spdk环境与vhost,NVMe分析 54分钟 3.手把手实现spdk_server(1) 55分钟 4.手把手实现spdk_server(2) 70分钟 5.nvme与pcie以及手写nvme读写操作 94分钟 09. 【存储】高效磁盘io读写 spdk(C)(4节) 1.bdev与blobstore的代码关系 57分钟 2.blobstore的读写操作实现与rpc的关系 66分钟 3.fio ioengine plugin开发与性能对比 75分钟 4.fio ioengine模块开发与blobl操作 84分钟 10. 【虚拟化与云原生】DPDK的虚拟交换机框架 OvS(8节) 1.硬件虚拟化,系统虚拟化,进程虚拟化 61分钟 2.cpu虚拟化到ntytcp的使用 64分钟 3.ovs编译安装,ovs核心组件内容 42分钟 4.网络命名空间与vsctl的vlan划分 33分钟 5.ovs-vsctl的网桥,网口操作 72分钟 6.qemu-kvm多vm管理以及对应虚拟化技术 51分钟 7.virsh启动虚拟网卡与ovs-vsctl操作的流程 45分钟 8.ovs-openflow与json请求 52分钟 11. 【虚拟化与云原生】virtio-vhost虚拟化(10节) 1.virtio与vhost的工作原理 45分钟 2.vhost与qemu通信协议实现 35分钟 3.vhost通信协议解析get feature 44分钟 4.vhost与virtio通信与recvmsg的作用 48分钟 5.virtio的前后端网卡与ifreq的作用 63分钟 6.virtio的setmem与vring的设置 55分钟 7.gpa,gva,hva,hpa之间的关系 36分钟 8.ifreq的tap-tun创建 58分钟 9.vring的物理内存与虚拟内存映射 试学 60分钟 10.vhost与virtio的总结 25分钟 12. 【dpdk网络】基础组件(5节) 1.mempool与mbuf的源码分析讲解 42分钟 2.dpdk-ringbuffer源码分析 32分钟 3.dpdk-igb_uio源码分析 49分钟 4.dpdk-kni源码分析 34分钟 5.rcu的实现与互斥锁,自旋锁,读写锁 57分钟 13. 【dpdk网络】tcp并发(5节) 1.tcp并发连接的设计 38分钟 2.tcp并发epoll的实现 35分钟 3.tcp并发协议栈与epoll的回调与并发测试 24分钟 4.bpf与bpftrace系统,网络挂载实现 58分钟 5.bpf与bpftrace应用程序ntyco的挂载监控 31分钟 14. 【存储】spdk文件系统实现(7节) 1.文件系统功能拆解与设计分析 47分钟 2.件系统引入线程与json配置解析 40分钟 3.文件系统四层架构设计与构建git版本管理 32分钟 4.从blob读写到文件系统的原语操作实现 56分钟 5.syscall的hook实现 51分钟 6.基数树对文件系统内存管理 65分钟 7.测试用例与调试入口函数 44分钟 15. 【虚拟化与云原生】高性能4层负载均衡器 DPVS(6节) 1.dpvs的技术组件与功能实现 42分钟 2.dpvs 与lvs+keepalived的关系 61分钟 3.dpvs的FNat/NAT/SNAT模式 2分钟 4.通过quagga配置ospf 2分钟 5.dpvs测试用例 ipset,tc,mempool 2分钟 6.dpvs的tc流控操作与源码实现 2分钟






