System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 基于SPDK的网络I/O处理方法以及装置制造方法及图纸_技高网

基于SPDK的网络I/O处理方法以及装置制造方法及图纸

技术编号:40966418 阅读:3 留言:0更新日期:2024-04-18 20:46
本申请提出一种基于SPDK的网络I/O处理方法以及装置,其中,方法包括:建立虚拟设备与对接外部存储设备的端口之间的映射关系,获取端对端的数据传输链路;其中,虚拟设备的驱动的数据结构支持多队列特性以及能够承载网络数据包;虚拟设备包括多个传输队列;响应于I/O请求,基于数据传输链路和多个传输队列,进行网络I/O收发处理。通过扩展虚拟装置的驱动,支持多队列特性以及能够承载网络数据包;并基于数据传输链路和多个传输队列,进行网络I/O收发处理,从而实现高效的用户态存储驱动对于网络I/O的收发处理。

【技术实现步骤摘要】

本申请涉及网络i/o处理,尤其涉及一种基于spdk的网络i/o处理方法、装置、电子设备及存储介质。


技术介绍

1、相关技术中,在dpu(data processing unit,数据处理器)实际设计场景中,开源spdk当加速芯片fpga采用tcp/ip协议搬运数据时,soc(system on chip,片上系统)pf接收到的均是网络数据包,其中存储作为有效负荷(payload),原生spdk virtio-blk前端驱动仅支持单条队列处理单次request,不存在收、发队列(rxq、txq)设计,无法对网络数据包进行收发并行处理,只能通过单队列处理存储数据结构。


技术实现思路

1、本申请旨在至少在一定程度上解决相关技术中的技术问题之一。

2、为此,本申请的第一个目的在于提出一种基于spdk的网络i/o处理方法,以实现对网络数据包的多队列处理。

3、本申请的第二个目的在于提出一种基于spdk的网络i/o处理装置。

4、本申请的第三个目的在于提出一种电子设备。

5、本申请的第四个目的在于提出一种计算机可读存储介质。

6、本申请的第五个目的在于提出一种计算机程序产品。

7、为达上述目的,本申请第一方面实施例提出了一种基于spdk的网络i/o处理方法,包括:

8、建立虚拟设备与对接外部存储设备的端口之间的映射关系,获取端对端的数据传输链路;其中,所述虚拟设备的驱动的数据结构支持多队列特性以及能够承载网络数据包;所述虚拟设备包括多个传输队列;

9、响应于i/o请求,基于所述数据传输链路和所述多个传输队列,进行网络i/o收发处理。

10、在一些实现方式中,所述建立虚拟设备与对接外部存储设备的端口之间的映射关系之前,还包括:

11、响应于第一远程过程调用请求,在spdk框架中创建与识别到的热插拔设绑定的虚拟设备,并加载所述虚拟设备的驱动;其中,所述虚拟设备的驱动包括上层virtio驱动和下层bdev驱动,所述上层virtio驱动的数据结构支持多队列特性以及能够承载网络数据包。

12、在一些实现方式中,所述响应于第一远程过程调用请求,在spdk框架中创建与识别到的热插拔设绑定的虚拟设备,并加载所述虚拟设备的驱动;包括:

13、响应于第一远程过程调用请求,匹配识别到的热插拔设备,并初始化所述热插拔设备;

14、通过virtio总线,创建与所述热插拔设备匹配的virtio设备,读取所述第virtio设备的描述结构对所述virtio设备进行初始化;其中,所述virtio设备的描述结构包括对接外部存储设备的端口和轮询器;

15、通过前端驱动与后端设备的特性协商,得到更新后的前端驱动特性;并基于所述更新后的前端驱动特性定义所述上层virtio驱动的特性;以及将所述上层virtio驱动加载至所述virtio设备,并启动所述virtio设备以及为所述virtio设备分配传输队列。

16、在一些实现方式中,所述启动所述virtio设备以及为所述virtio设备分配传输队列之后;还包括:

17、将所述virtio设备注册为i/o设备,并将所述i/o设备注册进bdev子系统构成bdev设备,以及配置所述i/o设备的数据通道。

18、在一些实现方式中,所述建立虚拟设备与对接外部存储设备的端口之间的映射关系;包括:

19、基于宿主机物理功能,添加对接外部存储设备的端口;

20、响应于第二远程过程调用请求,通过所述下层bdev驱动的数据结构建立虚拟设备与对接外部存储设备的端口之间的映射关系。

21、在一些实现方式中,所述响应于i/o请求,基于所述数据传输链路和所述多个传输队列,进行网络i/o收发处理;包括:

22、接收来自共享内存池的i/o请求;并基于所述i/o请求,从所述共享内存池获取多个网络数据包存入所述传输队列中的接收队列;其中,所述网络数据包包括元数据头;

23、解析所述接收队列中的网络数据包得到接收数据;

24、将所述接收数据传输至bdev层,以便bdev层将接收数据传输至所述外部存储设备。

25、在一些实现方式中,所述响应于i/o请求,基于所述数据传输链路和所述多个传输队列,进行网络i/o收发处理;还包括:

26、所述bdev层从所述对接外部存储设备的端口读取完成数据,并封装完成数据为网络数据包后存入所述传输队列中的发送队列;

27、读取所述发送队列的网络数据包,并经过数据通道存入所述共享内存池。

28、在一些实现方式中,所述bdev层从所述对接外部存储设备的端口读取完成数据,并封装完成数据为网络数据包后存入发送队列;包括:

29、在所述发送队列已满或者内存不足的情况下,将所述完成数据的数据内容、接收长度和写入长度存入发送队列缓冲区;

30、将所述封装的网络数据包的状态改为等待状态。

31、在一些实现方式中,所述响应于i/o请求,基于所述数据传输链路和所述多个传输队列,进行网络i/o收发处理之前;还包括:

32、注册轮询器,触发事件;并通过动态设置传输队列,基于所述轮询器,处理所述传输队列的轮询调度。

33、为达上述目的,本申请第二方面实施例提出了一种基于spdk的网络i/o处理装置,包括:

34、链路建立模块,用于建立虚拟设备与对接外部存储设备的端口之间的映射关系,获取端对端的数据传输链路;其中,所述虚拟设备的驱动的数据结构支持多队列特性以及能够承载网络数据包;所述虚拟设备包括多个传输队列;

35、数据处理模块,用于响应于i/o请求,基于所述数据传输链路和所述多个传输队列,进行网络i/o收发处理。

36、在一些实现方式中,所述装置还包括驱动设置模块,用于:

37、响应于第一远程过程调用请求,在spdk框架中创建与识别到的热插拔设绑定的虚拟设备,并加载所述虚拟设备的驱动;其中,所述虚拟设备的驱动包括上层virtio驱动和下层bdev驱动,所述上层virtio驱动的数据结构支持多队列特性以及能够承载网络数据包。

38、在一些实现方式中,所述驱动设置模块,具体用于:

39、响应于第一远程过程调用请求,匹配识别到的热插拔设备,并初始化所述热插拔设备;

40、通过virtio总线,创建与所述热插拔设备匹配的virtio设备,读取所述第virtio设备的描述结构对所述virtio设备进行初始化;其中,所述virtio设备的描述结构包括对接外部存储设备的端口和轮询器;

41、通过前端驱动与后端设备的特性协商,得到更新后的前端驱动特性;并基于所述更新后的前端驱动特性定义所述上层virtio驱动的特性;以及将所述上层virtio驱动加载至所述virtio设备,并启动所述virtio本文档来自技高网...

【技术保护点】

1.一种基于SPDK的网络I/O处理方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的方法,其特征在于,所述建立虚拟设备与对接外部存储设备的端口之间的映射关系之前,还包括:

3.根据权利要求2所述的方法,其特征在于,所述响应于第一远程过程调用请求,在SPDK框架中创建与识别到的热插拔设绑定的虚拟设备,并加载所述虚拟设备的驱动;包括:

4.根据权利要求3所述的方法,其特征在于,所述启动所述virtio设备以及为所述virtio设备分配传输队列之后;还包括:

5.根据权利要求4所述的方法,其特征在于,所述建立虚拟设备与对接外部存储设备的端口之间的映射关系;包括:

6.根据权利要求1所述的方法,其特征在于,所述响应于I/O请求,基于所述数据传输链路和所述多个传输队列,进行网络I/O收发处理;包括:

7.根据权利要求6所述的方法,其特征在于,所述响应于I/O请求,基于所述数据传输链路和所述多个传输队列,进行网络I/O收发处理;还包括:

8.根据权利要求7所述的方法,其特征在于,所述bdev层从所述对接外部存储设备的端口读取完成数据,并封装完成数据为网络数据包后存入发送队列;包括:

9.根据权利要求6所述的方法,其特征在于,所述响应于I/O请求,基于所述数据传输链路和所述多个传输队列,进行网络I/O收发处理之前;还包括:

10.一种基于SPDK的网络I/O处理装置,其特征在于,包括:

11.一种电子设备,其特征在于,包括:处理器,以及与所述处理器通信连接的存储器;

12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1-9中任一项所述的方法。

...

【技术特征摘要】

1.一种基于spdk的网络i/o处理方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的方法,其特征在于,所述建立虚拟设备与对接外部存储设备的端口之间的映射关系之前,还包括:

3.根据权利要求2所述的方法,其特征在于,所述响应于第一远程过程调用请求,在spdk框架中创建与识别到的热插拔设绑定的虚拟设备,并加载所述虚拟设备的驱动;包括:

4.根据权利要求3所述的方法,其特征在于,所述启动所述virtio设备以及为所述virtio设备分配传输队列之后;还包括:

5.根据权利要求4所述的方法,其特征在于,所述建立虚拟设备与对接外部存储设备的端口之间的映射关系;包括:

6.根据权利要求1所述的方法,其特征在于,所述响应于i/o请求,基于所述数据传输链路和所述多个传输队列,进行网络i/o收发处理;包括:

7.根据...

【专利技术属性】
技术研发人员:刘轩李晨晨秦文超
申请(专利权)人:中移苏州软件技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1