System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() virtio-net设备数据传输处理系统及方法技术方案_技高网

virtio-net设备数据传输处理系统及方法技术方案

技术编号:42090574 阅读:5 留言:0更新日期:2024-07-19 17:04
本发明专利技术提供一种virtio‑net设备数据传输处理系统及方法,通过vDPA硬件依次对每个批次的报文进行数据传输以及描述符处理更新操作仅对第一个描述符更新,再由前端virtio‑net设备驱动根据本批次描述符以及附加在第一个报文数据部分尾部除第一个报文外本批次其他报文的长度信息依次构建本批次各报文描述符;在收包过程中对报文进行分批次处理,且每个批次的报文处理的描述符更新阶段仅需要两次DMA,减少了描述符的DMA,并且提高收包效率。

【技术实现步骤摘要】

本专利技术涉及virtio,特别是涉及一种virtio-net设备数据传输处理系统及方法


技术介绍

1、virtio技术是一种半虚拟化的设备抽象接口规范,virtio-net是针对网络设备的半虚拟化方案,其本身实现仍然遵循virtio规范。

2、虚拟队列(virtqueue)是被用来在virtio前端驱动和virtio后端设备之间双向数据传输的数据结构。目前的virtio规范中定义了两种不同类型的virtqueue,在virtio规范1.0版本中定义了split virtqueue,在virtio规范1.1版本中定义了packed virtqueue。虚拟队列(virtqueue)由前端virtio-net驱动创建并申请内存,通过描述符环表(descriptorring)与后端设备交互报文信息。现有技术通常在支持vdpa数据面加速的智能网卡设备上,由控制面完成协商配置后,硬件即可以和前端virtio-net设备通过协商完成的packed-virtqueue来进行报文收发。

3、一个数据报文接收流程大致分为一下几个步骤:

4、步骤一:硬件从以太网链路接收数据报文packet1,按顺序取第一个描述符(packed virtqueue中id为0的描述符),根据描述符中的主机侧dma地址将报文数据通过pcie dma到主机内存;

5、步骤二:硬件更新描述符0中的len字段,即该报文实际长度,id字段填充当前描述符在描述符环中的下标值,更新标记字段添加标记,指示该描述符可以被接收处理;p>

6、步骤三:硬件将更新后的第一个描述符通过pcie dma回写到主机侧内存;

7、步骤四:主机侧前端驱动(以dpdk testpmd轮询为例),检测到描述符对应标记有效,则取该描述符中内存地址及长度构建报文送协议栈或者应用程序继续处理;

8、步骤五:依次重复上述步骤,即可通过packed virtqueue实现报文接收。

9、从上述过程看,每个描述符均需要在报文数据dma完成后,更新对应的len字段及标记字段,并且将描述符通过pcie dma更新到主机侧。因此,随着接收报文数量的增加,描述符的dma次数增到,进而收包效率降低。


技术实现思路

1、鉴于以上所述现有技术的缺点,本专利技术的目的在于提供一种virtio-net设备数据传输处理系统及方法,用于解决以上现有技术问题。

2、为实现上述目的及其他相关目的,本专利技术提供一种virtio-net设备数据传输处理系统,所述系统包括:设置于网卡设备的vdpa硬件以及设置于主机侧的前端virtio-net设备;其中,所述vdpa硬件,用于依次接收多个报文,并确定报文处理的批次;依次对每个批次的报文进行数据传输以及描述符处理更新操作;其中,所述数据传输以及描述符处理更新操作包括:在描述符环表中依次取与本批次使用的报文个数相同个数的描述符中的主机地址,以将本批次使用的各报文dma到主机内存,并记录各报文的实际长度信息;将第一个报文的实际长度信息更新至第一个描述符的长度字段,并对本批次使用的剩余各报文的长度信息进行打包,以将各报文打包后的长度信息dma至第一个描述符中主机地址加上第一个数据包长度偏移后的主机内存;对第一个描述符进行扩展新增更新,并将扩展新增更新后的第一个描述符dma更新到主机侧;所述前端virtio-net设备,用于当检测到描述符对应有扩展新增更新时,基于该描述符的主机地址以及长度信息依次构建对应批次的各报文,以进行后续处理,直至所有批次的报文均被接收。

3、于本专利技术的一实施例中,对本批次使用的剩余各报文的长度信息进行打包,以将各报文打包后的长度信息dma至主机内存包括:将剩余各报文的实际长度信息按照设定长度进行打包,并基于第一个描述符的主机地址及长度计算偏移后,将各报文打包后的长度信息dma至主机内存中第一个报文后的内存。

4、于本专利技术的一实施例中,对第一个描述符进行扩展新增更新包括:将第一个描述符的id字段更新为本批次使用的最后一个描述符的下标id;在第一个描述符的标记字段添加描述符接收处理标记以及扩展新增标记。

5、于本专利技术的一实施例中,当检测到接收到的描述符对应扩展新增更新时,基于该描述符的主机地址以及长度信息依次构建对应批次的各报文包括:当检测到接收到的描述符的标记字段中的描述符接收处理标记以及扩展新增标记同时有效时,基于描述符的id字段确定本批次需要处理的描述符个数;基于第一个描述符的主机地址与长度字段及本批次需要处理的其余描述符构建本批次的各报文。

6、于本专利技术的一实施例中,基于第一个描述符的主机地址与长度字段及本批次需要处理的其余描述符构建本批次的各报文包括:取第一个描述符的主机地址以及长度字段构建第一个报文;根据第一个报文的主机地址以及长度信息偏移后,获得剩余各报文的长度信息;基于剩余各报文对应的描述符中的主机地址以及获得剩余各报文的长度信息构建剩余各报文。

7、于本专利技术的一实施例中,在第一个描述符的flag字段设置virtq_desc_f_used以及增加virtq_desc_f_len_package作为描述符接收处理标记以及扩展新增标记。

8、于本专利技术的一实施例中,所述vdpa硬件采用datapath依次对每个批次的报文进行数据传输以及描述符处理更新操作。

9、为实现上述目的及其他相关目的,本专利技术提供一种virtio-net设备数据传输处理方法,所述方法包括:依次接收多个报文,并确定报文使用的批次;依次对每个批次的报文进行数据传输以及描述符处理更新操作;其中,所述数据传输以及描述符处理更新操作包括:在描述符环表中依次取与本批次使用的报文个数相同个数的描述符中的主机地址,以将本批次使用的各报文dma到主机内存,并记录各报文的实际长度信息;将第一个报文的实际长度信息更新至第一个描述符的长度字段,并对本批次使用的剩余各报文的长度信息进行打包,以将各报文打包后的长度信息dma至主机内存;对第一个描述符进行扩展新增更新,并将扩展新增更新后的第一个描述符dma更新到主机侧,以供当所述前端virtio-net设备检测到描述符对应有扩展新增更新时,基于该描述符的主机地址以及长度信息依次构建本批次需要处理的各报文,以进行后续处理。

10、于本专利技术的一实施例中,对本批次使用的剩余各报文的长度信息进行打包,以将各报文打包后的长度信息dma至主机内存包括:将剩余各报文的实际长度信息按照设定长度进行打包,并基于第一个描述符的主机地址及长度计算偏移后,将各报文打包后的长度信息dma至主机内存中第一个报文后的内存。

11、于本专利技术的一实施例中,对第一个描述符进行扩展新增更新包括:将第一个描述符的id字段更新为本批次使用的最后一个描述符的下标id;在第一个描述符的标记字段添加描述符接收处理标记以及扩展新增标记。

12、如上所述,本专利技术是一种virtio-net设备数据传输处理本文档来自技高网...

【技术保护点】

1.一种virtio-net设备数据传输处理系统,其特征在于,所述系统包括:

2.根据权利要求1中所述的virtio-net设备数据传输处理系统,其特征在于,对本批次使用的剩余各报文的长度信息进行打包,以将各报文打包后的长度信息DMA至主机内存包括:将剩余各报文的实际长度信息按照设定长度进行打包,并基于第一个描述符的主机地址及第一个报文实际长度计算偏移后,将各报文打包后的长度信息DMA至第一个报文实际数据之后的主机内存。

3.根据权利要求2中所述的virtio-net设备数据传输处理系统,其特征在于,对第一个描述符进行扩展新增更新包括:

4.根据权利要求3中所述的virtio-net设备数据传输处理系统,其特征在于,当检测到接收到的描述符对应扩展新增更新时,基于该描述符的主机地址以及长度信息依次构建对应批次的各报文包括:

5.根据权利要求4中所述的virtio-net设备数据传输处理系统,其特征在于,基于第一个描述符的主机地址与长度字段及本批次需要处理的其余描述符构建本批次的各报文包括:

6.根据权利要求3中所述的virtio-net设备数据传输处理系统,其特征在于,在第一个描述符的flag字段设置VIRTQ_DESC_F_USED以及增加VIRTQ_DESC_F_LEN_PACKAGE作为描述符接收处理标记以及扩展新增标记。

7.根据权利要求1中所述的virtio-net设备数据传输处理系统,其特征在于,所述vDPA硬件采用datapath依次对每个批次的报文进行数据传输以及描述符处理更新操作。

8.一种virtio-net设备数据传输处理方法,其特征在于,应用于设置于网卡设备的vDPA硬件,所述方法包括:

9.根据权利要求8中所述的virtio-net设备数据传输处理方法,其特征在于,对本批次使用的剩余各报文的长度信息进行打包,以将各报文打包后的长度信息DMA至主机内存包括:

10.根据权利要求9中所述的virtio-net设备数据传输处理方法,其特征在于,对第一个描述符进行扩展新增更新包括:

...

【技术特征摘要】

1.一种virtio-net设备数据传输处理系统,其特征在于,所述系统包括:

2.根据权利要求1中所述的virtio-net设备数据传输处理系统,其特征在于,对本批次使用的剩余各报文的长度信息进行打包,以将各报文打包后的长度信息dma至主机内存包括:将剩余各报文的实际长度信息按照设定长度进行打包,并基于第一个描述符的主机地址及第一个报文实际长度计算偏移后,将各报文打包后的长度信息dma至第一个报文实际数据之后的主机内存。

3.根据权利要求2中所述的virtio-net设备数据传输处理系统,其特征在于,对第一个描述符进行扩展新增更新包括:

4.根据权利要求3中所述的virtio-net设备数据传输处理系统,其特征在于,当检测到接收到的描述符对应扩展新增更新时,基于该描述符的主机地址以及长度信息依次构建对应批次的各报文包括:

5.根据权利要求4中所述的virtio-net设备数据传输处理系统,其特征在于,基于第一个描述符的主机地址与长度字段及本批次需要处理的其余...

【专利技术属性】
技术研发人员:徐振兵卢笙董树晶余鑫颖
申请(专利权)人:芯云晟杭州电子科技有限公司
类型:发明
国别省市:

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

1