dpu-core与主流DPU厂商集成:兼容性测试与适配指南
dpu-core与主流DPU厂商集成:兼容性测试与适配指南
【免费下载链接】dpu-coredpu-core is DPU customized software utility based on openEuler项目地址: https://gitcode.com/openeuler/dpu-core
前往项目官网免费下载:https://ar.openeuler.org/ar/
dpu-core是基于openEuler的DPU定制化软件工具,旨在为不同DPU产品提供硬件无关的软件管理平台及工具,统一使用接口及命令,构建通用的DPU管理生态。本文将详细介绍dpu-core与主流DPU厂商集成的兼容性测试方法和适配指南,帮助用户快速实现DPU设备的无缝对接与高效管理。
一、DPU兼容性测试环境搭建
1.1 硬件准备
兼容性测试需准备2台物理机(虚拟机当前未试过),网络互通。其中一台作为DPU模拟,另一台作为HOST模拟。在测试模式下,因为会暴露网络端口且不做连接认证,存在网络安全风险,仅能用于内部测试验证,不要用于实际生产环境。实际生产环境中应使用封闭通信方式,如vsock通信模式,需要DPU加HOST,且DPU能支持通过virtio提供vsock通信方式。
1.2 软件环境配置
首先,需要参照https://docs.openeuler.org/zh/docs/22.03_LTS/docs/TailorCustom/imageTailor%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97.html安装好imageTailor工具并将裁剪所要用到的rpm包准备好。镜像openEuler-22.03-LTS-everything-debug-aarch64-dvd.iso中的rpm比较全但是此镜像很大,可以用镜像openEuler-22.03-LTS-aarch64-dvd.iso中的rpm包外加一个install-scripts.noarch(从everything镜像中获取)就可以了。
然后,将dpuos的配置拷贝到对应的路径下:
cp -rf custom/cfg_dpuos /opt/imageTailor/custom cp -rf kiwi/minios/cfg_dpuos /opt/imageTailor/kiwi/minios/cfg_dpuos修改其他配置文件:
- 修改
kiwi/eulerkiwi/product.conf增加名称为dpuos的相关配置 - 修改
kiwi/eulerkiwi/minios.conf增加名称为dpuos的相关配置 - 修改
repos/RepositoryRule.conf增加名称为dpuos的相关配置
进入到conf/aarch64子目录下,修改下面3个文件的密码:
custom/cfg_dpuos/usr_file/etc/default/grubcustom/cfg_dpuos/rpm.confkiwi/minios/cfg_minios/rpm.conf
最后,执行裁剪命令进行裁剪,裁剪出来的iso在路径/opt/imageTailor/result路径下:
cd /opt/imageTailor ./mkdliso -p dpuos -c custom/cfg_dpuos --sec --minios force二、DPU通信架构与兼容性测试
2.1 DPU通信架构
dpu-core通过简单的层级结构,屏蔽底层硬件接口差异及上层应用多样性,其通信架构如下:
- 不同DPU硬件与HOST使用不同的总线协议连接,由上图硬件层和连接通道层表示
- 不同类型的连接总线可能具备相同的通信队列,通过通信队列抽象简化同类型连接总线开发难度
- 通信设备抽象不区分底层连接协议,对上提供统一的通信设备接口抽象及使用接口
- 通信队列抽象和通信设备抽象合并组成通信抽象层,屏蔽底层硬件差异,对上层OS提供统一的通信设备模型及接口
- 接口层/库使用通信设备及其提供的接口函数,封装成OS常见的通信方式,包括网络、串口、unix-socket、FIFO、共享内存SHM等跨HOST-DPU通信通道。
- 应用层使用接口层/库提供的跨HOST-DPU通信接口,实现用户自定义DPU管理功能,包括Telemetry、DPU启动、管理、调试等功能组件,应用功能用户可自定义。sig可提供部分典型应用。
2.2 通信抽象层测试
通信抽象层包括通信队列抽象和通信设备抽象。通信队列抽象根据连接总线协议确定,提供消息队列的创建、销毁、读写等接口函数。通信设备抽象给予通信队列构建一个跨HOST-DPU通信设备,提供设备注册及解绑接口函数。
在兼容性测试中,需要验证不同DPU厂商的通信队列抽象和通信设备抽象是否符合dpu-core的接口规范。可以通过调用以下接口函数进行测试:
- queue_init:消息队列创建
- queue_destroy: 消息队列销毁
- write:向队列写入数据
- read:从队列读出数据
- kick:通知对端有数据写入,或其他事件
- is_full: 队列检查,是否已满
- is_empty: 队列检查,是否为空
- register_dpu_comm_dev: 注册HOST-DPU通信设备
- unregister_dpu_comm_dev: 解绑HOST-DPU通信设备
2.3 接口层/库测试
接口层/库基于linux内核标准接口实现网络、串口、unix-socket、FIFO、共享内存SHM等标准通信接口。在兼容性测试中,需要验证不同DPU厂商的接口层/库是否能够正常工作。例如,网络接口测试可以通过ping命令或iperf工具测试跨HOST-DPU的虚拟网卡对的连通性和带宽;串口接口测试可以通过minicom等工具测试虚拟串口的通信功能。
三、DPU存储接口适配与测试
3.1 存储设备接口设计
dpu-core定义了统一的存储设备接口,包括BlockDeviceType、BlockDevice、ObjectMeta、DeviceSource等结构体。其中,BlockDeviceType包括Virtio-BLK、Virtio-SCSI、NVMe等类型;DeviceSource包括ISCSI、RBD、NVMf、Memory等来源。
3.2 存储接口适配指南
不同DPU厂商的存储设备可能支持不同的类型和来源,需要根据dpu-core的接口规范进行适配。例如,对于支持NVMe类型的DPU设备,需要实现NVMfDeviceSource结构体中的相关字段和接口函数;对于支持ISCSI类型的DPU设备,需要实现ISCSIDeviceSource结构体中的相关字段和接口函数。
3.3 存储接口测试方法
存储接口测试包括List、Get、Create、Update、Delete等动作。可以通过以下步骤进行测试:
- List接口测试:调用List接口返回当前所有的BlockDevice列表,验证是否能够正确列出DPU上的存储设备。
- Get接口测试:调用Get接口返回对应设备的详细信息,验证是否能够正确获取设备的属性和状态。
- Create接口测试:当DPU支持动态创建设备时,通过Create接口动态创建设备,验证是否能够成功创建设备。
- Update接口测试:更新设备信息,验证是否能够正确修改设备的属性。
- Delete接口测试:删除设备,验证是否能够成功删除设备。
四、libvirt直连聚合环境兼容性测试
4.1 libvirt卸载架构
libvirt直连聚合环境的卸载架构如下:
4.2 环境搭建步骤
- qtfs文件系统部署:可参考qtfs主页,需要关闭DPU和HOST侧的防火墙,或在防火墙中开放相关网络端口号。
- UDSPROXYD服务部署:在dpu-utilities工程内编译udsproxyd,在client侧单独拉起udsproxyd服务。
- REXEC服务部署:下载dpu-utilities代码后,编译安装rexec,在server端启动rexec_server服务。
- libvirt服务部署:在DPU侧创建chroot环境,安装libvirt,启动libvirtd服务。
4.3 兼容性测试内容
- 虚拟机define测试:将虚拟机启动镜像放置在HOST侧某目录,使用qtfs将这个目录挂载到DPU侧,执行virsh define xxx.xml命令,验证是否能够成功定义虚拟机。
- 虚拟机start测试:执行virsh start domain命令,验证是否能够成功启动虚拟机。
- 虚拟机生命周期管理测试:包括暂停、恢复、重启、关闭等操作,验证是否能够正常管理虚拟机的生命周期。
五、常见兼容性问题及解决方案
5.1 通信问题
问题:qtfs挂载失败。
解决方案:检查server端engine进程是否拉起、防火墙是否关闭导致qtfs建联失败。
5.2 存储问题
问题:Create接口创建设备失败。
解决方案:检查DPU是否支持动态创建设备,设备参数是否正确。
5.3 虚拟化问题
问题:虚拟机启动失败。
解决方案:检查libvirtd和virtlogd服务是否拉起、rexec服务是否拉起、跳板进程是否拉起、是否qemu-kvm拉起时报错。
六、总结
dpu-core为不同DPU产品提供了硬件无关的软件管理平台及工具,通过本文介绍的兼容性测试方法和适配指南,用户可以快速实现dpu-core与主流DPU厂商的集成,构建通用的DPU管理生态。在实际应用中,用户需要根据具体的DPU设备和应用场景,进行针对性的测试和适配,以确保系统的稳定性和可靠性。
如果需要获取更多关于dpu-core的信息,可以参考项目中的官方文档,如DPU通信及管理组件接口设计.md、DPU存储接口设计.md等。同时,也可以通过git clone仓库地址https://gitcode.com/openeuler/dpu-core获取最新的代码和文档。
【免费下载链接】dpu-coredpu-core is DPU customized software utility based on openEuler项目地址: https://gitcode.com/openeuler/dpu-core
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考