CN118245401A - Sr-iov设备间通信方法、装置、设备及存储介质 - Google Patents
Sr-iov设备间通信方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN118245401A CN118245401A CN202410394147.7A CN202410394147A CN118245401A CN 118245401 A CN118245401 A CN 118245401A CN 202410394147 A CN202410394147 A CN 202410394147A CN 118245401 A CN118245401 A CN 118245401A
- Authority
- CN
- China
- Prior art keywords
- queue
- device interface
- queues
- interface
- message
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000004891 communication Methods 0.000 title claims abstract description 76
- 238000000034 method Methods 0.000 title claims abstract description 50
- 230000006870 function Effects 0.000 claims description 46
- 230000005540 biological transmission Effects 0.000 claims description 30
- 238000004590 computer program Methods 0.000 claims description 10
- 238000012508 change request Methods 0.000 claims description 9
- 230000008859 change Effects 0.000 claims description 8
- 230000004044 response Effects 0.000 claims description 7
- 230000000977 initiatory effect Effects 0.000 claims description 6
- 238000012986 modification Methods 0.000 claims description 4
- 230000004048 modification Effects 0.000 claims description 4
- 238000005516 engineering process Methods 0.000 abstract description 5
- 230000000694 effects Effects 0.000 abstract description 3
- 238000007726 management method Methods 0.000 description 38
- 238000010586 diagram Methods 0.000 description 6
- 238000005192 partition Methods 0.000 description 5
- 238000012217 deletion Methods 0.000 description 4
- 230000037430 deletion Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 2
- 238000012913 prioritisation Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000004335 litholrubine BK Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Landscapes
- Computer And Data Communications (AREA)
Abstract
本申请在通信技术领域公开了一种SR‑IOV设备间通信方法、装置、设备及存储介质,该方法包括:发送方设备接口通过控制队列向接收方设备接口发起握手请求;握手请求被响应后,发送方设备接口通过控制队列与接收方设备接口进行通信协商,得到协商结果;协商结果包括通信所需的队列数;与接收方设备接口共同根据协商结果注册符合队列数的目标队列;通过控制队列与接收方设备接口互通目标队列的队列号后,利用目标队列向接收方设备接口传输消息。技术效果:在发送方设备接口与接收方设备接口之间需要进行高并发通信时,仅需协商注册出多个目标队列,即可实现高并发通信,可扩展单根I/O虚拟化技术的应用场景。
Description
技术领域
本申请涉及通信技术领域,特别是涉及一种SR-IOV设备间通信方法、装置、设备及存储介质。
背景技术
单根I/O虚拟化(SR-IOV,Single Root I/O Virtualization)接口是PCI Express(PCIe,Peripheral Component Interconnect Express)规范的扩展。SR-IOV允许设备(例如网络适配器)在各种PCIe硬件功能之间分离对其资源的访问。这些function(func,设备接口,具有轻量化的PCIe功能)包括:物理设备接口(PF,Physical Function)和虚拟设备接口(VF,Virtual Function)。
为每个PF和VF分配唯一的PCI Express请求者ID(RID),该ID允许I/O内存管理单元(IOMMU,Input/Output Memory Management Unit)区分不同的流量流,并在PF和VF之间应用内存和中断转换。这允许将流量流直接传送到相应的Hyper-V父分区或子分区。因此,非特权数据流量从PF流向VF,而不会影响其他VF。SR-IOV允许网络流量绕过Hyper-V虚拟化堆栈的软件交换机层。由于VF分配给子分区,因此网络流量直接在VF和子分区之间流动。因此,软件仿真层中的I/O开销会减少,并实现与非虚拟化环境中几乎相同的网络性能。
但在特定场景下,不同function之间可能需要互相访问,例如访问逻辑寄存器、申请中断、事件通知等。
在intel的E180以太网网络适配器中,对于软件驱动程序之间的通信,两个不同的驱动程序运行在相同的function上(PF/VF),或者一个PF驱动程序与其对应的VF驱动程序通信。在这种情况下,可通过E810的邮箱机制(MBX,mailbox)在各自的主机内存缓冲区之间传输数据。MBX为每个驱动准备一个发送队列和接收队列,分别用于发送和接收消息,以实现不同function驱动程序之间的通信,但这种机制也只对每个PF提供了1组发送/接收队列,当一个PF的多个驱动都有消息需要发送时,无法并发可能导致驱动间互相阻塞,限制了应用场景。
综上所述,如何有效地解决function间的并发通信等问题,是目前本领域技术人员急需解决的技术问题。
发明内容
本申请的目的是提供一种SR-IOV设备间通信方法、装置、设备及可读存储介质,能够解决SR-IOV设备中的多个function间的并发通信问题。
为解决上述技术问题,本申请提供如下技术方案:
一种SR-IOV设备间通信方法,包括:
发送方设备接口通过控制队列向接收方设备接口发起握手请求;所述SR-IOV设备包括所述发送方设备接口和所述接收方设备接口,且所述发送方设备接口和所述接收方设备接口均具有控制队列;
所述握手请求被响应后,所述发送方设备接口通过控制队列与所述接收方设备接口进行通信协商,得到协商结果;其中,所述协商结果包括通信所需的队列数;
与所述接收方设备接口共同根据所述协商结果注册符合所述队列数的目标队列;
通过控制队列与接收方设备接口互通所述目标队列的队列号后,利用所述目标队列向所述接收方设备接口传输消息。
优选地,与所述接收方设备接口共同根据所述协商结果注册符合所述队列数的目标队列,包括:
与所述接收方设备接口共同根据所述协商结果在消息队列注册表中注册所述目标队列,并在队列信息表中配置队列信息。
优选地,所述消息队列注册表记录已注册队列的设备接口ID、队列ID、索引号和注册号有效位;
相应地,在队列信息表中配置队列信息,包括:
在所述队列信息表中写入所述目标队列的索引号、发送队列地址、发送队列、发送队列使能标识、接收队列地址、接收队列和接收队列使能标识。
优选地,利用所述目标队列向所述接收方设备接口传输消息之后,还包括:
修改所述消息队列注册表中所述目标队列对应的注册号有效位,以注销所述目标队列。
优选地,与所述接收方设备接口共同根据所述协商结果在消息队列注册表中注册所述目标队列,包括:
与所述接收方设备接口共同根据所述协商结果并利用各自的控制队列向管理function发起注册更改请求;
接收到更改成功应答信息的情况下,确定完成所述目标队列注册;其中,所述更改成功应答信息为所述管理function对所述注册更改请求进行验证通过后,且在所述消息队列注册表未满的情况下,完成了目标队列注册后反馈的;
与所述接收方设备接口一起在所述队列信息表中配置所述目标队列的队列信息。
优选地,利用所述目标队列向所述接收方设备接口传输消息,包括:
利用所述目标队列,并设备间通过直接内存访问互相传输消息。
优选地,利用所述目标队列向所述接收方设备接口传输消息,包括:
将所述目标队列中的发送队列加入发送队列组中;
按照优先级排序调度所述发送队列组中的发送队列进行消息发送,以便位于所述接收方设备接口的接收队列接收消息。
一种SR-IOV设备间通信装置,包括:
握手模块,用于发送方设备接口通过控制队列向接收方设备接口发起握手请求;所述SR-IOV设备包括所述发送方设备接口和所述接收方设备接口,且所述发送方设备接口和所述接收方设备接口均具有控制队列;
通信协商模块,用于所述握手请求被响应后,所述发送方设备接口通过控制队列与所述接收方设备接口进行通信协商,得到协商结果;其中,所述协商结果包括通信所需的队列数;
注册表管理模块,用于与所述接收方设备接口共同根据所述协商结果注册符合所述队列数的目标队列;
消息传输模块,用于通过控制队列与接收方设备接口互通所述目标队列的队列号后,利用所述目标队列向所述接收方设备接口传输消息。
一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现上述SR-IOV设备间通信方法的步骤。
一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述SR-IOV设备间通信方法的步骤。
应用本申请实施例所提供的方法,发送方设备接口通过控制队列向接收方设备接口发起握手请求;SR-IOV设备包括发送方设备接口和接收方设备接口,且发送方设备接口和接收方设备接口均具有控制队列;握手请求被响应后,发送方设备接口通过控制队列与接收方设备接口进行通信协商,得到协商结果;其中,协商结果包括通信所需的队列数;与接收方设备接口共同根据协商结果注册符合队列数的目标队列;通过控制队列与接收方设备接口互通目标队列的队列号后,利用目标队列向接收方设备接口传输消息。
在本申请中,当SR-IOV设备的发送方设备接口需要向接收方设备接口发送消息时,首先通过控制队列向接收方设备接口发起握手请求,在握手请求被响应后,发送方设备接口可以继续通过控制队列与接收方设备接口进行通信协商,确定通信所需的队列数。然后,接收方设备接口与发送方设备接口共同根据协商结果注册出符合该队列数的目标队列。通过控制队列与接收方设备接口互通目标队列的队列号之后,便可利用目标队列向接收方设备接口传输信息。也就是说,对于发送方设备接口与接收方设备接口而言,当有通信需求的情况下,可以进行协商,并注册出满足通信需求的队列数,并完成队列注册,从而基于注册好的若干个目标队列实现消息传输。如此,在发送方设备接口与接收方设备接口之间需要进行高并发通信时,仅需协商注册出多个目标队列,即可实现高并发通信,可扩展单根I/O虚拟化技术的应用场景。
相应地,本申请实施例还提供了与上述SR-IOV设备间通信方法相对应的SR-IOV设备间通信装置、设备和可读存储介质,具有上述技术效果,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例中一种SR-IOV设备间通信方法的实施流程图;
图2为本申请实施例中一种消息通道典型应用场景示意图;
图3为本申请实施例中一种消息通道框架示意图;
图4为本申请实施例中一种消息队列管理流程示意图;
图5为本申请实施例中一种SR-IOV设备间通信装置的结构示意图;
图6为本申请实施例中一种电子设备的结构示意图;
图7为本申请实施例中一种电子设备的具体结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参考图1,图1为本申请实施例中一种SR-IOV设备间通信方法的流程图,在SR-IOV设备如图2所示,该方法包括以下步骤:
S101、发送方设备接口通过控制队列向接收方设备接口发起握手请求。
其中,SR-IOV设备包括发送方设备接口和接收方设备接口,且发送方设备接口和接收方设备接口均具有控制队列。
具体的,SR-IOV设备可具体参考图2所示,在图2中不同的function即对应发送方设备接口和接收方设备接口。
在本申请实施例中,发送方设备接口和接收方设备接口均为function,可以具体为PF或VF,发送方设备接口和接收方设备接口的类型可以相同也可以不同。
其中,PF这种function是设备的主要功能,并播发设备的SR-IOV功能。PF与虚拟化环境中的Hyper-V父分区相关联。
每个VF都与设备的PF相关联。VF与设备上的PF和其他VF共享设备的一个或多个物理资源,例如内存和网络端口。每个VF都与虚拟化环境中的Hyper-V子分区相关联。
每个function的软件驱动都准备了两种队列,即发送队列组(TX Queues)和接收队列组(RX Queues),分别完成消息的发送和接收。其中每个发送队列都有对应的接收队列,这里称为一组队列。在初始状态下,每个function都只有一组发送/接收控制队列,这组队列主要负责握手、协商、注册等。
不同的function之间通过PCIe接口与硬件消息通道连接。
当发送方设备想要向接收方设备发送消息,需要先向接收方设备发起握手请求。具体的,发送方设备接口可以通过自身的控制队列向接收方设备接口的控制队列发起握手请求。
从而基于控制队列实现发送方设备和接收方设备的握手、协商和注册。
S102、握手请求被响应后,发送方设备接口通过控制队列与接收方设备接口进行通信协商,得到协商结果。
其中,协商结果包括通信所需的队列数。
握手请求被接收方设备接口响应后,发送方设备接口可以通过控制队列与接收方设备接口完成协商,从而确定消息传输需要的队列数量等信息。即协商结果中至少包括图像所需的队列数。该队列数可以根据需要传输的数据量或传输时间限制的要求,如量大且要快速传输的情况下,队列数更多,量小且对传输速度要求不高的情况下,队列数更少,例如甚至不需要额外注册队列,只通过控制队列通信,在本实施例中重点讨论需要注册队列的情况,对于无需注册的情况,可参照相关技术方案,在此不再一一赘述。对于队列数的具体如何确定,可以根据实际业务需求进行设置或规范,在此不再一一赘述。
S103、与接收方设备接口共同根据协商结果注册符合队列数的目标队列。
由于发送方设备接口与接收方设备接口要实现通信,在发送方设备接口中至少存在发送队列,在接收方设备接口中至少存在接收队列。因此,发送方设备接口与接收方设备接口需要共同根据协商结果注册好符合队列数的目标队列。
举例说明:当发送方设备接口与接收方设备接口之间需要的队列数为2,则发送方设备接口需要注册2个发送队列,对于接受方设备接口需要注册2个接收队列。
为了避免多个发送队列与接收队列之间的数据传输混乱,在进行注册时,还可以一个发送队列和一个接收队列作为一组队列的形式进行注册。例如,可基于队列信息和队列指针等信息来进行队列管理。
在本申请中的一种实施例中,与接收方设备接口共同根据协商结果注册符合队列数的目标队列,包括:
与接收方设备接口共同根据协商结果在消息队列注册表中注册目标队列,并在队列信息表中配置队列信息。
为了便于管理,可以设置一个消息队列注册表,在该消息队列表中记录队列的队列注册相关信息,相应地,还可设置一个队列信息表用于配置队列信息。
其中,消息队列注册表记录已注册队列的设备接口ID、队列ID、索引号和注册号有效位;
在队列信息表中配置队列信息,包括:
在队列信息表中写入目标队列的索引号、发送队列地址、发送队列、发送队列使能标识、接收队列地址、接收队列和接收队列使能标识。
也就是说,基于队列信息表项、队列指针等信息,每组发送/接收队列都需要在消息通道的队列信息表项中配置其队列信息。
在队列信息表可配置目标队列的索引号、发送队列地址、发送队列、发送队列使能标识、接收队列地址、接收队列和接收队列使能标识。一种具体的队列信息表如表1所示。
表1,队列信息表
在表1中,表项i dx即索引号,发送队列s i ze即发送队列大小,接收队列s i ze即接收队列大小,发送队列使能为1即表明对应的发送队列启用,发送队列使能为0即表明对应的发送队列不启用,接收队列使能为1即表明对应的发送队列启用,接收队列使能为0即表明对应的接收队列不启用。
在消息队列注册表中可以记录已注册队列的设备接口ID、队列ID、索引号和注册号有效位。
一种具体的消息队列注册表如表2所示。
表2,消息队列注册表
function_id | qid | 注册号(表项idx) | 注册号有效位 |
0 | 0 | 0 | 1 |
1 | 0 | 1 | 1 |
2 | 0 | 2 | 1 |
… | … | … | |
n | m | z | 0 |
在表2中,function_id为设备接口ID,qid为队列ID,注册号(表项idx)即索引号,注册有效位为1,表明注册有效,注册有效位为0,表明注册无效,即已注销。即,每组队列都有唯一的注册号,对应着表1信息表项的index。每个注册号还有一个有效位,当队列被成功注册,有效位被写1,当队列被注销,有效位被写0。
在本申请中的一种实施例中,与接收方设备接口共同根据协商结果在消息队列注册表中注册目标队列,包括:
与接收方设备接口共同根据协商结果并利用各自的控制队列向管理function发起注册更改请求;
接收到更改成功应答信息的情况下,确定完成目标队列注册;其中,更改成功应答信息为管理function对注册更改请求进行验证通过后,且在消息队列注册表未满的情况下,完成了目标队列注册后反馈的;
与接收方设备接口一起在队列信息表中配置目标队列的队列信息。
为便于描述,下面将上述步骤结合起来进行说明。
队列注册表可由管理function(即管理PF,或可称之为管理队列)负责维护,初始化后,如有function需要增删队列,则需要通过控制队列向管理function发起请求,管理function执行完请求后再将请求结果反馈给请求的function。
管理PF可对更改注册表进行限制。具体的,管理PF收到注册表的更改请求后,管理PF首先根据当前消息通道占用的计算机资源、请求源是否为合法源等信息判断是否同意更改。具体实施的要求细节,可以根据实际场景进行设置和调整,在此不再一一赘述。
其中,消息队列注册表对应消息通道对每个function可用的队列组数量、全局队列组数量都有限制,在两者都未达到上限则视为注册表未满。
请参考图4,在初始化时,消息通道可默认向所有的function注册一组TX/RX控制队列。
function可通过控制队列向管理function发起注册更改请求,如某个function发起队列注册请求,或队列注销请求。
如果管理function同意更改,则进一步判断是否要求新增队列。
如果是新增队列,管理function查询消息队列注册表,确定消息队列注册表是否未满,在未满的情况下,将队列信息写入消息队列注册表,并将对应的注册号有效位置为1,完成注册表新增,更改成功,回复function请求结果;在已满的情况下,更改失败,回复请求结果。
如果不是新增队列,则查询消息队列注册表,确定注册表是否存在删除对象且提出删除请求的function具有删除权限,若是,则将对应的注册号有效位置0,完成消息队列注册表中某队列的删除,即注销,确定成功更改,恢复请求结果;若否,则更改失败,回复请求结果。
S104、通过控制队列与接收方设备接口互通目标队列的队列号后,利用目标队列向接收方设备接口传输消息。
在完成注册之后,发送发设备接口继续通过控制队列与接收方设备接口互通各自注册的目标队列的队列号。
例如,当确定出的队列数为2,发送方设备接口注册了2个队列号分别为0和1的发送队列,接收方设备接口注册了2个队列好分别为3和4的接收队列,则发送方设备接口需要知道接收方设备接口注册的接收队列的队列号3和4,相应地,接收方设备接口也需要知道发送方接口注册的发送队列的队列好0和1。
当然,在实际应用中,发送方和接收方对应的发送队列和接收队列的数量不一定一一对应,例如发送方有两个队列发消息,接收方只用一个队列来收消息。也就是说,具体使用哪些队列,由协商的结果决定,不一定是成组出现。
如此,发送方设备接口与接收方设备接口中的相应发送队列和接收队列才能实现消息的发送与消息的接收。即,互通了队列号之后,便可利用该目标队列向接收方设备接口传输信息。
也就是说,通过控制队列互相通知队列号,收到响应后即可开始传输消息。消息传输完毕后,接收/发送方的驱动独立决定是否注销各自的队列。
在本申请中的一种具体实施方式中,利用目标队列向接收方设备接口传输消息之后,还包括:
修改消息队列注册表中目标队列对应的注册号有效位,以注销目标队列。
具体的,可以将目标队列对应的注册号有效位置为无效标识,如置为0。
在本申请中的一种实施例中,利用目标队列向接收方设备接口传输消息,包括:
利用目标队列,设备间通过直接内存访问互相传输消息。
具体的,利用目标队列向接收方设备接口传输消息,包括:
将目标队列中的发送队列加入发送队列组中;
按照优先级排序调度发送队列组中的发送队列进行消息发送,以便位于接收方设备接口的接收队列接收消息。
通过DMA(直接内存访问Direct Memory Access)完成发送队列中的消息获取,相应地,通过DMA完成获取到消息的转发,从而实现消息发送。
在实际应用为了便于管理可以设置队列管理单元和消息接收单元,通过设定的优先级,从队列管理单元中调度出需要发送消息的发送队列信息,送到后级消息接收单元。
为便于理解,下面结合具体的应用场景为例,对本申请实施例所提供的方法进行详细说明。
应用本申请实施例所提供的方法,发送方设备接口通过控制队列向接收方设备接口发起握手请求;SR-IOV设备包括发送方设备接口和接收方设备接口,且发送方设备接口和接收方设备接口均具有控制队列;握手请求被响应后,发送方设备接口通过控制队列与接收方设备接口进行通信协商,得到协商结果;其中,协商结果包括通信所需的队列数;与接收方设备接口共同根据协商结果注册符合队列数的目标队列;通过控制队列与接收方设备接口互通目标队列的队列号后,利用目标队列向接收方设备接口传输消息。
在本申请中,当SR-IOV设备的发送方设备接口需要向接收方设备接口发送消息时,首先通过控制队列向接收方设备接口发起握手请求,在握手请求被响应后,发送方设备接口可以继续通过控制队列与接收方设备接口进行通信协商,确定通信所需的队列数。然后,接收方设备接口与发送方设备接口共同根据协商结果注册出符合该队列数的目标队列。通过控制队列与接收方设备接口互通目标队列的队列号之后,便可利用目标队列向接收方设备接口传输信息。也就是说,对于发送方设备接口与接收方设备接口而言,当有通信需求的情况下,可以进行协商,并注册出满足通信需求的队列数,并完成队列注册,从而基于注册好的若干个目标队列实现消息传输。如此,在发送方设备接口与接收方设备接口之间需要进行高并发通信时,仅需协商注册出多个目标队列,即可实现高并发通信,可扩展单根I/O虚拟化技术的应用场景。
请参考图2,图2为本申请实施例所提供的方法的具体用于场景。其中,硬件消息通道的具体结构可参考图3。即硬件信息通道包括:消息队列注册表、队列管理单元、队列调度单元、消息接收单元、消息发送单元和DMA单元。
消息接收/发送单元:消息接收单元通过DMA(直接内存访问Direct MemoryAccess)完成发送队列中的消息获取,消息发送单元通过DMA完成获取到消息的转发。
队列管理单元:包括队列信息表项、队列指针等信息,每组发送/接收队列都需要在消息通道的队列信息表项中配置其队列信息。
消息队列注册表:每组队列信息在信息表项的index都在消息队列注册表中维护,注册表的格式如表2,每组队列都有唯一的注册号,对应着表1信息表项的index。每个注册号还有一个有效位,当队列被成功注册,有效位被写1,当队列被注销,有效位被写0。
队列调度单元:通过设定的优先级,从队列管理单元中调度出需要发送消息的发送队列信息,送到后级消息接收单元。
队列注册表由管理function负责维护,初始化后,如有function需要增删队列,则需要通过控制队列向管理function发起请求,管理function执行完请求后再将请求结果反馈给请求的function。
由此可见,本申请实施例所提供的方法,包括如下技术效果:
1、支持任意虚拟设备或物理设备之间的消息互通,典型应用是SRIOV各function之间的消息互通;
2、通过队列的注册表管理,可以实现动态增删队列;
3、每个function都支持多队列,且所有队列之间互不干扰;
4、根据不同的应用场景,消息可以独占队列或共享队列,使用灵活且可靠性高。
相应于上面的方法实施例,本申请实施例还提供了一种SR-IOV设备间通信装置,下文描述的SR-IOV设备间通信装置与上文描述的SR-IOV设备间通信方法可相互对应参照。
参见图5所示,该装置包括以下模块:
握手模块101,用于发送方设备接口通过控制队列向接收方设备接口发起握手请求;SR-IOV设备包括发送方设备接口和接收方设备接口,且发送方设备接口和接收方设备接口均具有控制队列;
通信协商模块102,用于握手请求被响应后,发送方设备接口通过控制队列与接收方设备接口进行通信协商,得到协商结果;其中,协商结果包括通信所需的队列数;
注册表管理模块103,用于与接收方设备接口共同根据协商结果注册符合队列数的目标队列;
消息传输模块104,用于通过控制队列与接收方设备接口互通目标队列的队列号后,利用目标队列向接收方设备接口传输消息。
在实际应用中,注册表管理模块,用于处理注册更改请求,实现队列注册、队列注销、权限管理等功能。
应用本申请实施例所提供的装置,发送方设备接口通过控制队列向接收方设备接口发起握手请求;SR-IOV设备包括发送方设备接口和接收方设备接口,且发送方设备接口和接收方设备接口均具有控制队列;握手请求被响应后,发送方设备接口通过控制队列与接收方设备接口进行通信协商,得到协商结果;其中,协商结果包括通信所需的队列数;与接收方设备接口共同根据协商结果注册符合队列数的目标队列;通过控制队列与接收方设备接口互通目标队列的队列号后,利用目标队列向接收方设备接口传输消息。
在本申请中,当SR-IOV设备的发送方设备接口需要向接收方设备接口发送消息时,首先通过控制队列向接收方设备接口发起握手请求,在握手请求被响应后,发送方设备接口可以继续通过控制队列与接收方设备接口进行通信协商,确定通信所需的队列数。然后,接收方设备接口与发送方设备接口共同根据协商结果注册出符合该队列数的目标队列。通过控制队列与接收方设备接口互通目标队列的队列号之后,便可利用目标队列向接收方设备接口传输信息。也就是说,对于发送方设备接口与接收方设备接口而言,当有通信需求的情况下,可以进行协商,并注册出满足通信需求的队列数,并完成队列注册,从而基于注册好的若干个目标队列实现消息传输。如此,在发送方设备接口与接收方设备接口之间需要进行高并发通信时,仅需协商注册出多个目标队列,即可实现高并发通信,可扩展单根I/O虚拟化技术的应用场景。
在本申请的一种具体实施方式中,注册表管理模块,具体用于与接收方设备接口共同根据协商结果在消息队列注册表中注册目标队列,并在队列信息表中配置队列信息。
在本申请的一种具体实施方式中,消息队列注册表记录已注册队列的设备接口ID、队列ID、索引号和注册号有效位;
相应地,注册表管理模块,具体用于在队列信息表中写入目标队列的索引号、发送队列地址、发送队列、发送队列使能标识、接收队列地址、接收队列和接收队列使能标识。
在本申请的一种具体实施方式中,还包括:注册表管理模块,还用于利用目标队列向接收方设备接口传输消息之后,修改消息队列注册表中目标队列对应的注册号有效位,以注销目标队列。
在本申请的一种具体实施方式中,注册表管理模块,具体用于与接收方设备接口共同根据协商结果并利用各自的控制队列向管理function发起注册更改请求;
接收到更改成功应答信息的情况下,确定完成目标队列注册;其中,更改成功应答信息为管理function对注册更改请求进行验证通过后,且在消息队列注册表未满的情况下,完成了目标队列注册后反馈的;
与接收方设备接口一起在队列信息表中配置目标队列的队列信息。
在本申请的一种具体实施方式中,消息传输模块,具体用于利用目标队列,设备间通过直接内存访问互相传输消息。
在本申请的一种具体实施方式中,消息传输模块,具体用于将目标队列中的发送队列加入发送队列组中;
按照优先级排序调度发送队列组中的发送队列进行消息发送,以便位于接收方设备接口的接收队列接收消息。
相应于上面的方法实施例,本申请实施例还提供了一种电子设备,下文描述的一种电子设备与上文描述的一种SR-IOV设备间通信方法可相互对应参照。
参见图6所示,该电子设备包括:
存储器332,用于存储计算机程序;
处理器322,用于执行计算机程序时实现上述方法实施例的SR-IOV设备间通信方法的步骤。
具体的,请参考图7,图7为本实施例提供的一种电子设备的具体结构示意图,该电子设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)322(例如,一个或一个以上处理器)和存储器332,存储器332存储有一个或一个以上的计算机程序342或数据344。其中,存储器332可以是短暂存储或持久存储。存储在存储器332的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据处理设备中的一系列指令操作。更进一步地,处理器322可以设置为与存储器332通信,在电子设备301上执行存储器332中的一系列指令操作。
电子设备301还可以包括一个或一个以上电源326,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,和/或,一个或一个以上操作系统341。
上文所描述的SR-IOV设备间通信方法中的步骤可以由电子设备的结构实现。
相应于上面的方法实施例,本申请实施例还提供了一种可读存储介质,下文描述的一种可读存储介质与上文描述的一种SR-IOV设备间通信方法可相互对应参照。
一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的SR-IOV设备间通信方法的步骤。
该可读存储介质具体可以为U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可存储程序代码的可读存储介质。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本领域技术人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应该认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系属于仅仅用来将一个实体或者操作与另一个实体或者操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语包括、包含或者其他任何变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种SR-IOV设备间通信方法,其特征在于,包括:
发送方设备接口通过控制队列向接收方设备接口发起握手请求;所述SR-IOV设备包括所述发送方设备接口和所述接收方设备接口,且所述发送方设备接口和所述接收方设备接口均具有控制队列;
所述握手请求被响应后,所述发送方设备接口通过控制队列与所述接收方设备接口进行通信协商,得到协商结果;其中,所述协商结果包括通信所需的队列数;
与所述接收方设备接口共同根据所述协商结果注册符合所述队列数的目标队列;
通过控制队列与接收方设备接口互通所述目标队列的队列号后,利用所述目标队列向所述接收方设备接口传输消息。
2.根据权利要求1所述的方法,其特征在于,与所述接收方设备接口共同根据所述协商结果注册符合所述队列数的目标队列,包括:
与所述接收方设备接口共同根据所述协商结果在消息队列注册表中注册所述目标队列,并在队列信息表中配置队列信息。
3.根据权利要求2所述的方法,其特征在于,所述消息队列注册表记录已注册队列的设备接口ID、队列ID、索引号和注册号有效位;
相应地,在队列信息表中配置队列信息,包括:
在所述队列信息表中写入所述目标队列的索引号、发送队列地址、发送队列、发送队列使能标识、接收队列地址、接收队列和接收队列使能标识。
4.根据权利要求3所述的方法,其特征在于,利用所述目标队列向所述接收方设备接口传输消息之后,还包括:
修改所述消息队列注册表中所述目标队列对应的注册号有效位,以注销所述目标队列。
5.根据权利要求2所述的方法,其特征在于,与所述接收方设备接口共同根据所述协商结果在消息队列注册表中注册所述目标队列,包括:
与所述接收方设备接口共同根据所述协商结果并利用各自的控制队列向管理function发起注册更改请求;
接收到更改成功应答信息的情况下,确定完成所述目标队列注册;其中,所述更改成功应答信息为所述管理function对所述注册更改请求进行验证通过后,且在所述消息队列注册表未满的情况下,完成了目标队列注册后反馈的;
与所述接收方设备接口一起在所述队列信息表中配置所述目标队列的队列信息。
6.根据权利要求1所述的方法,其特征在于,利用所述目标队列向所述接收方设备接口传输消息,包括:
利用所述目标队列,设备间通过直接内存访问互相传输消息。
7.根据权利要求1至6任一项所述的方法,其特征在于,利用所述目标队列向所述接收方设备接口传输消息,包括:
将所述目标队列中的发送队列加入发送队列组中;
按照优先级排序调度所述发送队列组中的发送队列进行消息发送,以便位于所述接收方设备接口的接收队列接收消息。
8.一种SR-IOV设备间通信装置,其特征在于,包括:
握手模块,用于发送方设备接口通过控制队列向接收方设备接口发起握手请求;所述SR-IOV设备包括所述发送方设备接口和所述接收方设备接口,且所述发送方设备接口和所述接收方设备接口均具有控制队列;
通信协商模块,用于所述握手请求被响应后,所述发送方设备接口通过控制队列与所述接收方设备接口进行通信协商,得到协商结果;其中,所述协商结果包括通信所需的队列数;
注册表管理模块,用于与所述接收方设备接口共同根据所述协商结果注册符合所述队列数的目标队列;
消息传输模块,用于通过控制队列与接收方设备接口互通所述目标队列的队列号后,利用所述目标队列向所述接收方设备接口传输消息。
9.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述SR-IOV设备间通信方法的步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述SR-IOV设备间通信方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410394147.7A CN118245401A (zh) | 2024-04-02 | 2024-04-02 | Sr-iov设备间通信方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410394147.7A CN118245401A (zh) | 2024-04-02 | 2024-04-02 | Sr-iov设备间通信方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118245401A true CN118245401A (zh) | 2024-06-25 |
Family
ID=91550665
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410394147.7A Pending CN118245401A (zh) | 2024-04-02 | 2024-04-02 | Sr-iov设备间通信方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118245401A (zh) |
-
2024
- 2024-04-02 CN CN202410394147.7A patent/CN118245401A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9935899B2 (en) | Server switch integration in a virtualized system | |
US7669000B2 (en) | Host bus adapter with multiple hosts | |
US8279878B2 (en) | Method for configuring virtual network and network system | |
US7996569B2 (en) | Method and system for zero copy in a virtualized network environment | |
WO2018035856A1 (zh) | 实现硬件加速处理的方法、设备和系统 | |
CN108984465B (zh) | 一种消息传输方法及设备 | |
EP3267322B1 (en) | Scalable direct inter-node communication over peripheral component interconnect-express (pcie) | |
US20170322828A1 (en) | Systems and methods for virtio based optimization of data packet paths between a virtual machine and a network device for live virtual machine migration | |
CN112347015B (zh) | 芯片片上系统异构多处理器间的通信装置及方法 | |
CN110532208B (zh) | 一种数据处理方法、接口转换结构及数据处理设备 | |
US11863469B2 (en) | Utilizing coherently attached interfaces in a network stack framework | |
CN110389711B (zh) | 帮助端点设备实现sr-iov功能的方法、设备和非瞬态计算机可读介质 | |
JP2022105146A (ja) | アクセラレーションシステム、アクセラレーション方法、及びコンピュータプログラム | |
CN115357416B (zh) | 一种跨系统进行数据处理的方法及装置 | |
US20140258577A1 (en) | Wire Level Virtualization Over PCI-Express | |
CN114201268B (zh) | 一种数据处理方法、装置、设备及可读存储介质 | |
US8392629B1 (en) | System and methods for using a DMA module for a plurality of virtual machines | |
CN104731635A (zh) | 一种虚拟机访问控制方法,及虚拟机访问控制系统 | |
US11336725B2 (en) | Communication apparatus, communication method, and computer program product | |
CN108304270B (zh) | 一种通信方法、设备及计算机可读存储介质 | |
US11928504B2 (en) | System and method for queuing work within a virtualized scheduler based on in-unit accounting of in-unit entries | |
CN115102896B (zh) | 数据广播方法、广播加速器、noc、soc及电子设备 | |
CN109240800A (zh) | 一种基于Hypervisor多系统共享内存的管理方法 | |
US8589610B2 (en) | Method and system for receiving commands using a scoreboard on an infiniband host channel adaptor | |
CN118245401A (zh) | Sr-iov设备间通信方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination |