dpdk学习
文章平均质量分 83
yun6853992
走在不知道到知道,知道到懂得,懂得到做到,做到到试图分享的路上。
感激每一个对我提出问题的人,感谢每一个善意鼓励我的人。
展开
-
dpdk课程学习之练习笔记八(dpvs的了解)
1:知道了lvs能实现的功能,挺强大。2:熟悉练习一下dpdk的环境搭建,设置网卡支持多队列,设置巨页,dpdk接管网卡。3:dpvs是基于dpdk上的一个产物,了解一下,未涉及相关业务,并未深入。原创 2024-09-18 23:18:16 · 1233 阅读 · 0 评论 -
存储课程学习笔记8_spdk的安装以及简单demo测试
1:对spdk进行安装以及demo测试。2:对宏观上spdk控制磁盘的架构和方案进行认识。3:基于已经能通过spdk对磁盘进行访问的功能,后续按需按业务就得思考了(如何有效管理磁盘?原创 2024-09-11 14:12:56 · 1289 阅读 · 0 评论 -
存储课程学习笔记7_fuse库的简单使用(fuse,opencv的demo)
1:fuse的开发,实际上和前面借助内核插入文件系统大框架感觉差不多,都是实现文件系统基础指令对应的函数。2:借助opencv实现给图片加水印,opencv的编译以及简单测试。3:简单了解fuse库下的example下demo,以及简单验证demo。4:fuse的扩展功能可以根据业务自行扩展,这里只是入门了解。原创 2024-09-10 22:46:16 · 502 阅读 · 0 评论 -
存储课程学习笔记6_io接口练习(readv,writev, 借助本地socket实现进程间(sendmsg,recvmsg)通过共享内存数据交互)
1:主要练习sendv和readv函数接口, 构造struct iovec结构体发送或者接收不连续内存的处理。2:练习AF_UNIX 进行原生socket的通信。3:基于socket通信的基础上,创建共享内存,多个进程之间实现交互(shm_open, mmap)4:多个进程之间使用共享资源(这里共享内存),需要考虑互斥。原创 2024-09-10 17:22:12 · 687 阅读 · 0 评论 -
存储课程学习笔记5_iouring的练习(io_uring,rust_echo_bench,fio)
1:实际上主要用liburing库对io_uring的使用进行测试。2:使用新的开源库,实际上从库中对应的example中开始进行逻辑分析是最合理的。3:io_uring 高效异步IO方案,可以用于磁盘,数据库,大规模io处理,网络等方向(这里以作为tcp server测试)。4:可以用开源库rust_echo_bench 对服务器性能进行测试。5:可以用fio对磁盘读写性能进行测试。原创 2024-09-10 16:20:32 · 1896 阅读 · 0 评论 -
存储课程学习笔记4_设计数据结构管理nvme磁盘(基于已经通过struct nvme_user_io和ioctl实现了对nvme设备的读写)
已经能对nvme设备进行基本的读和写了,如何对nvme磁盘进行管理。根据不同的业务设计,自己定义数据结构对磁盘进行管理,这里定义结构进行管理测试。可以看看ioctl中参数NVME_IOCTL_SUBMIT_IO 跟踪代码对细节进行了解。思考:基于当前磁盘的读写,如何实现一个文件系统对该磁盘进行控制。原创 2024-09-10 00:29:44 · 908 阅读 · 0 评论 -
存储课程学习笔记3_读写nvme磁盘(清除脏数据,struct nvme_user_io和ioctl进行读写,struct block_device内核提供接口读写)
1:初始化nvme磁盘,清空脏数据 dd指令2:struct nvme_user_io结构体+ioctl实现直接控制nvme磁盘。了解block块3:借助内核接口插入内核模块实现对nvme磁盘的访问。(struct block_device对象以及struct bio实现提交请求)4:已经实现基本的对nvme磁盘的基本读和写访问,已经能访问磁盘了,基于当前已有功能,思考如何有效管理整个磁盘,如何实现文件系统的功能。原创 2024-09-09 22:43:27 · 875 阅读 · 0 评论 -
存储课程学习笔记2_借助内核插入一个文件系统,用文件夹下测试文件系统(mount文件系统到目录下是入口)
0:mount是入口,一个裸盘先赋予文件系统,然后mount后才可以用。1:内核提供了插入文件系统的方法,register_filesystem函数和对应的struct file_system_type 结构体。2:插入内核模块的demo,基于插入内核模块,实现插入一个新的文件系统。原创 2024-09-09 20:49:35 · 759 阅读 · 0 评论 -
存储课程学习笔记1_访问scsi磁盘读写测试(struct sg_io_hdr,ioctl,mmap)
scsi原创 2024-09-09 18:29:59 · 726 阅读 · 0 评论 -
dpdk课程学习之练习笔记七(vpp环境搭建及plugin demo测试)
vpp插件环境搭建笔记:安装vpp环境,运行一个插件的demo相关操作笔记。1:vpp测试环境安装1.1:vpp安装git clone -b stable/1801 https://github.com/FDio/vpp.git./extras/vagrant/build.shmakecd build-root/dpkg -i vpp-lib_18.01.2-1~g9b554f3_amd64.debdpkg -i vpp_18.01.2-1~g9b554f3_amd64.debdpkg原创 2021-12-31 13:51:41 · 2169 阅读 · 0 评论 -
dpdk课程学习之练习笔记六(虚拟化理解vhost和virtio)
学习,简单了解dpdk的一些基础知识,这里主要学习虚拟化相关基础知识。(个人课堂笔记,理性参考)1:硬件支持 多队列网卡1.1:多队列网卡:===》网卡内部有多个队列,与CPU进行绑定,通过PCI总线进行数据分发。===》1:数据先进行hash===》2:根据hash后的结果,放入对应的队列中。===》3:多队列网卡中的数据会触发中断,由PCI和CPU进行处理。1.2:多队列网卡的发送与接收:===>1:多队列网卡中数据的接收,需要知道网卡中有数据,通过硬件中断的方式,硬件中断在数据量原创 2021-12-27 12:04:08 · 953 阅读 · 0 评论 -
dpdk课程学习之练习笔记五(kni理解及测试)
dpdk有关kni的练习:kni模块可以实现把不用dpdk处理的相关协议报文扔给内核处理,并接受返回结果用dpdk接管的网卡进行发送出去。1:kni概述(内核网卡接口Kernel NIC Interface)dpdk提供了kni模块,实现了dpdk应用程序与内核数据的交互。dpdk接管网卡数据后,内核其实就无法识别到网卡数据了。dpdk提供了kni模块,用虚拟网络适配器(模拟了一个网卡),实现了dpdk应用程序和内核网络模块的交互。所以kni的模块主要就是提供了一个中间虚拟网络适配器,把dpd原创 2021-12-26 16:10:30 · 3464 阅读 · 0 评论 -
dpdk课程学习之练习笔记四(dns预备)
0:安装环境基础命令(vmware+ubuntu 16)hlp@ubuntu:~$ lsb_release -aNo LSB modules are available.Distributor ID: UbuntuDescription: Ubuntu 16.04.7 LTSRelease: 16.04Codename: xenial#环境安装前sudo apt-get updatesudo apt-get upgradesudo apt-get install python原创 2021-12-26 00:08:10 · 1141 阅读 · 0 评论 -
dpdk课程学习之公开课基础知识整理(uio,dma,vfio,大内存页理解)
本文内容仅来源于一次免费试听课,以及自己理解整理,未经过严谨验证,如果有误,请指点。1:介绍dpdk是软件,是一个应用程序,是linux环境中的一个进程,是用户层控制的。dpdk场景:交换机,路由器等以网络传输/网络计算为主的相关业务扩展,多队列网卡,多个网卡,与dpdk配合可以灵活进行各种业务扩展。2:linux内核当前对网络数据的处理3:引入dpdk接管网卡数据3.1:dpdk接管网卡数据,而不是内核处理由上文可以看到,网络数据通过网卡接收后,由操作系统内核协议栈进行处理(内核协议栈是写原创 2021-12-17 01:13:11 · 2308 阅读 · 0 评论 -
dpdk课程学习之练习笔记三(tcp的简单实现)
dpdk(数据平面开发套件),提供给我们一套框架,使我们可以在此基础上进行数据面相关软件开发。1:基于DPDK实现tcp数据包的处理的测试1.1:整理基于dpdk实现tcp协议业务处理的思路:1:dpdk接管网卡数据后,放入中间接收缓冲区。 dpdk提供接口rte_eth_rx_burst 从以太网接收队列中提取接收的数据。2:专门的线程处理中间接收缓冲区的数据,进行过滤,依次业务处理。(arp/tcp/udp/icmp)(这里可以继续启动线程分类处理)3:相关其他线程处理完业务数据包,需要回原创 2021-12-12 12:38:51 · 3151 阅读 · 4 评论 -
dpdk课程学习之练习笔记二(arp, udp协议api测试)
基于dpdk,测试udp/tcp协议栈基础功能这里更倾向与练习笔记,详细实现以及逻辑细节梳理,后期逐渐完善。1:有关arp的支持已经练习了arp response的功能。为了支撑udp/tcp协议栈,需要完善arp的功能,这里测试支持arp request,和arp表的功能。1.1:梳理arp功能支持(初步理解,如有不对,请指正)1:arp基础报文可以分为两种arp request(请求报文)和arp response(对请求报文的回复报文)2:以我们所处的dpdk的环境节点进行分析:===原创 2021-12-10 13:46:12 · 3005 阅读 · 0 评论 -
dpdk课程学习之练习笔记一(接收,发送,arp,icmp功能测试)
不去手动做练习实践,就总有一种无从下手的感觉,先按照老师的已有的源码,把场景,现象运行起来。工作太忙,抽时间学习,本文更趋向于笔记,整理思路,为下一步做准备。0:准备环境并启动,使用dpdk接管其中一个网卡。ubuntu虚拟机环境配置多队列网卡,安装dpdk。在环境已经配置ok的前提下,每次重启环境后需要重新配置环境变量,并且绑定网卡。export RTE_SDK=/home/hlp/dpdk/dpdk-stable-19.08.2export RTE_TARGET=x86_64-native-原创 2021-12-09 18:31:06 · 1970 阅读 · 5 评论 -
dpdk测试环境搭建(vmware下ubuntu环境参考上文汇总流程)
参考上一篇文章,这里做回顾以及整理:使用vmware虚拟机(16.04)+dpdk(dpdk-19.08.2.tar)进行测试1:定义两个网络适配器,第一个定义为桥接模式(用来连接dpdk)第二个设置为net模式,用来连接xshell方便测试 增加处理器,增加内存(方便设置多队列网卡,设置大内存页)2:配置使多个网卡有效,修改配置文件后要重启网络服务的,才能生效:sudo service networking restart3:修改配置文件使环境支持多队列(虚拟机配置文件中修改对应网卡)原创 2021-11-30 23:16:48 · 2227 阅读 · 1 评论 -
dpdk环境搭建及运行helloworld测试
使用纯净环境搭建dpdk测试环境: 使用vmware虚拟机安装dpdk环境进行测试。 虚拟机用16.04ubuntu dpdk用dpdk-19.08.2.tar(官网下载)1:安装dpdk环境前准备。1:新的虚拟机环境,换源,更新,安装gcc,g++,确保python安装2:增加网络适配器,增加处理器,可能要增大内存,设置多网卡。 这里我 第一个网络适配器桥接模式,作为dpdk多网卡测试环境。 第二个网络适配器net模式,作为连接xshell方便操作原创 2021-11-30 18:08:25 · 2270 阅读 · 0 评论 -
dpdk预备学习环境准备之多队列网卡认识及测试
dpdk学习预备之多队列网卡环境搭建dpdk学习预备之环境搭建: 这里使用VMware+ubuntu虚拟机环境这里涉及到的小知识点: 1:配置多个网卡,并使环境上多个网卡都能生效。 2:修改虚拟机网卡名称为传统的eth0 3:多队列网卡的测试dpdk测试环境是怎样的?个人理解:网卡一般接收到数据后会给内核相关内核协议栈,这里dpdk会代替这里的协议栈,接管网卡上的数据,实现定制性开发,对网络性能进行优化与提升。所以:1:dpdk要接管一个网卡上的数据,所以我们测试的时候需要专门原创 2021-11-29 16:57:34 · 3530 阅读 · 0 评论