CN117707861A - 数据访问方法、装置、网络接口卡、可读介质和电子设备 - Google Patents

数据访问方法、装置、网络接口卡、可读介质和电子设备 Download PDF

Info

Publication number
CN117707861A
CN117707861A CN202211091687.5A CN202211091687A CN117707861A CN 117707861 A CN117707861 A CN 117707861A CN 202211091687 A CN202211091687 A CN 202211091687A CN 117707861 A CN117707861 A CN 117707861A
Authority
CN
China
Prior art keywords
processor
network
data
interface card
network interface
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
Application number
CN202211091687.5A
Other languages
English (en)
Inventor
韩兆皎
蒋凡璐
余博伟
袁轶星
徐启明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202211091687.5A priority Critical patent/CN117707861A/zh
Priority to PCT/CN2023/110993 priority patent/WO2024051410A1/zh
Publication of CN117707861A publication Critical patent/CN117707861A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)

Abstract

本申请涉及计算机技术领域,公开了一种数据访问方法、装置、网络接口卡、可读介质和电子设备。电子设备包括网络接口卡,该网络接口卡通过网络连接于存储设备。该网络接口卡在检测到计算设备的处理器发送的向存储设备写入数据或从存储设备中读取数据的指令后,先确定出计算设备到存储设备的各条网络链路中没有网络故障的网络链路,再通过没有网络故障的网络链路,基于NoF协议和RDMA协议向存储设备写入数据或从存储设备中读取数据。从而可以避免计算设备尝试采用有故障的网络链路和存储设备进行数据交换,有利于降低计算设备访问存储设备的延迟、提升用户体验。

Description

数据访问方法、装置、网络接口卡、可读介质和电子设备
技术领域
本申请涉及计算机技术领域,特别涉及一种数据访问方法、装置、网络接口卡、可读介质和电子设备。
背景技术
为满足用户对数据访问的速度、时延的需求,基于非易失性存储器(non-volatilememory express,NVMe)的网络存储(NVMe over fabric,NoF)的应用越来越广泛。在NoF中,用户的计算设备通过网络与存储设备连接,并基于NoF协议、远程直接数据存取(remotedirect memory access,RDMA)协议等实现对存储设备中的数据的访问,例如向存储设备写入数据或从存储设备读取数据。
但是,目前通常由用户的计算设备的处理器,例如中央处理器(centralprocessing unit,CPU)来运行基于NoF协议、RDMA协议与存储设备进行数据交换的逻辑,占用CPU的硬件资源,影响用户的计算设备的CPU的性能。
发明内容
有鉴于此,本申请实施例提供了一种数据访问方法、装置、网络接口卡、可读介质和电子设备。计算设备的网络接口卡在检测到访问存储设备的指令时,先确定出计算设备和存储设备间无故障的网络链路,再通过该无故障的网络链路来访问存储设备,有利于降低计算设备访问存储设备的延迟。
第一方面,本申请实施例提供了一种数据访问方法,应用于计算设备,该计算设备包括第一网络接口卡;并且,该方法包括:第一网络接口卡检测到访问指令,访问指令用于访问存储设备中的目标存储器;第一网络接口卡进行故障检测,从第一网络接口卡与目标存储器存在的多条网络链路中,确定出没有网络故障的第一网络链路;第一网络接口卡通过第一网络链路访问目标存储器。
在第一方面的方案中,计算设备在需要访问通过网络连接于计算设备的存储设备时,通过例如向第一网络接口卡发送访问指令,第一网络接口卡根据访问指令,先确定出第一网络接口卡和存储设备的目标存储器间的网络链路中没有故障的第一网络链路,再通过该第一网络链路来访问目标存储器,例如向目标存储器写入数据或从目标存储器读取数据。如此,可以避免计算设备尝试通过有故障的网络链路访问目标存储器,有利于降低计算设备访问存储设备的延迟。
在上述第一方面的一种可能实现方式中,上述第一网络接口卡是基于NoF协议和RDMA协议,利用第一网络接口卡和存储设备间的NoF连接和RDMA连接来访问目标存储器。具体地,第一网络接口卡中的第二处理器在接收到计算设备的第一处理器的访问指令时,如果访问指令是向存储设备中写入第一数据,那么第二处理器可以将访问指令转换为NoF写指令并发送给存储设备,存储设备响应于NoF写指令,向第二处理器RDMA读请求,进而第二处理器响应于RDMA读请求直接从第一处理器中(例如第一处理器的缓存中)获取第一数据,并将第一数据通过RDMA协议发送给存储设备;如果访问指令是从目标存储器中读取第二数据,那么第二处理器可以将访问指令转换为NoF读指令并发送给存储设备,存储设备响应于NoF读指令,从目标存储器中获取第二数据并向第二处理器发送RDMA写请求,进而第二处理器响应于RDMA写请求通过RDMA协议直接从存储设备获取第二数据并写入到第一处理器中(例如第一处理器的缓存中)。
在该方案中,由第一网络接口卡的第二处理器基于RDMA协议直接从计算设备中的第一处理器中获取第一数据(例如从第一处理器的缓存中获取第一数据)并发送给存储设备,或者由第二处理器基于RDMA协议将从存储设备接收的第二数据并直接发送给第一处理器(例如发送给第一处理器的缓存)。而无需将第一数据或第二数据经过第一网络接口卡的内存中暂存,从而降低了数据在计算设备中的转发次数以及对网络接口卡的内存占用,有利于进一步降低计算设备访问存储设备的延迟。
在上述第一方面的一种可能实现方式中,上述第一网络接口卡还包括第三处理器;并且,第二处理器是利用第一网络接口卡与存储设备间的NoF连接和RDMA连接,基于NoF协议和RDMA协议,通过第一网络链路访问目标存储器,其中,NoF连接和RDMA连接由第三处理器在第一网络接口卡启动时与存储设备建立。
在上述第一方面的一种可能实现方式中,上述计算设备还包括第二网络接口卡;并且方法还包括:第一网络接口卡在确定出第一网络接口卡与目标存储器不存在第一网络链路时,由第二网络接口卡利用第二网络接口卡与目标存储器间没有网络故障的第二网络链路,访问目标存储器。
在本方案中,计算设备可以包括多张网络接口卡,有利于增加计算设备和存储设备间的网络链路的数量,有利于提高计算设备访问存储设备的成功率。
在上述第一方面的一种可能实现方式中,上述第一网络接口卡通过以下方式确定出第一网络接口卡与目标存储器存在没有网络故障的第一网络链路:第一网络接口卡在未从存储设备接收到指示第一网络链路故障的信息时,确定第一网络接口卡与目标存储器存在没有网络故障的第一网络链路。
在本申方案中,存储设备在与第一网络接口卡的网络链路有故障时,可以向第一网络接口卡发送该有故障的网络链路的故障信息。
在上述第一方面的一种可能实现中,上述第二处理器或第三处理器为以下处理器中的任意一种:现场可编程逻辑门阵列、复杂可编程逻辑器件、领域特定架构、网络处理器、数字信号处理电路、微控制器,可编程控制器。
在本方案中,第一网络接口卡中的第二处理器或第三处理器为上述低功耗的处理器,相较于具有通用算力的处理器,功耗更低,有利于降低第一网络接口卡的功耗。
在上述第一方面的一种可能实现方式中,上述访问指令为NVMe指令。
第二方面,本申请实施例提供一种网络接口卡,该网络接口卡包括:总线接口,用于连接计算设备;网络接口,用于通过网络连接远端存储设备;第四处理器,用于在接收到计算设备发送的对存储设备中的目标存储器的访问指令时进行故障检测,从网络接口卡与存储设备存在的多条网络链路中,确定出没有网络故障的第一网络链路,并利用第一网络链路来访问目标存储器。
在上述第二方面的方案中,网络接口卡在接收到计算设备发送的访问指令时,先确定网络接口卡与访问指令要访问的目标存储器间的网络链路中没有故障的第一网络链路,再通过该第一网络链路来访问目标存储器,例如向目标存储器写入数据或从目标存储器读取数据。如此,可以避免尝试通过有故障的网络链路访问目标存储器,有利于降低计算设备访问存储设备的延迟。
在上述第二方面的一种可能实现方式中,上述网络接口卡还包括第五处理器,第五处理器用于在网络接口卡启动时,建立网络接口卡与存储设备的NoF连接和RDMA连接;并且第四处理器是通过以下方式利用第一网络链路来访问目标存储器:第四处理器基于NoF协议和RDMA协议,利用NoF连接和RDMA连接访问目标存储器。
在上述第二方面的一种可能实现方式中,上述第四处理器通过以下方式利用NoF连接和RDMA连接访问目标存储器:在访问指令是向目标存储器写入第一数据的情况下,第四处理器从计算设备获取第一数据,并基于NoF协议和RDMA协议,通过第一网络链路将第一数据写入目标存储器;和/或在访问指令是从目标存储器读取第二数据的情况下,第四处理器基于NoF协议和RDMA协议,从目标存储器获取第二数据,并将第二数据发送给计算设备。具体地,网络接口卡中的第四处理器在接收到计算设备的访问指令时,如果访问指令是向存储设备中写入第一数据,那么第四处理器可以将访问指令转换为NoF写指令并发送给存储设备,存储设备响应于NoF写指令,向第四处理器RDMA读请求,进而第四处理器响应于RDMA读请求直接从计算设备中(例如计算设备的处理器的缓存中)获取第一数据,并将第一数据通过RDMA协议发送给存储设备;如果访问指令是从目标存储器中读取第二数据,那么第四处理器可以将访问指令转换为NoF读指令并发送给存储设备,存储设备响应于NoF读指令,从目标存储器中获取第二数据并向第四处理器发送RDMA写请求,进而第四处理器响应于RDMA写请求通过RDMA协议直接从存储设备获取第二数据并写入到计算设备中(例如计算设备的处理器的缓存中)。
在本方案中,是由网络接口卡的第四处理器基于RDMA协议直接从计算设备中获取第一数据(例如从计算设备的处理器的缓存中获取第一数据)并发送给存储设备,或者由第四处理器基于RDMA协议将从存储设备接收的第二数据发送给计算设备(例如发送给计算设备的处理器的缓存),而无需将第一数据或第二数据经过网络接口卡的内存来暂存,从而降低了数据在网络接口卡中的转发次数以及对网络接口卡的内存占用,有利于进一步降低计算设备访问存储设备的延迟。
在上述第二方面的一种可能实现方式中,上述第四处理器或第五处理器为以下处理器中的任意一种:现场可编程逻辑门阵列、复杂可编程逻辑器件、领域特定架构、网络处理器、数字信号处理电路、微控制器,可编程控制器。
在本方案中,第一网络接口卡中的第四处理器或第五处理器为上述低功耗的处理器,相较于具有通用算力的处理器,功耗更低,有利于降低网络接口卡的功耗。
在上述第二方面的一种可能实现方式中,上述访问指令为NVMe指令。
第三方面,本申请实施例提供了一种电子设备,该电子设备包括上述第二方面及上述第二方面的任意一种可能实现提供的网络接口卡。
第四方面,本申请实施例提供了一种电子设备,该电子设备包括:网络接口卡,网络接口卡包括:存储器和至少一个处理器;其中,存储器中存储有指令,该指令被上述至少一个处理器执行时,使电子设备实现上述第一方面及上述第一方面的任意一种可能实现提供的数据访问方法。
第五方面,本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当该指令被网络接口卡执行时,使网络接口卡实现上述第一方面及上述第一方面的任意一种可能实现提供的数据访问方法。
第六方面,本申请实施例提供了一种计算机程序产品,该计算机程序产品在网络接口卡运行时,使网络接口卡实现上述第一方面及上述第一方面的任意一种可能实现提供的数据访问方法。
第六方面,本申请实施例提供了一种数据访问装置,该数据访问装置包括:至少一个处理器和供电电路,供电电路用于为处理器供电,涉及的程序指令在至少一个处理器中执行,以使得数据访问装置实现上述第一方面及上述第一方面的任意一种可能实现提供的数据访问方法中的网络接口卡,或计算设备的功能。
第七方面,本申请实施例提供了一种计算机程序产品,该计算机程序产品在网络接口卡运行时,使网络接口卡实现上述第一方面及上述第一方面的任意一种可能实现提供的数据访问方法。
附图说明
图1根据本申请的一些实施例,示出了一种NoF的场景示意图;
图2根据本申请的一些实施例,示出了一种计算设备1与存储设备2基于NoF协议和RDMA协议进行数据交换的架构示意图;
图3根据本申请的一些实施例中,示出了另一种计算设备1与存储设备2基于NoF协议和RDMA协议进行数据交换的架构示意图;
图4示出了一种计算设备1和存储器23间的网络链路故障时,计算设备1访问存储器23的过程示意图;
图5根据本申请的一些实施例,示出了一种计算设备1与存储设备2基于DPU卡5数据交换的架构示意图;
图6根据本申请的一些实施例,示出了一种通过DPU卡5向存储单元231写入数据的数据传输路径示意图;
图7根据本申请的一些实施例,示出了一种数据访问方法的交互流程示意图;
图8根据本申请的一些实施例,示出了一种DPU卡5确定计算设备1与存储设备2间的有效通信链路的示意图;
图9根据本申请的一些实施例,示出了一种处理器531利用多路径模块5321确定有效访问路径的流程示意图;
图10根据本申请的一些实施例,示出了一种计算设备1包括2张DPU卡5的情况下,与存储设备2进行数据交换的示意图;
图11根据本申请的一些实施例,示出了一种数据访问方法的交互过程示意图;
图12根据本申请的一些实施例,示出了一种DPU卡5的硬件结构示意图;
图13根据本申请的一些实施例,示出了一种计算设备1的硬件结构示意图;
图14根据本申请的一些实施例,示出了一种数据访问装置1400的结构示意图;
图15根据本申请的一些实施例,示出了一种系统芯片1500的结构示意图。
具体实施方式
本申请的说明性实施例包括但不限于网络接口卡、电子设备和数据访问方法。
需要说明的是,为便于描述,以下将用于存储数据的电子设备称为存储设备;将可以通过网络从存储设备中获取数据或将数据存储到存储设备的电子设备称为计算设备。
下面结合附图说明本申请实施例的技术方案。
图1根据本申请的一些实施例,示出了一种NoF的场景示意图。
如图1所示,存储设备2包括多个存储器23,计算设备1至计算设备N可以通过网络与存储设备2进行通信,并且计算设备1至计算设备N可以通过NoF协议和RDMA协议将数据存储在存储设备2的存储器23中,或者从存储设备2的存储器23中读取数据。
在一些实施例中,通常由计算设备1至计算设备N的处理器,例如CPU来运行基于NoF协议、RDMA协议与存储设备进行数据交换的逻辑,占用CPU的硬件资源,影响用户的计算设备的CPU的性能。
例如,图2根据本申请的一些实施例,示出了一种计算设备1与存储设备2基于NoF协议和RDMA协议进行数据交换的架构示意图。
如图2所示,计算设备1包括处理器100和RDMA网卡(又称RDMA网络接口卡,RDMAnetwork interface card,RNIC)06,存储设备2包括RDMA网卡21、控制器22和存储器23,其中,计算设备1和存储设备2通过RDMA网卡06和RDMA网卡21建立网络连接。
处理器100用于运行计算设备1中的应用程序01、NVMe驱动02、NoF启动器03和支持RDMA的开源软件(open fabrics enterprise distribution,OFED)和驱动04。
其中,NVMe驱动02用于将存储设备2中的存储器23挂载为NVMe设备,从而使得处理器100中运行的应用程序,例如应用程序01,可以基于NVMe指令,例如输入输出指令(input/output指令,I/O指令)来访问存储器23。
NoF启动器03用于和存储设备2中的控制器22进行协商,以建立计算设备1与存储设备2中的存储器23的RDMA连接和NoF连接,以及计算设备1与存储器23间的通信链路,例如队列对(queue pair,QP)连接。NoF启动器03还用于接收NVMe驱动发送的NVMe指令,并将NVMe指令转换为NoF指令,以及调用OFED和驱动04将NoF指令将NoF指令发送给存储设备2。
OFED和驱动04用于响应NoF启动器03的调用,将NoF指令嵌入到在RDMA SEND消息中,以便于RDMA网卡06基于RDMA协议发送该NoF指令。其中,RDMA SEND消息是由RDMA协议定义的通过RDMA协议发送的消息。
RDMA网卡06可以是支持RDMA协议的网络接口卡(network interface card,NIC)。RDMA网卡06用于响应NoF启动器03的指令,将指令通过命令消息包发送给存储设备2,以及响应存储设备2的读指令,基于RDMA协议将数据缓存05中的数据发送给存储设备2,或者响应存储设备2的写指令,基于RDMA协议将从存储设备2接收到的数据写入到数据缓存05。
数据缓存05用于临时存储处理器100运行的指令对应的数据。
RDMA网卡21可以是支持RDMA协议的NIC。RDMA网卡21用于接收计算设备1发送的数据或指令并将接收到的数据或指令转发给控制器22,以及用于接收控制器22发送的指令或存储器23发送的数据并将指令或数据转发给计算设备1。
控制器22可以是一个或多个,用于通过PCIe总线与存储器23连接,并将从网卡RDMA网卡06接收到的NoF指令转换为NVMe指令,来向存储器23写入数据或从存储器23读取数据。
存储器23可以包括是一个或多个存储介质,用于存储数据。在一些实施例中,存储器23可以是支持NVMe协议的固态硬盘(solid state drives,SSD),并通过PCIe总线与控制器22连接。在一些实施例中,存储器23中可以被计算设备1识别为一个NVMe设备的一个或多个存储介质,可以称之为存储单元。存储设备2为每一个存储单元分配了唯一的逻辑单元号(logic unit number,LUN),从而计算设备1可以通过LUN来访问存储设备2中的各个存储单元。
可以理解,在一些实施例中,一个存储单元可以挂载在至少一个控制器下,一个控制器下也可以挂载至少一个存储介质。
可以理解,存储设备2可以是能够基于NoF协议和RDMA协议访问的任意设备,包括但不限于外置集中式存储或分布式存储等形态的能够存储数据的设备,例如存储服务器、分布式数据库服务器、数据中心等。
下面基于图2所示的架构,以计算设备1向存储器23写入数据为例,介绍计算设备1与存储设备2进行数据交换的过程,该过程可以包括如下步骤:
S1.1:RDMA网卡06启动;
S1.2:处理器100利用NoF启动器03和控制器22进行协商,建立计算设备1与存储器23的RDMA连接和NoF连接。例如,参考图2,NoF启动器03可以基于路径pa-1.1,依次通过OFED和驱动04、RDMA网卡06、RDMA网卡21、控制器22,利用RDMA协议和NoF协议建立计算设备1与存储器23的RDMA连接和NoF连接。
S1.3:处理器100将应用程序01对应的待写入数据存储在数据缓存05中,并调用NVMe驱动02向NoF启动器03发送NVMe写指令。
可以理解NVMe指令是指基于NVMe协议的指令,包括通过NVMe协议向NVMe设备写入数据的NVMe写指令和通过NVMe协议从NVMe设备中读取数据的NVMe读指令。
S1.4:处理器100利用NoF启动器03将NVMe写指令转换为NoF写指令,建立计算设备1和存储器23的QP连接,调用OFED和驱动04向控制器22发送NoF写指令。例如,参考图2,NoF启动器03可以基于路径pa-1.2,依次通过依次通过OFED和驱动04、RDMA网卡06、RDMA网卡21、控制器22,利用RDMA协议和NoF协议将NoF写指令发送给控制器22。
可以理解,NoF指令是基于NoF协议的指令,包括通过NoF议向NoF设备写入数据的NoF写指令和通过NoF协议从NoF设备中读取数据的NoF读指令。
S1.5:控制器22响应于NoF写指令,向RDMA网卡06发送RDMA读请求。
S1.6:RDMA网卡06响应于RDMA读请求,从数据缓存05中将待写入数据发送给控制器22。例如,参考图2,RDMA网卡06可以基于路径pa-1.3,依次通过数据缓存05、OFED和驱动04、RDMA网卡06、RDMA网卡21,将待写入数据发送给控制器22。
S1.7:控制器22将接收到的数据存储在存储器23中。
S1.8:控制器22向RDMA网卡06发送NoF写入成功响应。
S1.9:RDMA网卡06将NoF写入成功响应转发给NoF启动器03。
S1.10:处理器100利用NoF启动器03响应于NoF写入成功响应,向NVMe驱动02发送NVMe写入成功响应。
从上述步骤S1.1-S1.10可知,计算设备1与存储设备2进行数据交换过程中,与NoF相关的操作,例如前述步骤S1.2、步骤S1.4、步骤S1.10都由处理器100来执行,占用了处理器100的硬件资源,使得用户可以用于执行其他应用的硬件资源减少,影响用户体验。
基于此,在一些实施例中,可以通过将前述RDMA网卡替换为包括通用处理器(例如CPU)的数据处理单元(data processing unit,DPU)卡,并由DPU卡来执行图2中由处理器100执行的部分操作,从而可以降低计算设备1与存储设备2进行数据交换过程中,占用处理器100的硬件资源的数量。
例如,图3根据本申请的一些实施例中,示出了另一种计算设备1与存储设备2基于NoF协议和RDMA协议进行数据交换的架构示意图。
如图3所示,计算设备1包括处理器100和DPU卡3,其中DPU卡3包括NVMe设备模拟器31、处理器32、内存33,和RDMA网卡34。相较于图2所示的实施例,NoF启动器03和OFED和驱动04运行于处理器32中。
DPU卡3中,NVMe设备模拟器31通过PCIe总线与处理器100连接,并且将DPU卡3作为NVMe设备挂载在处理器100上,从而处理器100可以通过NVMe指令来访问DPU卡3。
处理器32可以是能够提供通用算力的高性能处理器,例如CPU、图形处理器(graphics processing unit,GPU)等。
内存33可以是双倍速率同步动态随机存储器(double data rate synchronousdynamic random access memory,DDR SDRAM)等存储器,用于临时存储数据和指令。例如临时存储从数据缓存05中获取的数据。
RDMA网卡34的功能可以参考前述RDMA网卡06的描述,在此不做赘述。
下面基于图3所示的架构,以计算设备1向存储器23写入数据为例,介绍计算设备1与存储设备2进行数据交换的过程,该过程可以包括如下步骤:
S2.1:DPU卡3启动,NVMe设备模拟器31将DPU卡3作为NVMe设置挂载在处理器100上。
S2.2:处理器32利用NoF启动器03和控制器22进行协商,建立计算设备1与存储器23的RDMA连接和NoF连接。例如,参考图3,NoF启动器03可以基于路径pa-2.1,依次通过OFED和驱动04、RDMA网卡34、RDMA网卡21、控制器22,利用RDMA协议和NoF协议与存储器23的RDMA连接和NoF连接。
S2.3:处理器100将应用程序01对应的待写入数据存储在数据缓存05中,调用NVMe驱动02向NVMe设备模拟器31发送NVMe写指令。
S2.4:NVMe设备模拟器31将NVMe写指令发送给NoF启动器03。
S2.5:处理器32利用NoF启动器03将待写入数据从数据缓存05中读取到内存33中,并将NVMe写指令转换为NoF IO写指令,建立计算设备1和存储器23的QP连接,调用OFED和驱动04向控制器22发送NoF写指令。例如,参考图3,NoF启动器03可以基于路径pa-2.2,依次通过依次通过OFED和驱动04、RDMA网卡34、RDMA网卡21、控制器22,利用RDMA协议和NoF协议将NoF写指令发送给控制器22。
S2.6:控制器22响应于NoF写指令,向RDMA网卡34发送RDMA读请求。
S2.7:RDMA网卡34响应于RDMA读请求,从内存33中将待写入数据发送给控制器22。
S2.8:控制器22将接收到的数据存储在存储器23中。
S2.9:控制器22向RDMA网卡34发送NoF写入成功响应。
S2.10:RDMA网卡34将NoF写入成功响应转发给NoF启动器03。
S2.11:处理器32利用NoF启动器03响应于NoF写入成功响应,通过NVMe设备模拟器31向NVMe驱动02发送NVMe写入成功响应。
从上述步骤S2.1-S2.11可知,计算设备1与存储设备2进行数据交换过程中,与NoF相关的操作,例如前述步骤S2.1、步骤S2.2、步骤S2.4、步骤S2.5、步骤S2.7、步骤S2.10、步骤S2.11都由DPU卡3来执行,将前述图2所示实施例的部分操作从处理器100卸载。从而降低了计算设备1与存储设备2进行数据交换过程中占用的处理器100的硬件资源,使得处理器100中可以用于执行其他应用的硬件资源增加。但是,前述具有通用算力的处理器32的功耗较大,并且从图3中的路径pa-2.3可知,应用程序01对应的待写入数据要依次经过数据缓存05、处理器32、内存33、RDMA网卡34等物理器件才能发送至存储设备2,经过的物理器件较多、导致延迟较高。
此外,在图2和图3所示的实施例中,在计算设备1与存储器23间存在多条网络链路时,由于计算设备1无法获取各条网络链路是否有故障。计算设备1需要根据各条网络链路的优先级,逐条尝试通过各网络链路将待写入数据发送给存储器23或从存储器23获取数据。如果计算设备1和存储器23间优先级较高的网络链路有故障,计算设备1会经过至少一次失败的尝试,才能找到无故障的网络链路,并利用没有网络故障的网络链路将待写入数据存储到存储器23中,进一步增加了待写入数据从计算设备1发送到存储器23的延迟。
例如,图4示出了一种计算设备1和存储器23间的网络链路故障时,计算设备1访问存储器23的过程示意图。
参考图4,计算设备1的DPU卡3与交换机4建立网络连接,交换机4分别与存储设备2中的RDMA网卡211、RDMA网卡212、RDMA网卡213和RDMA网卡214建立网络链接。其中,RDMA网卡211、RDMA网卡212通过控制器221与存储单元231、存储单元232连接;RDMA网卡213、RDMA网卡214通过控制器222与存储单元231、存储单元232连接。
假设计算设备1要访问的存储单元为存储单元231,则由计算设备1至存储单元231的网络链路包括4条优先级依次从高到低的网络链路,即链路1:计算设备1→交换机4→RDMA网卡211→控制器221→存储单元231;链路2:计算设备1→交换机4→RDMA网卡212→控制器221→存储单元231;链路3:计算设备1→交换机4→RDMA网卡213→控制器222→存储单元231;链路4:计算设备1→交换机4→RDMA网卡214→控制器222→存储单元231。
假设由控制器221到存储单元231的网络链路故障、由RDMA网卡213至控制器222的网络链路故障,也就是链路1至链路3故障。计算设备1在向存储单元231写入待写入数据时,数据转换过程包括:
S3.1:DPU卡3尝试通过链路1发送,即DPU卡3通过链路1将待写入数据发送给存储单元231;
S3.2:DPU卡3尝试通过链路2发送,即DPU卡3在预设超时时长(例如1秒、2秒、5秒等)内未收到发送成功响应,通过链路2将待写入数据发送给存储单元231;
S3.3:DPU卡3尝试通过链路3发送,即DPU卡3在预设超时时长内未收到发送成功响应,通过链路3将待写入数据发送给存储单元231,预设超时时长内未收到响应;
S3.4:DPU卡3尝试通过链路1发送,即DPU卡3在预设超时时长内未收到发送成功响应,通过链路4将待写入数据发送给存储单元231,数据写入成功。
如此,计算设备1需要根据网络链路的优先级,逐条进行尝试,在链路1至链路3故障时,需要经过3个预设超时时长后,才能找到无故障的链路4,增加了待写入数据从计算设备1写入到存储单元231的延迟、影响用户体验。
为了降低DPU卡的功耗,以及避免由于计算设备和存储单元间的网络链路故障导致的数据写入延迟,本申请实施例提供了一种DPU卡,应用于计算设备,该DPU卡中包括低功耗的处理器,例如专用集成电路(application specific integrated circuit,ASIC)。对应的,本申请实施例可以提供一种数据访问方法,用于包括上述DPU卡的计算设备,方法包括:计算设备通过DPU卡中的低功耗处理器运行前述NoF启动器、OFED和驱动以建立DPU卡与存储设备间的RDMA连接和NoF连接;并且DPU卡在检测到计算设备的处理器发送的向存储设备写入数据或从存储设备中读取数据的指令后,通过低功耗处理器先确定出计算设备到存储设备的各条网络链路中没有网络故障的网络链路,再通过没有网络故障的网络链路向存储设备写入数据或从存储设备中读取数据。如此,由于DPU卡采用了低功耗处理器,有利于降低DPU卡的功耗,并且由于是由低功耗处理器通过确定出的无故障的网络链路和存储设备进行数据交换,从而可以避免计算设备尝试采用有故障的网络链路和存储设备进行数据交换,有利于降低计算设备访问存储设备的延迟、提升用户体验。
具体地,图5根据本申请的一些实施例,示出了一种计算设备1与存储设备2基于DPU卡5数据交换的架构示意图。
如图5所示,DPU卡5包括NVMe设备模拟器51、处理器52、RDMA模块53和内存54,并且RDMA模块53中包括处理器531。
NVMe设备模拟器51用于在DPU卡5通过PCIe总线与计算设备1的处理器100连接,并且将DPU卡5作为NVMe设备挂载在处理器100上,从而处理器100可以通过NVMe指令来访问DPU卡5。
处理器52可以是能够运行NoF启动器521、OFED和驱动522的低功耗处理器,用于建立DPU卡5与存储设备间的RDMA连接和NoF连接。其中,NoF启动器521、OFED和驱动522的功能可以参考前述NoF启动器03、OFED和驱动04的描述,在此不做赘述。
例如,在一些实施例中,处理器52可以是现场可编程逻辑门阵列(fieldprogrammable gate array,FPGA)、复杂可编程逻辑器件(complex programmable logicdevice,CPLD)、领域特定架构(domain specific architecture,DSA)等ASIC,还可以是网络处理器(network processor,NP),数字信号处理电路(digital signal processor,DSP)、微控制器(micro controller unit,MCU),可编程控制器(programmable logicdevice,PLD)等低功耗处理器。
可以理解,在另一些实施例中,处理器52也可以是其他的ASIC,在此不做限定。
RDMA模块53与存储设备2的RDMA网卡21连接。RDMA模块53可以包括处理器531,用于基于RDMA协议和NoF协议将指令和数据发送给存储设备2或者从存储设备2接收指令和数据并转发给处理器100,以及用于确定计算设备1与存储设备2中的各个存储单元的通信链路的状态,并通过无故障的通信链路与存储设备2中的存储单元进行数据交换。
具体地,在一些实施例中,处理器531可以通过运行NoF引擎532来将NVMe指令转换为NoF指令,利用多路径模块5321来确定出DPU卡5与要访问的存储单元的各条网络链路的状态,并通过无故障的网络链路将NoF指令、数据等发送给存储设备。
在一些实施例中,处理器531可以是能够运行NoF引擎532、多路径模块5321的ASIC,例如FPGA、CPLD、DSA、NP、DSP、MCU、PLD等。在另一些实施例中,处理器531也可以是其他类型的ASIC,在此不做限定。
可以理解,NoF引擎是由NoF协议定义的用于通过NoF协议数据交换的软件模块。
内存54可以是双倍速率同步动态随机存储器等存储器,用于临时存储数据和指令。
可以理解,在另一些实施例中,DPU卡5可以包括更多或更少的模块,也可以合并或拆分部分模块,在此不做限定。
可以理解,本发明实施例中的DPU卡5拥有网络通信功能,从功能来看,它也可以称为网络接口卡、网络接口控制器(network interfa cecontroller)、网络适配器(networkadapter)、网卡等,或局域网适配器(LAN adapter),是一块被设计用来允许计算机在计算机网络上进行通讯的计算机硬件。
相较于DPU卡3,DPU卡5是由处理器52来和存储器23建立RDMA连接和NoF连接,由处理器531直接将数据缓存05中的数据发送给存储设备2,无而在DPU卡5的内存54中暂存,减小了数据在DPU卡5中的转发次数和对DPU卡5的内存54的占用,提高了数据发送速度。并且,由处理器531在将数据缓存05中的数据发送给存储设备2时,是通过先确定出DPU卡5和存储设备2中无故障的网络链路,再通过确定出的无故障的网络链路来将数据发送给存储设备2。如此,计算设备1无需尝试采用有故障的网络链路向存储设备发送数据,降低了DPU卡5访问存储设备2的延时。
例如,图6根据本申请的一些实施例,示出了一种通过DPU卡5向存储单元231写入数据的数据传输路径示意图。
参考图6,处理器531可以运行多路径模块5321来实时获取并记录到由DPU卡5和存储单元231间的各条网络链路网络状态,即各条网络链路是否有故障。如图6所示,DPU卡5到存储单元231的网络链路包括4条,即网络链路R1:交换机4→RDMA网卡211→控制器221;网络链路R2:交换机4→RDMA网卡212→控制器221;网络链路R3:交换机4→RDMA网卡213→控制器222;网络链路R4:交换机4→RDMA网卡214→控制器222。
在控制器221至存储单元231的链路有故障,并且RDMA网卡213至控制器222的链路故障时,存储设备2可以将上述故障信息发送给处理器531,从而处理器531可以通过多路径模块5321检测到上述网络链路R1、网络链路R2和网络链路R3都为故障,处理器531可以基于没有网络故障的网络链路R4,依次经过交换机4、RDMA网卡214、控制器222向存储单元231写入数据,而不用像图4所示的实施例中根据网络链路优先级对网络链路进行逐条尝试,降低了DPU卡5访问存储设备2的延时。
下面结合图5所示的架构,以计算设备1向存储设备2中写入数据为例,详细地介绍本申请的技术方案。
具体地,图7根据本申请的一些实施例,示出了一种数据访问方法的交互流程示意图。如图7所示,该交互流程包括如下步骤:
S701:处理器52建立DPU卡5与存储设备2的通信连接。
示例性地,处理器52可以在NVMe设备模拟器51将DPU卡5作为NVMe设备挂载到处理器100上后,建立DPU卡5与存储设备2的通信连接。
在一些实施例中,DPU卡5与存储设备2的通信连接可以包括RDMA连接和NoF连接。从而处理器52可以通过运行NoF启动器521,与存储设备2中的控制器,例如前述控制器221/222进行协商,建立DPU卡5与存储设备2的RDMA连接和NoF连接。
可以理解,在另一些实施例中,DPU卡5与存储设备2的通信连接还可以包括其他连接,例如TCP/IP协议连接等,在此不做限定。
可以理解,在DPU卡5与存储设备2间建立RDMA连接和NoF连接后,存储单元231和存储单元232将作为NVMe设备呈现给计算设备1中的应用程序,从而计算设备1中的应用程序可以通过NVMe指令访问该NVMe设备,来访问存储单元231和存储单元232
例如,参考图8,DPU卡5可以将存储单元231挂载为NVMe设备N0、将存储单元232挂载为NVMe设备N1,进而应用程序01访问NVMe设备N0即为访问存储单元231,而访问NVMe设备N1即为访问存储单元232。可以理解,在一些实施例中,每个存储单元可以对应的个唯一的LUN,从而计算设备1中的应用程序可以基于不同的LUN来访问不同的存储单元。
S702:处理器100向NVMe设备模拟器51发送NVMe写指令。
示例性地,处理器100在应用程序01需要向存储设备2中的存储单元中写入数据时,向NVMe模拟器51发送NVMe写指令。
例如,在一些实施例中,NVMe写指令中可以包括待写入数据在数据缓存05中的地址,以及要写入数据的存储单元(以下称为目标存储单元)的标识,例如前述LUN。
S703:NVMe设备模拟器51向处理器531转发NVMe写指令。
示例性地,NVMe设备模拟器51在接收到NVMe写指令后,将该NVMe写指令转发给处理器531。
例如,在一些实施例中,处理器531中运行有NoF引擎532,NVMe设备模拟器51可以向NoF引擎532的应用程序编程接口(application programming interface,API)转发NVMe写指令。
S704:处理器531判断是否存在目标存储单元的有效访问路径。
示例性地,处理器531在接收到NVMe写指令后,可以根据NVMe写指令中的目标存储单元的标识,判断是否存在目标存储单元的有效访问路径。如果存在有效访问路径,则说明可以将待写入数据写入到目标存储单元中,转至步骤S705;否则,说明不能将待写入数据写入到目标存储单元中,转至步骤S704a。
可以理解,有效访问路径是指DPU卡5和目标存储单元间,不存在故障的网络链路。在一些实施例中,处理器531可以在接收到存储设备2上报的某一网络链路存储故障时,将该条网络链路确定为有故障的网络链路;处理器531也可将与DPU卡5在预设时长内的平均时长大于预设值的网络链路确定为有故障的链路。
可以理解,在一些实施例中,在DPU卡5与存储设备2建立RDMA连接和NoF连接后,处理器531可以通过运行多路径模块5321,从存储设备2获取由DPU卡5到存储设备232中的各个存储单元的网络链路的网络状态。例如,参考图8,DPU卡5到存储单元231的网络链路包括4条,即网络链路R1:交换机4→RDMA网卡211→控制器221→存储单元231;网络链路R2:交换机4→RDMA网卡212→控制器221→存储单元231;网络链路R3:交换机4→RDMA网卡213→控制器222→存储单元231;网络链路R4:交换机4→RDMA网卡214→控制器222→存储单元231;DPU卡5到存储单元232的网络链路包括4条,即网络链路R5:交换机4→RDMA网卡211→控制器221→存储单元232;网络链路R6:交换机4→RDMA网卡212→控制器221→存储单元232;网络链路R7:交换机4→RDMA网卡213→控制器222→存储单元232;网络链路R8:交换机4→RDMA网卡214→控制器222→存储单元232。其中,网络链路R1至网络链路R3、网络链路R5至网络链路R7故障,网络链路R4和网络链路R8正常。
进而处理器531可以在目标存储单元为存储单元231时,确定出存在目标存储单元的有效访问路径,即网络链路R4,转至步骤S705。
可以理解,在一些实施例中,也可以由存储设备2中的各控制器或存储器主动将存在故障的网络链路的信息上报给DPU卡5,在此不做限定。
可以理解,在一些实施例中,多路径模块5321可以为每个存储单元设置一条预设访问路径,多路径模块5321可以先判断该预设路径是否为有效访问路径,再判断其他路径是否为有效访问路径来确定出有效访问路径。例如,图9根据本申请的一些实施例,示出了一种处理器531利用多路径模块5321确定有效访问路径的流程示意图。如图9所示,该流程包括如下步骤:
S7041:判断目标存储单元的预设访问路径是否存在故障。
处理器531可以先利用多路径模块5321判断预设访问路径是否存在故障,如果预设访问路径存储故障,则说明需要通过其他路径来访问目标存储单元,转至步骤S7043;否则说明可以通过预设访问路径来访问目标存储单元,转至步骤S7042。
例如,在一些实施例中,一个存储单元可以对应于一个主存储节点和至少一个备份存储节点,预设访问路径可以是DPU卡5与主存储节点间的至少一条通信链路中的一条。
S7042:将目标存储单元的预设访问路径确定为有效访问路径。
处理器531可以在预设访问路径没有网络故障的情况下,将预设访问路径确定为有效访问路径,转至步骤S705。
S7043:判断目标存储单元的是否存在其他访问路径。
处理器531可以在预设访问路径有故障的情况下,判断是否存在其他访问路径。如果存在其他访问路径,则转至步骤S7044进一步判断;否则,说明没有可用的通信链路来访问目标存储单元,转至步骤S704a。
S7044:判断其他访问路径中是否存在没有网络故障的访问路径。
处理器531可以在存储其他访问路径时,判断其他访问路径中是否存储没有网络故障的访问路径。如果其他访问路径中存在没有网络故障的访问路径,则说明可以通过该路径来访问目标存储单元,转至步骤S705,否则,说明没有可用的通信链路来访问目标存储单元,转至步骤S704a。
S7045:将存在的没有网络故障的访问路径确定为有效访问路径。
处理器531将存在的没有网络故障的访问路径确定为有效访问路径,并转至步骤S705。
S704a:处理器531向NVMe设备模拟器51发送NVMe写入失败响应。
示例性地,处理器531在确定出不存在目标存储单元的有效访问路径时,向NVMe设备模拟器51发送NVMe写入失败响应。
可以理解,该NVMe写入失败响应用于指示前述NVMe写指令未能成功执行。
S704b:NVMe设备模拟器51向处理器100转发NVMe写入失败响应。
NVMe设备模拟器51在接收到NVMe写入失败响应,向处理器100转入发NVMe写入失败响应。
可以理解,在一些实施例中,处理器100在接收到NVMe写入失败响应后,可以进行重试或者将待写入数据存储到本地存储器中或者存储设备2的其他存储单元中。
S705:处理器531基于存在的有效访问路径,向存储设备2发送NoF写指令。
示例性地,处理器531在确定存储目标存储单元的有效访问路径时,将NVMe写指令转换为NoF写指令,并通过RDMA Send消息,将NoF写指令发送给存储设备2。
例如,针对图8所示的情形,处理器531可以基于网络链路4,经过通过RDMA Send消息将NoF写指令发送给存储设备2。
可以理解,NoF写指令中包括了待写入数据在数据缓存05中的地址、DPU卡5的互联网协议地址(internet protocol address,IP地址),以及目标存储单元的标识。
S706:存储设备2基于存在的有效访问路径,向RDMA模块53发送RDMA读请求。
示例性地,存储设备2可以在到NoF写指令后,根据NoF写指令中的IP地址和待写入数据在数据缓存05中的地址,向RDMA模块53发送RDMA读请求。
可以理解,RDMA读请求中包括需要读取的数据在数据缓存05中的地址(也即是待写入数据在数据缓存05中的地址)。
S707:处理器531响应于RDMA读请求,从处理器100获取待写入数据,并基于存在的有效访问路径,将待写入数据发送给存储设备2。
示例性地,处理器531在接收到RDMA读请求,可以根据RDMA请求中需要读取的数据在数据缓存05中的地址,从数据缓存05中获取待写入数据;然后基于RDMA协议,通过存在的有效访问路径,将待写入数据发送给存储设备2。
S708:存储设备2将待写入数据存储到目标存储单元中,并向RDMA模块53发送NoF写入成功响应。
示例性地,存储设备2在接收到待写入数据后,可以根据前述NoF写指令中记录的目标存储单元的标识(例如LUN),将接收到的待写入数据写入到对应的目标存储单元中,并向RDMA模块53发送NoF写入成功响应。
可以理解,NoF写入成功响应用于指令NoF写指令已经成功执行,即待写入数据已经成功写入到目标存储单元中。
S709:处理器531向NVMe设备模拟器51发送NVMe写入成功响应。
示例性地,处理器531在接收到NoF写入成功响应后,向NVMe设备模拟器51发送NVMe写入成功响应。
可以理解,NVMe写入成功响应用于由NVMe设备模拟器51发送的NVMe写指令已经成功执行,即待写入数据已经成功写入到目标存储单元中。
S710:NVMe设备模拟器51向处理器100发送NVMe写入成功响应。
示例性地,NVMe设备模拟器51在接收到NVMe写入成功响应后,将NVMe写入成功响应发送给处理器100。
通过本申请实施例提供的方法,在计算设备1通过DPU卡5向存储设备2中的目标存储单元写入数据时,DPU卡5先确定出目标存储单元的有效访问路径,再利用有效访问路径将待写入的数据传送给存储设备2。如此,避免了计算设备1尝试采用有故障的网络链路向存储设备2发送数据,降低了计算设备1向存储设备2中写入数据的延迟,提升了用户体验。并且,待写入数据由处理器531直接从处理器100获取并发送给存储设备2,无需在DPU卡5的内存54中暂存,减小了数据在计算设备1中的转发次数和对DPU卡5的内存54的占用,有利于减少计算设备1访问存储设备2的延迟。
可以理解,上述步骤S701至步骤S710的过程只是一种示例,在另一些实施例中,可以合并或拆分部分步骤,还可以更换DPU卡5中执行各步骤的执行主体,在此不做限定。
可以理解,上述以计算设备1向存储设备2中写入数据为例介绍本申请实施例的技术方案只是一种示例,计算设备1从存储设备2中获取数据的过程也可以采用上述方案,由DPU卡5确定出有效访问路径,并由处理器531利用RDMA连接和NoF连接从存储设备2接收到数据再直接发送给处理器100。
以上各实施例中,计算设备1中只包括了一张DPU卡5,在另一些实施例中,计算设备1也可以包括多张DPU卡5,从而计算设备1可以利用多张DPU卡建立更多的网络链路,以避免在某张DPU卡5故障,或者基于某一张DPU卡5的网络链路全部故障时,无法访问存储设备2中的目标存储单元的情况。
例如,图10根据本申请的一些实施例,示出了一种计算设备1包括2张DPU卡5的情况下,与存储设备2进行数据交换的示意图。
如图10所示,计算设备1包括DPU卡5和DPU卡5’,并且DPU卡5可以通过交换机4、RDMA网卡211/212、控制器221与存储单元231/232建立通信连接;DPU卡5’可以通过交换机4’、RDMA网卡211/212、控制器221与存储单元231/232建立通信连接。其中DPU卡5’与DPU卡5的结构相同,具有与处理器NVMe设备模拟器51、处理器52、RDMA模块53、处理器531相分别对应的NVMe设备模拟器51’、处理器52’、RDMA模块53’、处理器531’。
从而计算设备1和存储单元231或存储单元232的网络链路各包括8条。例如,计算设备1与存储单元232的网络链路可以包括以下8条:
DPU卡5→交换机4→RDMA网卡211→控制器221→存储单元231;
DPU卡5→交换机4→RDMA网卡212→控制器221→存储单元231;
DPU卡5→交换机4’→RDMA网卡213→控制器222→存储单元231;
DPU卡5→交换机4’→RDMA网卡214→控制器222→存储单元231;
DPU卡5’→交换机4→RDMA网卡211→控制器221→存储单元232;
DPU卡5’→交换机4→RDMA网卡212→控制器221→存储单元232;
DPU卡5’→交换机4’→RDMA网卡213→控制器222→存储单元232;
DPU卡5’→交换机4’→RDMA网卡214→控制器222→存储单元232。
进而上述8条网络链路中只要存在任意一条没有网络故障,计算设备1都可以通过该条没有网络故障的网络链路来访问存储单元231。具体地,如图10所示,计算设备1在应用程序01要向存储设备2中写入数据时,可以先向DPU卡选择模块07发送NVMe写入指令,DPU卡选择模块07向DPU卡5或DPU卡5’转发NVMe写入指令,如果先接收NVMe写入指令的DPU卡中没有对目标存储单元的有效访问路径,则由该张DPU卡向DPU卡选择模拟07发送切卡请求,从而DPU卡选择模块07可以响应于切卡请求,向另一张DPU卡发送NVMe写入指令,由另一张DPU卡来响应该NVMe写入指令。
下面结合图10所示的情形,以先接收NVMe写入指令的DPU卡为DPU卡5为例,介绍本申请实施例的技术方案。
具体地,图11根据本申请的一些实施例,示出了一种数据访问方法的交互过程示意图。如图11所示,该过程包括如下步骤。
S1101a:DPU卡5建立与存储设备2的通信连接。
示例性地,DPU卡5启动后,可以在NVMe设备模拟器51将DPU卡5作为NVMe设备挂载到处理器100上后,通过处理器52运行前述NoF启动器、OFED和驱动来建立DPU卡5与存储设备2的通信连接,例如RDMA连接和NoF连接。
可以理解,在另一些实施例中,DPU卡5和存储设备2的通信连接还可以包括其他类型的连接,在此不做限定。
S1101b:DPU卡5’建立与存储设备2的通信连接。
DPU卡5’建立与存储设备2的通信连接,例如RDMA连接和NoF连接。具体的建立方式,可以参考前述步骤S1101a或前述S701的描述,在此不做赘述。
可以理解,在一些实施例中,S1101a可以和S1101b同时执行。
S1102:处理器100检测到NVMe写指令
处理器100在应用程序01需要向存储设备2中的存储单元中写入数据时,可以检测到应用程序01生成的NVMe写指令。在一些实施例中,NVMe写指令中可以包括待写入数据在数据缓存05中的地址,以及要写入数据的存储单元(以下称为目标存储单元)的标识,例如前述LUN。
S1103:处理器100向DPU卡5发送NVMe写指令。
处理器100在检测到NVMe写指令后,将NVMe写指令发送给DPU卡5。
可以理解,在计算设备1中包括多张DPU卡时,处理器100可以先将NVMe写指令发送给最先启动的DPU卡,也可由用户或计算设备1的开发人员设定先接收NVMe写指令的DPU卡。例如,在另一些实施中,处理器100也可以先将NVMe写指令发送给DPU卡5’。
S1104:DPU卡5判断是否存在目标存储单元的有效访问路径。
示例性地,DPU卡5可以利用处理器531运行多路径模块5321来判断是否存在目标存储单元的有效访问路径。如果存在,说明可以通过DPU卡5来和目标存储单元进行数据交换,转至步骤S1105;否则,说明需要通过其他DPU卡来和目标存储单元进行数据交换,转至步骤S1106。具体的判断方法可以参考前述步骤S704的描述,在此不做赘述。
例如,对应于图9所示的情形,由于RDMA模块53与交换机4’间通信链路故障,控制器221与存储单元231/232间的通信链路故障,因此DPU卡5中不存在目标存储单元的有效访问路径,转至步骤S1106。
S1105:DPU卡5基于存在的有效访问路径向目标存储单元写入数据。
示例性地,DPU卡5在确定存在目标存储单元的有效访问路径时,基于存在的有效访问路径向目标存储单元写入数据。具体地过程可以参考前述步骤S705至步骤S710的描述,在此不做赘述。
S1106:DPU卡5向处理器100发送切卡请求。
示例性地,DPU卡5在确定不存在目标存储单元的有效访问路径时,向处理器发送切卡请求。
S1107:处理器100向DPU卡5’发送NVMe写指令。
示例性地,处理器100响应于切卡请求,向DPU卡5’发送NVMe写指令。该NVMe写指令中可以包括待写入数据在数据缓存05中的地址,以及要写入数据的存储单元(以下称为目标存储单元)的标识,例如前述LUN。
S1108:DPU卡5’判断是否存在目标存储单元的有效访问路径。
示例性地,DPU卡5’在接收到NVMe写指令后,可以利用处理器531’,根据NVMe写指令中的目标存储单元的标识,判断是否存在目标存储单元的有效访问路径。如果存在有效访问路径,则说明可以将待写入数据写入到目标存储单元中,转至步骤S1009;否则,说明不能将待写入数据写入到目标存储单元中,转至步骤S1110。具体地判断步骤可以参考前述步骤S704的描述,在此不做赘述。
例如,对应于图9所示的情形,虽然控制器221与存储单元231/232间的通信链路故障,RDMA网卡213与控制器222间的通信链路故障,但依次经过交换机4’、RDMA网卡214、控制器222来和存储单元232的通信链路正常,DPU卡5’可以将该条通信链路确定为有效访问路径。
S1109:DPU卡5’基于存在的有效访问路径向目标存储单元写入数据。
DPU卡5’在确定出存在的有效访问路径的情况下,基于存在的有效访问路径向目标存储单元写入数据。具体过程可以参考前述步骤S705至步骤S710的相关描述,在此不做赘述。
例如,对应图9所示的情形,DPU卡5’可以通过依次经过交换机4’、RDMA网卡214、控制器222来和存储单元232的通信链路来将待写入数据写入到存储单元231中。
S1110:DPU卡5’向处理器100发送NVMe写入失败响应。
示例性地,DPU卡5’在确定出不存在目标存储单元的有效访问路径时,向NVMe设备模拟器51发送NVMe写入失败响应。
通过本申请实施例提供的数据访问方法,计算设备1可以在一张DPU卡与目标存储单元的网络链路都存在故障的情况下,切换至另一张DPU卡来访问目标存储单元,有利于提高计算设备1访问目标存储单元的成功率,提升用户体验。
进一步,图12根据本申请的一些实施例,示出了一种DPU卡5的硬件结构框图。
如图12所示,DPU卡5包括NVMe设备模拟器51、处理器52、RDMA模块53、存储器55和接口模块56,并且,RDMA模块53包括处理器531和网络接口533。其中,NVMe设备模拟器51、处理器52、内存54、处理器531的功能和作用可以参考前述图5至图10所示的实施例,在此不做赘述。
网络接口533,用于实现DPU卡5与其他电子设备,例如前述存储设备2的网络连接。网络接口533可以包括至少一个以太网口,以太网口可以包括但不限于RJ-45接口,RJ-11接口,SC光纤接口,光纤分布式数据接口(fiber distributed data interface,FDDI)、Console接口等。
存储器55可以包括前述内存54,还可以包括其他的易失性存储器(volatilememory),或非易失性存储器(non-volatile memory),用于临时或永久地存储数据。在一些实施例中,存储器55可以用于存储上述数据访问方法的指令,例如前述NoF启动器521、OFED和驱动522、多路径模块5321、NoF引擎532等的指令;也可以用于存储上述数据访问方法相关的数据,例如DPU卡5与其他电子设备,例如存储设备2的各条网络链路的网络状态。
接口模块56可以是符号NVMe的任意接口,用于与电子设备连接,例如用于和计算设备连接。例如,接口模块54可包括但不限于外设部件互连标准(peripheral componentinterconnect,PCI)接口、PCIe接口、M.2接口等。
可以理解,图12所示的DPU卡5的结构只是一种示例,在另一些实施例中,DPU卡5可以包括更多或更少的模块,也可以合并或拆分部分模块,在此不做限定。
进一步,图13根据本申请的一些实施例,示出了一种计算设备1的结构示意图。如图13所示,计算设备1包括处理器100、存储器101、总线102和前述DPU卡5。
处理器100可以包括中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)、微处理器(micro processor,MP)或者数字信号处理器(digital signal processor,DSP)等处理器中的任意一种或多种。处理器100可以用于运行应用程序,并根据应用程序的需求,向DPU卡5发送NVMe指令,以便于DPU卡5可以利用前述各实施例提供的方法将NVMe指令对应的数据存储在DPU卡5连接的存储设备中,获从DPU卡5连接的存储设备中读取数据。
可以理解,在一些实施例中,处理器100还可以包括数据缓存,用于临时存储待向DPU卡5连接的存储设备写入的数据,或者从DPU卡5连接的存储设备中读取的数据。
存储器101可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM)。存储器100还可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-only memory,ROM),快闪存储器,机械硬盘(hard diskdrive,HDD)或固态硬盘(solid state drive,SSD)。
总线102用于耦接处理器100、存储器101和DPU卡5。例如,在一些实施例中,总线102可以包括PCIe总线,并且DPU卡5通过PCIe总线作为NVMe设备挂载在处理器100上。
DPU卡5可以与其他电子设备,例如前述存储设备2建立网络连接,并通过前述各实施例提供的方法来将数据存储到其他电子设备中或从其他电子设备中读取数据。
可以理解,在一些实施例中,DPU卡5可以是计算设备1的一部分,即计算设备1安装有DPU卡5;在另一些实施例中,DPU卡5也可以是一个独立的部件,在连接于计算设备1后,可以通过前述各实施例提供的数据访问方法来访问存储设备。
可以理解,在一些实施例中,DPU卡5可以安装于计算设备1的内部,也可以设置于计算设备1的外部,在此不做限定。
可以理解,前述计算设备1可以是任意能够连接DPU卡5的电子设备,包括但不限于膝上型计算机、台式计算机、服务器、工作站等。
可以理解,图13所示的计算设备1的结构只是一种示例,在另一些实施例中,计算设备1也可以包括更多或更少的模块,在此不做限定。
本申请实施例还提供了一种数据访问装置,可以用于实现上述方法实施例中任一DPU卡或任一计算设备所执行的功能。下面将结合本申请实施例中的图14,对通信装置1400的结构和功能进行具体的描述,图14是本申请实施例提供的数据访问装置1400的示意性框图。该数据访问装置1400可以包括至少一个处理器1401和供电电路1405,当涉及的程序指令在该至少一个处理器1401中执行时,可以使得该数据访问装置1400实现上述所有实施例所提供的数据访问方法及其任一设计中的DPU卡或者计算设备的功能。该供电电路1405可以用于为该处理器1401供电。可选的,该供电电路1405可以与处理器1401位于同一个芯片内,或位于处理器1401所在的芯片之外的另一个芯片内。可选的,该数据访问装置1400还可以包括至少一个存储器1402,该存储器1402可以用于存储所需的涉及的程序指令,和/或,数据。可选的,该数据访问装置1400还可以包括收发装置1403,该收发装置1403可以用于数据访问装置1400与其他通信设备(如无线或有线接入网设备,或者计算设备,或者计算设备,此处不做限定)进行通信交互,比如交互控制信令,和/或,业务数据等,该收发装置1403可通过具有通信收发功能的电路来实现。可选的,如图14所示,该数据访问装置1400还可以包括总线1404,该数据访问装置1400中的各个部分可以通过总线1404互联。
本申请实施例还提供了一种系统芯片1500。下面结合本申请实施例中的图15,对该系统芯片1500的结构和功能进行具体的描述,图15是本申请实施例提供的系统芯片1500的示意性框图。该系统芯片1500可以应用于前述任一DPU卡或任一计算设备中,通过该系统芯片的处理,使得DPU卡或计算设备能够进行本申请所有实施例所提供的数据访问方法及其任一可能的设计方案中DPU卡或计算设备的操作。如图15所示,该系统芯片1500可以包括至少一个处理器1501和供电电路1505,当涉及的程序指令在该至少一个处理器1501中执行时,实现本申请所有实施例所提供的提供的数据访问方法及其任一可能的设计方案中DPU卡或计算设备的操作。该供电电路1505可以用于为该处理器1501供电。可选的,该供电电路1505可以与处理器1501位于同一个芯片内,或位于处理器1501所在的芯片之外的另一个芯片内。可选的,该系统芯片1500还可以包括至少一个存储器1502,该存储器1502存储有涉及的程序指令。可选的,该系统芯片1500还可以包括接口电路1503和总线1504;该至少一个处理器1501,至少一个存储器1502,接口电路1503通过该总线1504耦合;该系统芯片1500通过该接口电路1503和计算设备,或者存储设备,或者网络中其他设备进行交互;可选的,上述处理器1501和存储器1502可以合成为一个处理装置。示例性的,具体实现时,该存储器1502也可以集成在处理器1501中,或者独立于处理器1501。
可以理解,处理器1401和处理器1501的类型和描述可以参考前述处理器52、处理器531的相关描述,在此不做赘述。可以理解,存储器1402和存储器1502类型和描述可以参考前述存储器55、存储器101的相关描述,在此不做赘述。
本申请公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本申请的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码应用于输入指令,以执行本申请描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本申请中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
在一些情况下,所公开的实施例可以以硬件、固件、软件或其任何组合来实现。所公开的实施例还可以被实现为由一个或多个暂时或非暂时性机器可读(例如,计算机可读)存储介质承载或存储在其上的指令,其可以由一个或多个处理器读取和执行。例如,指令可以通过网络或通过其他计算机可读介质分发。因此,机器可读介质可以包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制,包括但不限于,软盘、光盘、光碟、只读存储器(CD-ROMs)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存、或用于利用因特网以电、光、声或其他形式的传播信号来传输信息(例如,载波、红外信号数字信号等)的有形的机器可读存储器。因此,机器可读介质包括适合于以机器(例如,计算机)可读的形式存储或传输电子指令或信息的任何类型的机器可读介质。
在附图中,可以以特定布置和/或顺序示出一些结构或方法特征。然而,应该理解,可能不需要这样的特定布置和/或排序。而是,在一些实施例中,这些特征可以以不同于说明性附图中所示的方式和/或顺序来布置。另外,在特定图中包括结构或方法特征并不意味着暗示在所有实施例中都需要这样的特征,并且在一些实施例中,可以不包括这些特征或者可以与其他特征组合。
需要说明的是,本申请各设备实施例中提到的各单元/模块都是逻辑单元/模块,在物理上,一个逻辑单元/模块可以是一个物理单元/模块,也可以是一个物理单元/模块的一部分,还可以以多个物理单元/模块的组合实现,这些逻辑单元/模块本身的物理实现方式并不是最重要的,这些逻辑单元/模块所实现的功能的组合才是解决本申请所提出的技术问题的关键。此外,为了突出本申请的创新部分,本申请上述各设备实施例并没有将与解决本申请所提出的技术问题关系不太密切的单元/模块引入,这并不表明上述设备实施例并不存在其它的单元/模块。
需要说明的是,在本专利的示例和说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
虽然通过参照本申请的某些优选实施例,已经对本申请进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本申请的精神和范围。

Claims (19)

1.一种数据访问方法,应用于计算设备,其特征在于,所述计算设备包括第一网络接口卡;并且,所述方法包括:
所述第一网络接口卡检测到访问指令,所述访问指令用于访问存储设备中的目标存储器;
所述第一网络接口卡进行故障检测,从所述第一网络接口卡与所述目标存储器存在的多条网络链路中,确定出没有网络故障的第一网络链路;
所述第一网络接口卡通过所述第一网络链路访问所述目标存储器。
2.根据权利要求1所述的方法,其特征在于,所述第一网络接口卡是基于NoF协议和RDMA协议,通过所述第一网络链路访问所述目标存储器。
3.根据权利要求2所述的方法,其特征在于,所述第一网络接口卡通过总线接口连接于所述计算设备的主板,所述计算设备还包括设置于所述主板的第一处理器,并且所述访问指令由所述第一处理器生成。
4.根据权利要求3所述的方法,其特征在于,所述第一网络接口卡包括第二处理器,并且由所述第二处理器基于NoF协议和RDMA协议,通过所述第一网络链路访问所述目标存储器。
5.根据权利要求4所述的方法,其特征在于,所述第二处理器基于NoF协议和RDMA协议,通过所述第一网络链路访问所述目标存储器,包括下述至少一种:
在所述访问指令是向所述目标存储器写入第一数据的情况下,所述第二处理器从所述第一处理器中获取所述第一数据,并基于NoF协议和RDMA协议,通过所述第一网络链路将所述第一数据写入所述目标存储器;
在所述访问指令是从所述目标存储器读取第二数据的情况下,所述第二处理器基于NoF协议和RDMA协议,从所述目标存储器获取所述第二数据,并将所述第二数据发送给所述第一处理器。
6.根据权利要求4所述的方法,其特征在于,所述第一网络接口卡还包括第三处理器;并且,所述第二处理器是利用所述第一网络接口卡与所述存储设备间的NoF连接和RDMA连接,基于NoF协议和RDMA协议,通过所述第一网络链路访问所述目标存储器,其中,所述NoF连接和所述RDMA连接由所述第三处理器在所述第一网络接口卡启动时与所述存储设备建立。
7.根据权利要求1所述的方法,其特征在于,所述计算设备还包括第二网络接口卡;并且所述方法还包括:
所述第一网络接口卡在确定出所述第一网络接口卡与所述目标存储器不存在所述第一网络链路时,由所述第二网络接口卡利用所述第二网络接口卡与所述目标存储器间没有网络故障的第二网络链路,访问所述目标存储器。
8.根据权利要求1所述的方法,其特征在于,所述第一网络接口卡通过以下方式从所述第一网络接口卡与所述目标存储器存在的多条网络链路,确定出没有网络故障的第一网络链路:
所述第一网络接口卡在未从所述存储设备接收到指示所述第一网络链路故障的信息时,确定所述第一网络接口卡与所述目标存储器存在没有网络故障的第一网络链路。
9.根据权利要求6所述的方法,其特征在于,所述第二处理器或所述第三处理器为以下处理器中的任意一种:现场可编程逻辑门阵列、复杂可编程逻辑器件、领域特定架构、网络处理器、数字信号处理电路、微控制器,可编程控制器。
10.根据权利要求1所述的方法,其特征在于,所述访问指令为NVMe指令。
11.一种网络接口卡,其特征在于,包括:
总线接口,用于连接计算设备;
网络接口,用于通过网络连接远端存储设备;
第四处理器,用于在接收到所述计算设备发送的对所述存储设备中的目标存储器的访问指令时进行故障检测,从所述网络接口卡与所述存储设备存在的多条网络链路中,确定出没有网络故障的第一网络链路,并利用所述第一网络链路来访问所述目标存储器。
12.根据权利要求11所述的网络接口卡,其特征在于,所述网络接口卡还包括第五处理器,所述第五处理器用于在所述网络接口卡启动时,建立所述网络接口卡与所述存储设备的NoF连接和RDMA连接;并且所述第四处理器是通过以下方式利用所述第一网络链路来访问所述目标存储器:
所述第四处理器基于NoF协议和RDMA协议,利用所述NoF连接和所述RDMA连接访问所述目标存储器。
13.根据权利要求12所述的网络接口卡,其特征在于,所述第四处理器通过以下方式利用所述NoF连接和所述RDMA连接访问所述目标存储器:
在所述访问指令是向所述目标存储器写入第一数据的情况下,所述第四处理器从所述计算设备获取所述第一数据,并基于NoF协议和RDMA协议,通过所述第一网络链路将所述第一数据写入所述目标存储器;
和/或在所述访问指令是从所述目标存储器读取第二数据的情况下,所述第四处理器基于NoF协议和RDMA协议,从所述目标存储器获取所述第二数据,并将所述第二数据发送给所述计算设备。
14.根据权利要求12所述的网络接口卡,其特征在于,所述第四处理器或所述第五处理器为以下处理器中的任意一种:现场可编程逻辑门阵列、复杂可编程逻辑器件、领域特定架构、网络处理器、数字信号处理电路、微控制器,可编程控制器。
15.根据权利要求11所述的网络接口卡,其特征在于,所述访问指令为NVMe指令。
16.一种电子设备,其特征在于,所述电子设备包括权利要求9至13中任一项所述的网络接口卡。
17.一种电子设备,其特征在于,包括:
网络接口卡,所述网络接口卡包括:存储器和至少一个处理器;
其中,所述存储器中存储有指令,所述指令被所述至少一个处理器执行时,使所述电子设备实现权利要求1至10中任一项所述的数据访问方法。
18.一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令被网络接口卡执行时,使网络接口卡实现权利要求1至10中任一项所述的数据访问方法。
19.一种数据访问装置,其特征在于,包括:至少一个处理器和供电电路,所述供电电路用于为所述处理器供电,涉及的程序指令在所述至少一个处理器中执行,以使得所述数据访问装置实现权利要求1至10中任一项所述数据访问方法中的所述网络接口卡,或所述计算设备的功能。
CN202211091687.5A 2022-09-07 2022-09-07 数据访问方法、装置、网络接口卡、可读介质和电子设备 Pending CN117707861A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202211091687.5A CN117707861A (zh) 2022-09-07 2022-09-07 数据访问方法、装置、网络接口卡、可读介质和电子设备
PCT/CN2023/110993 WO2024051410A1 (zh) 2022-09-07 2023-08-03 数据访问方法、装置、网络接口卡、可读介质和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211091687.5A CN117707861A (zh) 2022-09-07 2022-09-07 数据访问方法、装置、网络接口卡、可读介质和电子设备

Publications (1)

Publication Number Publication Date
CN117707861A true CN117707861A (zh) 2024-03-15

Family

ID=90161179

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211091687.5A Pending CN117707861A (zh) 2022-09-07 2022-09-07 数据访问方法、装置、网络接口卡、可读介质和电子设备

Country Status (2)

Country Link
CN (1) CN117707861A (zh)
WO (1) WO2024051410A1 (zh)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8880935B2 (en) * 2012-06-12 2014-11-04 International Business Machines Corporation Redundancy and load balancing in remote direct memory access communications
CN110830283B (zh) * 2018-08-10 2021-10-15 华为技术有限公司 故障检测方法、装置、设备和系统
CN111857546A (zh) * 2019-04-28 2020-10-30 伊姆西Ip控股有限责任公司 用于处理数据的方法、网络适配器和计算机程序产品
CN114765631A (zh) * 2021-01-14 2022-07-19 华为技术有限公司 数据传输系统、数据传输方法以及网络设备
CN114885042A (zh) * 2021-01-21 2022-08-09 北京金山云网络技术有限公司 一种网络数据的传输方法、客户端、服务器及系统

Also Published As

Publication number Publication date
WO2024051410A1 (zh) 2024-03-14

Similar Documents

Publication Publication Date Title
US7676616B2 (en) Method, apparatus and program storage device for providing asynchronous status messaging in a data storage system
US6487619B1 (en) Multiprocessor system that communicates through an internal bus using a network protocol
US20020023189A1 (en) Apparatus and method for initializing a universal serial bus device
US20110320706A1 (en) Storage apparatus and method for controlling the same
US20130067123A1 (en) Methods and structure for improved i/o shipping in a clustered storage system
JP2021530813A (ja) 専用低レイテンシリンクを使用した複数のハードウェアアクセラレータのための統合されたアドレス空間
JP2006074797A (ja) 独立したエラー回復機能を有するスレーブ装置
US6327637B1 (en) Interface tap for 1394-enabled serial bus device
CN111552658B (zh) 一种通信方法、通信控制装置及i2c总线系统
CN111459632B (zh) 一种供终端应用程序调用的串口代理及实现方法
JP6183931B2 (ja) クラスタシステム、サーバ装置、クラスタシステムの管理方法、及びプログラム。
WO2014206078A1 (zh) 内存访问方法、装置及系统
CN107209725A (zh) 处理写请求的方法、处理器和计算机
CN115374046B (zh) 一种多处理器数据交互方法、装置、设备及存储介质
JP4755050B2 (ja) データ処理装置、モード管理装置、及びモード管理方法
JP4080970B2 (ja) パス切替えを提供するスイッチ
US6292488B1 (en) Method and apparatus for resolving deadlocks in a distributed computer system
CN114064552B (zh) 节点控制器、多处理器系统和用于维持缓存一致性的方法
CN107911372B (zh) 一种基于逻辑器件实现串口设备接入以太网的方法和装置
CN112104729A (zh) 一种存储系统及其缓存方法
CN117707861A (zh) 数据访问方法、装置、网络接口卡、可读介质和电子设备
JP5341198B2 (ja) 通信インタフェースにおけるビット反転
CN113626139B (zh) 一种高可用的虚拟机存储方法及装置
KR20050080704A (ko) 프로세서간 데이터 전송 장치 및 방법
CN110990313B (zh) 一种i3c总线处理时钟拉伸的方法、设备以及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination