dpu-core与主流DPU厂商集成:兼容性测试与适配指南

发布时间:2026/7/14 16:31:34
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),仅供参考