制作一个网站齐河县工程建设监理有限公司网站
课程围绕安全,网络,存储,云原生4个维度去讲解核心技术点。
6个专栏组成:dpdk网络专栏、存储技术专栏、安全与网关开发专栏、虚拟化与云原生专栏、测试工具专栏、性能测试专栏
一、dpdk网络
dpdk基础知识
- 多队列网卡,vmxnet/e1000
 - igb_uio 与 vfio 模块
 - kni 模块
 - hugepage 的理解
 - 零拷贝
 - dpdk 与netmap 区别
 - dpdk 的工作环境
 
网络协议栈
- dpdk-arp .
 - netsh 静态 arp 表设置
 - dpdk-icmp
 - dpdk-udp
 - udp 协议格式分析
 - udp 协议 sendto,recvfrom 实现
 - dpdk-ip .
 - dpdk-tcp
 - tcp 协议栈 bind,listen,accept 实 现
 - tcp 协议栈 recv,send, close 的实现
 - tcp 三次握手实现
 - tcp 四次挥手实现
 - tcp acknum 与 seqnum 的确认机制实现
 - tcp 的并发连接设计
 - epoll 并发的实现
 - tcp 协议栈与 epoll 之间的回调实现
 
dpdk组件项目
- dpdk-acl
 - dpdk-kni
 - /dev/kni 的原理分析
 - kni_dev 的流程
 - kni 的 tx缓冲区,rx缓冲区
 - kni 的用户空间与内核空间映射
 - mbuf 如何转化为 kernel 的 sk_buff
 - dpdk-timer
 - bpftrace 的使用
 - dpdk-bpf 源码流程
 
dpdk经典项目
- dpdk-dns
 - dpdk-gateway
 - dpdk-ddos 熵计算源码
 - ddos-attach 检测精确度调试
 - ddos attach 测试工具 hping3
 - 布谷鸟 hash 原理与使用
 
二、存储
高效磁盘io读写 spdk ©
- 存储框架 spdk,为技术栈打开一扇存储的大门
 - spdk 运行环境与 vhost
 - NVMe 与 PCI 的关系
 - 手把手实现spdk_ server
 - nvme 与 pcie 以及手写 nvme 读写操作
 - bdev 与 blob 之间的关系
 - 实现 blob 异步读写
 - blobstore 的读写操作实现与 rpc 的关系
 - fio 性能测试性能对比 libaio,io_uring, psync
 - fio plugin 工作流程
 - fio plugin 开发
 
spdk文件系统的实现
- 文件系统功能拆解
 - spdk_env_init 与 spdk_app_init 的差 别
 - spdk_thread_poll 实现 rpc 回调
 - fs_operations 结构体定义
 - file_operat ions 结构体定义
 - dir_operat ions 结构体定义
 - syscall 的 hook 实现
 - io 内存管理
 - 基数树对文件系统内存管理
 - spdk_blob 的 open, read, write, close
 - 测试用例与调试入口函数
 
spdkkv存储的实现
- KV 存储拆解 Set, Get, Mod, Del
 - app/. a库/. so库对于kv存储的选择
 - bdev 与 blob 对于kv存储的选择
 - kv service 启动 blob 资源操作
 - kv service 关闭 blob 资源回收
 - kv service 接口 set, get, modify, delete
 - kv遍历与查找实现
 - page 存储 chunk 的管理
 - pagechunk 的 get 与 put
 - page 单查找与多页查找
 - btree,artree, hashmap,radixtree, rbtree之 间的选择
 - slab 的实现
 - slab 分配 slot 与释放 slot
 - 为kv加上 conf 文件
 - 测试用例与性能测试
 
三、安全与网关开发
可扩展的矢量数据包处理框架vpp (c/c++)
- vpp 命令详解
 - mac/ip 转发 plugin
 - load_balance plugin
 - flowtable plugin
 - vpp 源码
 - 多网卡数据接收与转发
 - 解决 plugin 编译加载
 - vpp 启动 load so 的流程
 - vpp 的结构体 vlib_main
 - vpp 的结构体 vnet_main
 - vector 的操作实现
 - vpp vcl 库与 LD_PRELOAD
 - vcl 原理讲解
 - vcl tcpserver 实现原理
 - vc| tcpclient 实现原理
 - vcl 与 iperf3 的客户端与服务器
 - vcl 与 nginx 的 wrk 性能测试
 - vcl 与 haproxy 的性能测试
 - vpp 1801版本与vpp 2206版本之间的差异
 - vpp httpserver 的实现源码
 - vpp plugin quic 源码分析
 - vpp plugin hs_app 的源码实现分析
 - vpp plugin rdma 的实现分析
 - vpp plugin loadbalance 实现分析
 - vpp plugin nat 的源码分析
 - vpp host-stack tcp 协议实现
 - vpp plugin 的测试用例实现
 
golang的网络开发框架nff- go (go lang)
- nff-go 实现的技术原理
 - nff-go/low.h 实现分析
 - nff-go 数据接收的实现
 - nff-go 数据发送的实现
 - ipsec 协议解析与 strongswan 的 ipsec
 - nff-go 的缺陷与不足
 
四、虚拟化与云原生
DPDK的虚拟交换机框架OvS
- ovs编译安装,ovs核心组件内容
 - ovs-vswitchd 的工作原理
 - ovs-vswitchd 与 dpdk 的关系
 - ovs-vsctI 的网桥,网口操作
 - qemu-system-x86_64 构建多子网
 - ovs 与 qemu 数据流分发
 - ovs 搭建 docker 跨主机通信
 - ovsdb-server 与 ovsdb 协议
 - json-rpc 为控制面提供开发
 - ovs-tcpdump/ ovs-l3ping
 - 0vS 4种数据路径
 - VXLAN数据协议
 - ovs流量统计
 
高性能4层负载均衡器 DPVS
- dpvs 的技术组件与功能边界
 - Ivs+keepalived 配置高可用 server
 - dpvs 与 Ivs+keepalived 的关系
 - dpvs.conf 的配置文件
 - dpvs 的 FNat/NAT/SNAT模式
 - dpvs 的 DR 模式
 - dpvs 的 tun 模式
 - 通过 quagga 配置 ospf
 - dpvs 的 tc 流控操作与源码实现
 - dpvs 代码架构分析
 - dpvs 测试用例 ipset,tc,mempool
 
五、测试工具
perf3
- vpp vcl 的 perf3 接口 hook
 - perf3 测网络带宽
 - tcp 吞吐量测试
 - udp 丢包与延迟测试
 - son 测试结果输出
 
TRex
- TRex 的运行原理
 - TRex 与 dpdk
 - 构建 TRex 测试系统
 - t-rex-64-debug-gdb 调试
 - bg-sim-64 模拟单元测试
 - YAML 文件编写
 - 流编排与自动化框架
 - 报文变量设置
 
dpdk- pktgen
- pktgen 命令讲解
 - default.cfg 配置文件分析
 - 120M bits/s 的转发速率
 
fio
- ioengine 的实现
 - ioengine_ops 的分析
 - iodepth 的分析
 - spdk_nvme 的 fio 分析
 - spdk_bdev 的 fio 分析
 - spdk_blob 的 ioengine 实现
 - psync,io_uring, libaio 性能对比
 
六、性能测试
性能指标
- 吞吐量 bps
 - 拆链/建链 pps
 - 并发
 - 最大时延
 - 最小时延
 - 平均时延
 - 负载
 - 包速 fps
 - 丢包率
 
测试方法
- 测试用例
 - vpp sandbox
 - perf3 灌包
 - rfc2544
 
dpdk/spdk/网络协议栈/存储/网关开发/网络安全/虚拟化/0vS/TRex/dpvs技术专家成长体系教程
目标岗位
- 高级网络开发工程师
 - DPDK开发工程师
 - 云产品研发工程师
 - 云基础开发工程师
 - 高性能优化工程师
 - SDN开发工程师
 - NFV开发工程师
 

