你是否遇到这样的问题:
- 如何解决实际场景中的性能瓶颈问题?
- 高性能网络技术方案的总体架构是什么样的?
- 如何理解高性能网络技术方案中的各个模块?
- 软件和硬件的交互机制和流程是什么样的?
- 如何从底层理解高性能网络技术方案?如何应用?
- 如何将高性能网络技术方案引入到现有产品中?
本文介绍下DPDK进阶到高性能专家的学习路线,整个学习路线,直接对标DPDK资深架构师岗位,知识点包括dpdk、储存、网关开发、网络协议栈、网络安全、TRex、vpp、OVS、DDos、虚拟化技术等等 。其次你把整个内容,全部消化,是完全可以胜任任何DPDK资深架构师岗位招聘,DPDK开发招聘。
1、DPDK网络专栏
(1)dpdk基础知识
-
1.多队列网卡,vmxnet/e1000
-
2.igb_ uio与vfio模块
-
3.kni模块
-
4.hugepage的理解
-
5.零拷贝
-
6.dpdk与netmap区别
-
7.dpdk的工作环境
(2)网络协议栈
-
1.dpdk-arp
-
2.netsh静态arp表设置
-
3.dpdk-icmp
-
4.udp协议格式分析
-
5.udp协议sendto, recvfrom实现
-
6.dpdk-ip
-
7.dpdk-tcp
-
8.tcp协议栈bind,listen, accept实现
-
9.tcp协议栈recv, send, close的实现
-
10.tcp三次握手实现
-
11.tcp四次挥手实现
-
12.tcp acknum与seqnum的确认机制实现
-
13.tcp的并发连接设计
-
14.epoll并发的实现
-
15.tcp协议栈与epoll之间的回调实现
(3)dpdk组件项目
-
1.dpdk-ac
-
2.dpdk-kni
-
3./dev/ kni的原理分析
-
4.kni_ dev的流程
-
5.kni的t缓冲区,rx缓冲区
-
6.kni的用户空间与内核空间映射
-
7.mbuf如何转化为kernel的sk_ buff
-
8.dpdk- timer
-
9.bpftrace的使用
-
10.dpdk- bpf源码流程
(4)dpdk经典项目
-
1.dpdk- dns
-
2.dpdk- gateway
-
3.dpdk-ddos熵计算源码
-
4.ddos attach检测精确度调试
-
5.ddos attach测试T具hping3
-
6.布谷鸟hash原理与使用
DPDK视频以及文档领取地址:
https://disk.0voice.com/p/nvhttps://disk.0voice.com/p/nv
2、储存技术专栏
(1)高效磁盘io读写spdk(C)
-
1.存储框架spdk,为技术栈打开扇存储的大门
-
2.spdk运行环境与vhost
-
3.NVMe与PCl的关系
-
4.手把手实现spdk_ server
-
5.nvme与pcie以及手写nvme读写操作
-
6.bdev与blob之间的关系
-
7.实现blob异步读写
-
8.blobstore的读写操作实现与rpc的关系
-
9.fio性能测试性能对比libaio,io_ uring,psync
-
10.fio plugin工作流程
-
11.fio plugin开发
(2)spdk文件系统的实现
-
1.文件系统功能拆解
-
2.spdk_ env_ init与spdk_ app init的差别
-
3.spdk_ _thread_ poll实现rpc回调
-
4.fs_ operations结构体定义
-
5.file_ operations结构体定义
-
6.dir_ operations结构体定义
-
7.syscall的hook实现
-
http://8.io内存管理
-
9.基数树对文件系统内存管理
-
10.spdk_ blob的open,read,write,close
-
11.测试用例与调试入口函数
(3)spdk kv存储的实现
-
1.KV存储拆解Set, Get, Mod, Del
-
2.app/.a库/so库对于kv存储的选择
-
3.bdev与blob对于kv存储的选择
-
4.kv service启动blob资源操作
-
5.kv service关闭blob资源回收
-
6.kv service接口set,get,modify,delete
-
7.kv遍历与查找实现
-
8.page存储chunk的管理
-
9.pagechunk的get与put
-
10.page单查找与多页查找
-
11.btree, artree, hashmap,radixtree, rbtree之间的选择
-
12.slab的实现
-
13.slab分配slot与释放slot
-
14.为kv加上conf文件
-
15.测试用例与性能测试
3、安全与网关开发专栏
(1)可扩展的矢量数据包处理框架vpp(c/c++)
-
1.vpp命令详解
-
2.mac/ip转发plugin
-
3.load_ balance plugin
-
4.flowtable plugin
-
5.vpp源码之间的差异
-
6.多网卡数据接收与转发
-
7.解决plugin编译加载
-
8.vpp启动load so的流程
-
9.vpp的结构体vlib_ _main实现分析
-
10.vpp的结构体vnet_ main
-
11.vector的操作实现
-
12.vpp vcl库与LD_ PRELOAD实现分析
-
13.vcl原理讲解
-
14.vcl tcpserver实现原理
-
15.vcl tcpclient实现原理
-
16.vcl与iperf3的客户端与服务器
-
17.vcl与nginx的wrk性能测试
-
18.vcl与haproxy的性能测试
-
19.vpp 1801版本与vpp 2206版本
-
20.vpp httpserver的实现源码
-
21.vpp plugin quic源码分析
-
22.vpp plugin hs_ app的源码
-
23.vpp plugin rdma的实现分析
-
24.vpp plugin loadbalance
-
25.vpp plugin nat的源码分析
-
26.vpp host-stack tcp协议实现
-
27.vpp plugin的测试用例实现
(2)golang的网络开发框架nff-go(golang)
-
1.nff-go实现的技术原理
-
2.nff-go/low.h实现分析
-
3.nff- go数据接收的实现
-
4.nff-go数据发送的实现
-
5.ipsec协议解析与strongswan的ipsec
-
6.nff go的缺陷与不足
4、虚拟化与云原生专栏
(1)DPDK的虚拟交换机框架OvS
-
1.ovs编译安装,ovs核心组件内容
-
2.ovs-vswitchd的工作原理
-
3.ovs-vswitchd与dpdk的关系
-
4.ovs-vsctl的网桥,网口操作
-
5.qemu-system-x86_ 64构建多子网
-
6.ovs与qemu数据流分发
-
7.ovs搭建docker跨主机通信
-
8.ovsdb server与ovsdb协议
-
9.json-rpc为控制面提供开发
-
10.ovs-tcpdump/ovs-l3ping
-
11.OvS 4种数据路径
-
12.VXL AN数据协议
-
13.ovs流量统计
(2)高性能4层负载均衡器DPVS
-
1.dpvs的技术组件与功能边界
-
2.lvs+keepalived配置高可用server
-
3.dpvs与|lvs+ keepalived的关系
-
4.dpvs.conf的配置文件
-
5.dpvs的FNat/NAT/SNAT模式
-
6.dpvs的DR模式
-
7.dpvs的tun模式
-
8.通过quagga配置ospf
-
9.dpvs的tc流控操作与源码实现
-
10.dpvs代码架构分析
-
11.dpvs测试用例ipset, tc,mempool
5、测试工具专栏
(1)perf3
-
1.vpp vcl的perf3接口hook
-
2.perf3测网络带宽
-
3.tcp吞吐量测试
-
4.udp丢包与延迟测试
-
5.json测试结果输出
(2)TRex
-
1.TRex的运行原理
-
2.TRex与dpdk
-
3.构建TRex测试系统
-
4.t-rex -64- debug gdb调试
-
5.bg-sim- 64模拟单元测试
-
6.YAML文件编写
-
7.流编排与自动化框架
-
8.报文变量设置
(3)dpdk-pktgen
-
1.pktgen命令讲解
-
2.default.cfg配置文件分析
-
3.120M bits/s的转发速率
(4)fio
-
1.ioengine的实现
-
2.ioengine_ ops的分析
-
3.iodepth的分析
-
4.spdk_ nvme的fio分析
-
5.spdk_ bdev的fio分析
-
6.spdk_ blob的ioengine实现
-
7.psync,io_ uring, libaio性能对比
6.性能测试专栏
(1)性能指标
-
1.吞吐量bps
-
2.拆链/建链pps
-
3.并发
-
4.最大时延
-
5.最小时延
-
6.平均时延
-
7.负载
-
8.包速fps
-
9.丢包率
(2)测试方法
-
1.测试用例
-
2.vpp sandbox
-
3.perf3灌包
-
4.rfc2544
7、适学人群
-
工作中技术没有挑战,工作中接触不到新技术的在职工程师
-
从事嵌入式开发对网络存储底层感兴趣在职工程师
-
自己研究学习速度较慢,不能系统构建知识体系的开发人员
-
从事网络存储安全的工程师,想深入了解底层技术原理
8、课程目标岗位
-
高级网络开发工程师
-
DPDK开发工程师
-
云基础开发工程师
-
NFV开发工程师
-
高性能优化工程师
-
云产品研发工程师
-
SDN开发工程师