当前位置: 首页 > news >正文

dpdk/spdk/网络协议栈/存储/网关开发/网络安全/虚拟化/ 0vS/TRex/dpvs技术专家成长体系教程

课程围绕安全,网络,存储,云原生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开发工程师

在这里插入图片描述

相关文章:

dpdk/spdk/网络协议栈/存储/网关开发/网络安全/虚拟化/ 0vS/TRex/dpvs技术专家成长体系教程

课程围绕安全,网络,存储,云原生4个维度去讲解核心技术点。 6个专栏组成:dpdk网络专栏、存储技术专栏、安全与网关开发专栏、虚拟化与云原生专栏、测试工具专栏、性能测试专栏 一、dpdk网络 dpdk基础知识 多队列网卡&#xff0…...

树莓派玩转openwrt软路由:5.OpenWrt防火墙配置及SSH连接

1、SSH配置 打开System -> Administration,打开SSH Access将Interface配置成unspecified。 如果选中其他的接口表示仅在给定接口上侦听,如果未指定,则在所有接口上侦听。在未指定下,所有的接口均可通过SSH访问认证。 2、防火…...

Gin:获取本机IP,获取访问IP

获取本机IP func GetLocalIP() []string {var ipStr []stringnetInterfaces, err : net.Interfaces()if err ! nil {fmt.Println("net.Interfaces error:", err.Error())return ipStr}for i : 0; i < len(netInterfaces); i {if (netInterfaces[i].Flags & ne…...

缓存降级代码结构设计

缓存降级设计思想 接前文缺陷点 本地探针应该增加计数器&#xff0c;多次异常再设置&#xff0c;避免网络波动造成误判。耦合度过高&#xff0c;远端缓存和本地缓存应该平行关系被设计为上下游关系了。公用的远端缓存的操作方法应该私有化&#xff0c;避免集成方代码误操作&…...

一文深入理解高并发服务器性能优化

我们现在已经搞定了 C10K并发连接问题 &#xff0c;升级一下&#xff0c;如何支持千万级的并发连接&#xff1f;你可能说&#xff0c;这不可能。你说错了&#xff0c;现在的系统可以支持千万级的并发连接&#xff0c;只不过所使用的那些激进的技术&#xff0c;并不为人所熟悉。…...

pytorch中的归一化函数

在 PyTorch 的 nn 模块中&#xff0c;有一些常见的归一化函数&#xff0c;用于在深度学习模型中进行数据的标准化和归一化。以下是一些常见的归一化函数&#xff1a; nn.BatchNorm1d, nn.BatchNorm2d, nn.BatchNorm3d&#xff1a; 这些函数用于批量归一化 (Batch Normalization…...

【管理运筹学】第 10 章 | 排队论(1,排队论的基本概念)

文章目录 引言一、基本概念1.1 排队过程1.2 排队系统的组成和特征1.3 排队模型的分类1.4 系统指标1.5 系统状态 引言 开一点排队论的内容吧&#xff0c;方便做题。 排队论&#xff08;Queuing Theory&#xff09;也称随机服务系统理论&#xff0c;是为解决一系列排队问题&…...

【Express】服务端渲染(模板引擎 EJS)

EJS&#xff08;Embedded JavaScript&#xff09;是一款流行的模板引擎&#xff0c;可以用于在Express中创建动态的HTML页面。它允许在HTML模板中嵌入JavaScript代码&#xff0c;并且能够生成基于数据的动态内容。 下面是一个详细的讲解和示例&#xff0c;演示如何在Express中…...

Linux CentOS8安装gitlab_ce步骤

1 下载安装包 wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/8/gitlab-ce-15.0.2-ce.0.el8.x86_64.rpm/download.rpm2 安装gitlab yum install policycoreutils-python-utilsrpm -Uvh gitlab-ce-15.0.2-ce.0.el8.x86_64.rpm3 更新配…...

RabbitMq启用TLS

Windows环境 查看配置文件的位置 选择使用的节点 查看当前节点配置文件的配置 配置TLS 将证书放到同配置相同目录中 编辑配置文件添加TLS相关配置 [{ssl, [{versions, [tlsv1.2]}]},{rabbit, [{ssl_listeners, [5671]},{ssl_options, [{cacertfile,"C:/Users/17126…...

CakePHP 3.x/4.x反序列化RCE链

最近网上公开了cakephp一些反序列化链的细节&#xff0c;但是没有公开poc&#xff0c;并且网上关于cakephp的反序列化链比较少&#xff0c;于是自己跟一下 &#xff0c;构造pop链。 CakePHP简介 CakePHP是一个运用了诸如ActiveRecord、Association Data Mapping、Front Contr…...

练习之C++[3]

文章目录 1.模板类2.模板声明3.string类 1.模板类 模板可以具有非类型参数&#xff0c;用于指定大小&#xff0c;可以根据指定的大小创建动态结构所以可用来创建动态增长和减小的数据结构模板运行时不检查数据类型&#xff0c;也不保证类型安全&#xff0c;相当于类型的宏替换…...

[MT8766][Android12] 修改WIFI热点默认名称、密码、IP地址以及默认开启热点

文章目录 开发平台基本信息问题描述解决方法 开发平台基本信息 芯片: MTK8766 版本: Android 12 kernel: msm-4.19 问题描述 最近做了一款没有屏幕显示的智能盒子&#xff0c;要想操控这款设备就只能通过adb投屏&#xff0c;如果默认不允许有线连接&#xff0c;那么要怎么实…...

【嵌入式】堆栈与单片机内存

堆栈 在片内RAM中&#xff0c;常常要指定一个专门的区域来存放某些特别的数据 它遵循顺序存取和后进先出(LIFO/FILO)的原则&#xff0c;这个RAM区叫堆栈。 其实堆栈就是单片机中的一些存储单元&#xff0c;这些存储单元被指定保存一些特殊信息&#xff0c;比如地址&#xff0…...

十大排序算法Java实现及时间复杂度

文章目录 十大排序算法选择排序冒泡排序插入排序希尔排序快速排序归并排序堆排序计数排序基数排序桶排序时间复杂度 参考资料 十大排序算法 选择排序 原理 从待排序的数据元素中找出最小或最大的一个元素&#xff0c;存放在序列的起始位置&#xff0c; 然后再从剩余的未排序元…...

[Go]配置国内镜像源

配置 Windows 选一个 go env -w GOPROXYhttps://goproxy.cn,direct go env -w GOPROXYhttps://mirrors.aliyun.com/goproxy,direct查看环境配置 go env...

Java知识点补充

静态方法 vs 实例方法&#xff1a; 静态方法&#xff08;使用 static 关键字声明&#xff09;&#xff1a;属于类&#xff0c;不依赖于对象实例&#xff0c;可以通过类名直接调用。 实例方法&#xff08;不使用 static 关键字声明&#xff09;&#xff1a;属于类的实例&#xf…...

Webpack和JShaman相比有什么不同?

Webpack和JShaman相比有什么不同&#xff1f; Webpack的功能是打包&#xff0c;可以将多个JS文件打包成一个JS文件。 JShaman专门用于对JS代码混淆加密&#xff0c;目的是让JavaScript代码变的不可读、混淆功能逻辑、加密代码中的隐秘数据或字符&#xff0c;是用于代码保护的…...

WEB应用程序编程接口API

使用Web API Web API是网站的一部分&#xff0c;用于与使用具体URL请求特定信息的程序交互。这种请求称为API调用。请求的数据格式以易于处理的格式&#xff08;JSON,CSV&#xff09;返回。 Git和GitHub Git是一个分布式版本控制系统&#xff0c;帮助人们管理为项目所做的工作…...

进阶JAVA篇- BigDecimal 类的常用API(四)

目录 API 1.0 BigDecimal 类说明 1.1 为什么浮点数会计算不精确呢&#xff1f; 1.2 如何创建 BigDecimal 类型的对象 1.2.1具体来介绍三种方式来创建&#xff1a; 1.2.2 结合三种创建方法&#xff0c;一起来分析一下。 1.3 BigDecimal 类中的 valueOf(Strin…...

Nix系统修复终极指南:快速解决包管理问题与数据恢复

Nix系统修复终极指南&#xff1a;快速解决包管理问题与数据恢复 【免费下载链接】nix Nix, the purely functional package manager 项目地址: https://gitcode.com/gh_mirrors/ni/nix Nix作为一款纯粹函数式的包管理器&#xff0c;以其独特的依赖管理和环境隔离机制受到…...

终极CoreUI Bootstrap管理模板:5个导航组件实战技巧提升用户体验

终极CoreUI Bootstrap管理模板&#xff1a;5个导航组件实战技巧提升用户体验 【免费下载链接】coreui-free-bootstrap-admin-template coreui/coreui-free-bootstrap-admin-template: CoreUI-Free-Bootstrap-Admin-Template 是一套免费的Bootstrap 4/5管理模板&#xff0c;包含…...

搜索引擎技巧

一.搜索行动框架第三步&#xff1a;抽取关键词、构造检索式在选择好搜索工具之后&#xff0c;紧接着就是抽取关键词、构造检索式了。检索式通常由三个要素组成。• 关键词&#xff1a;这个非常容易理解&#xff0c;我们常常在搜索过程中只会输入关键词。但很多时候&#xff0c;…...

从Desat故障到设计哲学:构建高鲁棒性控制器的系统化方法

1. 从Desat故障现象说起&#xff1a;IGBT的"心脏病发作" 第一次遇到Desat故障报警时&#xff0c;我盯着示波器上跳动的波形百思不得其解——明明电路设计完全参照了芯片厂商的参考方案&#xff0c;为什么样机在高温测试时频繁报错&#xff1f;这种经历相信很多电力电…...

别再踩坑了!Windows 10下Mamba-SSM 2.2.2 + CUDA 12.4保姆级安装指南(附已修复依赖包)

Windows 10下Mamba-SSM 2.2.2与CUDA 12.4终极配置指南 在深度学习领域&#xff0c;Mamba-SSM因其高效的状态空间模型架构而备受关注。然而&#xff0c;对于Windows用户而言&#xff0c;配置一个可用的Mamba-SSM环境往往是一场噩梦。本文将带你一步步避开所有陷阱&#xff0c;完…...

立知lychee-rerank-mm快速上手:无需代码,网页界面轻松实现文档相关性打分

立知lychee-rerank-mm快速上手&#xff1a;无需代码&#xff0c;网页界面轻松实现文档相关性打分 你是不是经常遇到这样的困扰&#xff1f;在搜索引擎里输入一个问题&#xff0c;结果返回的答案五花八门&#xff0c;真正有用的信息却藏在好几页之后。或者&#xff0c;你的智能…...

python-flask-djangol框架的旅游导游管理系统的功能全bja0vffx

目录功能模块设计技术实现方案前端交互实现部署与测试方案项目进度规划项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作功能模块设计 旅游导游管理系统基于Python Flask/Django框架开发&#xff0c;需包含以下核心功能模块&…...

别再手动调顺序了!用Vue3+Element Plus+Sortable.js给你的表格加个拖拽编辑弹窗(附完整代码)

Vue3Element PlusSortable.js打造高交互表格编辑弹窗实战 后台管理系统开发中&#xff0c;表格数据的顺序调整和字段管理一直是高频痛点。传统方案往往需要反复点击"上移/下移"按钮或填写表单参数&#xff0c;操作繁琐且体验割裂。本文将带你实现一个弹窗内一站式拖…...

Pixel Mind Decoder 创意写作助手:分析经典文学中的情绪节奏与模仿生成

Pixel Mind Decoder 创意写作助手&#xff1a;分析经典文学中的情绪节奏与模仿生成 1. 当AI遇见文学创作 写作最难把握的是什么&#xff1f;很多作家会告诉你&#xff1a;是情绪的节奏。就像音乐需要起伏的旋律&#xff0c;一部好作品也需要精心设计的情感曲线。但传统创作中…...

QWen 3.5plus总结的总结基准测试结果的正确方法

原文地址&#xff1a;https://dl.acm.org/doi/epdf/10.1145/5666.5673 如何用统计撒谎&#xff1a;总结基准测试结果的正确方法 作者&#xff1a;PHILIP J. FLEMING 和 JOHN J. WALLACE 在文献中&#xff0c;性能结果经常使用性能比率的算术平均值来总结&#xff0c;在某些情况…...