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

修改其他配置文件:

  1. 修改kiwi/eulerkiwi/product.conf增加名称为dpuos的相关配置
  2. 修改kiwi/eulerkiwi/minios.conf增加名称为dpuos的相关配置
  3. 修改repos/RepositoryRule.conf增加名称为dpuos的相关配置

进入到conf/aarch64子目录下,修改下面3个文件的密码:

  1. custom/cfg_dpuos/usr_file/etc/default/grub
  2. custom/cfg_dpuos/rpm.conf
  3. kiwi/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等动作。可以通过以下步骤进行测试:

  1. List接口测试:调用List接口返回当前所有的BlockDevice列表,验证是否能够正确列出DPU上的存储设备。
  2. Get接口测试:调用Get接口返回对应设备的详细信息,验证是否能够正确获取设备的属性和状态。
  3. Create接口测试:当DPU支持动态创建设备时,通过Create接口动态创建设备,验证是否能够成功创建设备。
  4. Update接口测试:更新设备信息,验证是否能够正确修改设备的属性。
  5. Delete接口测试:删除设备,验证是否能够成功删除设备。

四、libvirt直连聚合环境兼容性测试

4.1 libvirt卸载架构

libvirt直连聚合环境的卸载架构如下:

4.2 环境搭建步骤

  1. qtfs文件系统部署:可参考qtfs主页,需要关闭DPU和HOST侧的防火墙,或在防火墙中开放相关网络端口号。
  2. UDSPROXYD服务部署:在dpu-utilities工程内编译udsproxyd,在client侧单独拉起udsproxyd服务。
  3. REXEC服务部署:下载dpu-utilities代码后,编译安装rexec,在server端启动rexec_server服务。
  4. libvirt服务部署:在DPU侧创建chroot环境,安装libvirt,启动libvirtd服务。

4.3 兼容性测试内容

  1. 虚拟机define测试:将虚拟机启动镜像放置在HOST侧某目录,使用qtfs将这个目录挂载到DPU侧,执行virsh define xxx.xml命令,验证是否能够成功定义虚拟机。
  2. 虚拟机start测试:执行virsh start domain命令,验证是否能够成功启动虚拟机。
  3. 虚拟机生命周期管理测试:包括暂停、恢复、重启、关闭等操作,验证是否能够正常管理虚拟机的生命周期。

五、常见兼容性问题及解决方案

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),仅供参考