CN113778320A - 网卡以及网卡处理数据的方法 - Google Patents
网卡以及网卡处理数据的方法 Download PDFInfo
- Publication number
- CN113778320A CN113778320A CN202011038826.9A CN202011038826A CN113778320A CN 113778320 A CN113778320 A CN 113778320A CN 202011038826 A CN202011038826 A CN 202011038826A CN 113778320 A CN113778320 A CN 113778320A
- Authority
- CN
- China
- Prior art keywords
- data
- network card
- processing engine
- hardware processing
- processed
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 236
- 238000000034 method Methods 0.000 title claims abstract description 154
- 230000015654 memory Effects 0.000 claims abstract description 207
- 230000008569 process Effects 0.000 claims abstract description 85
- 238000004364 calculation method Methods 0.000 claims description 65
- 238000012937 correction Methods 0.000 claims description 45
- 230000004044 response Effects 0.000 claims description 26
- 230000006837 decompression Effects 0.000 claims description 13
- 238000013144 data compression Methods 0.000 claims description 8
- 238000003860 storage Methods 0.000 description 127
- 230000001133 acceleration Effects 0.000 description 19
- 238000007906 compression Methods 0.000 description 15
- 230000006835 compression Effects 0.000 description 15
- 230000005540 biological transmission Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 6
- 238000007726 management method Methods 0.000 description 5
- 230000003111 delayed effect Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000004088 simulation Methods 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 238000005538 encapsulation Methods 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000012005 ligant binding assay Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 229910021421 monocrystalline silicon Inorganic materials 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1748—De-duplication implemented within the file system, e.g. based on file segments
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1044—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
- G06F3/0641—De-duplication techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种网卡,包括:处理器和硬件处理引擎,处理器用于获取第一IO命令,其指示将本端服务器中存储的第一数据写入至少一个对端服务器中;处理器还用于向硬件处理引擎发送第一指示信息,用于指示硬件处理引擎从本端服务器中获取第一数据,指示信息包括第一数据存储在本端服务器的地址信息和长度信息;硬件处理引擎用于在根据地址信息和长度信息从本端服务器中获取第一数据的过程中,直接对第一数据进行处理,并将处理后的第一数据发送给至少一个对端服务器,第一数据不存储在网卡的存储器中。本申请提供的网卡在对数据进行存储业务处理时,可以减小网卡总线的压力以及网卡存储器的消耗。
Description
技术领域
本申请涉及服务器技术领域,更具体地,涉及一种网卡以及网卡处理数据的方法。
背景技术
随着云计算的兴起,为了减少对主机处理器(例如,中央处理器(centralprocessing unit,CPU))的占用率,让更多的主机CPU用来提供对外的售卖,或者是让用户的体验更好,让用户的CPU免受更多主机后台业务的影响。可以将原来运行在主机上的业务,例如管理业务、存储业务、网络业务等都卸载到网卡上,由网卡上的CPU对上述业务进行处理,这样,主机的CPU基本上可以全部提供给用户。
以存储业务为例,相关的技术方案中,对于输入输出(input output,IO)写命令,网卡需要将主机中要写的数据存储至网卡的存储器中,网卡的处理器再从网卡的存储器中获取该数据,对该数据进行存储业务的处理后,并将处理后的数据写入目的存储设备。对于IO读命令,网卡需要将从目的存储设备获取的数据先存储至网卡的存储器中,网卡的处理器再从网卡的存储器中获取该数据,并对该数据进行存储业务的处理后,将处理后的数据写入主机。
上述相关的技术方案中,一方面,由于网卡在对数据进行存储业务处理时,需要通过总线反复从网卡的存储器中获取数据,这给网卡的总线带来很大的压力。另一方面,网卡需要大量的存储器来存放这些处理后的数据,这些数据的存放和管理大大增加了程序的复杂度和网卡存储器资源的消耗。
发明内容
本申请提供一种网卡,可以在对数据进行存储业务处理时,减小网卡总线的压力以及网卡存储器的消耗。
第一方面,提供了一种网卡,包括:处理器和硬件处理引擎,
所述处理器,用于获取第一输入输出IO命令,所述第一IO命令指示将本端服务器中存储的第一数据写入至少一个对端服务器中;
所述处理器,还用于向所述硬件处理引擎发送第一指示信息,所述第一指示信息用于指示所述硬件处理引擎从所述本端服务器中获取所述第一数据,所述第一指示信息中包括所述第一数据存储在所述本端服务器的地址信息和长度信息;
所述硬件处理引擎,用于在根据所述地址信息和长度信息从所述本端服务器中获取所述第一数据的过程中,直接对所述第一数据进行处理,并将处理后的第一数据发送给所述至少一个对端服务器,所述第一数据不存储在所述网卡的存储器中。
上述网卡从主机的存储器中获取数据的过程中就直接对该数据进行存储业务的处理,并直接将处理之后的数据发送给对端的目的存储设备。从主机的存储器中获取的数据不存储在网卡的存储器中,处理之后的数据也不存储在网卡的存储器中,而是直接就发送给目的存储设备。这样,一方面,由于网卡在对数据进行存储业务处理时,不需要通过总线反复从网卡的存储器中获取数据,减小了网卡的总线的压力。另一方面,网卡中不需要大量的存储器来存放这些处理后的数据,可以减小程序的复杂度和对存储器资源的消耗。
在一种可能的实现方式中,所述第一指示信息还用于指示所述硬件处理引擎对所述第一数据进行以下的任意一种或多种组合的处理:数据的指纹计算、数据的去重处理、数据加密、数据压缩、数据冗余纠错编码计算,
所述硬件处理引擎具体用于:在根据所述地址信息和长度信息从所述本端服务器中获取所述第一数据的过程中,根据所述第一指示信息直接对所述第一数据进行所述处理。
在另一种可能的实现方式中,数据冗余纠错编码计算例如可以是纠删码(erasurecode,EC)计算。
在另一种可能的实现方式中,所述第一指示信息指示所述硬件处理引擎对所述第一数据进行指纹计算,所述硬件处理引擎具体用于:对所述第一数据进行所述指纹计算,得到所述第一数据对应的指纹信息;
所述硬件处理引擎,还用于向所述处理器发送所述第一数据对应的指纹信息;
所述处理器,还用于异步地根据所述第一数据对应的指纹信息进行去重处理。
在另一种可能的实现方式中,所述硬件处理引擎具体用于:在所述第一数据处理完之后,将所述处理后的第一数据放入所述硬件处理引擎的发送队列中,并发送至所述至少一个对端服务器;
所述处理器,还用于在所述第一数据中包括重复数据的情况下,通过所述硬件处理引擎向存储有所述重复数据的对端服务器发送第二指示信息,所述第二指示信息用于删除所述重复数据。
在另一种可能的实现方式中,所述硬件处理引擎具体用于:在所述第一数据处理完之后,向所述处理器发送通知消息,所述通知消息用于通知所述处理器发送所述第一数据;
所述处理器,还用于在将所述处理后的第一数据放入所述硬件处理引擎的发送队列的过程中,如果确定所述第一数据中包括重复数据,不再向所述发送队列下发所述重复数据,或者
还用于在将所述处理后的第一数据放入所述硬件处理引擎的发送队列后,如果确定所述第一数据中包括重复的数据,通过所述硬件处理引擎向存储有所述重复数据的对端服务器发送第二指示信息,所述第二指示信息用于删除所述重复的数据。
在另一种可能的实现方式中,所述第一指示信息中包括多组地址信息和长度信息,所述处理器,还用于根据所述第一数据存储在所述本端服务器的地址信息和长度信息对所述第一数据进行拆分,得到所述多组地址信息和长度信息。
在另一种可能的实现方式中,所述处理后的第一数据包括所述处理后的第一数据和所述处理后的第一数据对应的冗余纠错数据,所述冗余纠错数据存储在所述网卡的存储器中,所述处理后的第一数据不存储在所述网卡的存储器中,
所述硬件处理引擎,用于从所述网卡的存储器中获取所述冗余纠错数据,从所述本端服务器中重新获取所述处理器后的第一数据;
所述硬件处理引擎,用于将所述处理后的第一数据和所述冗余纠错数据发送给所述至少一个对端服务器。
应理解,冗余纠错数据可以是对处理后的第一数据进行数据冗余纠错编码计算(例如,EC计算)得到的。
在另一种可能的实现方式中,所述处理后的第一数据包括所述处理后的第一数据和所述处理后的第一数据对应的冗余纠错数据,所述冗余纠错数据存储在所述网卡的存储器中,所述处理后的第一数据存储在所述硬件处理引擎的本地,
所述硬件处理引擎,用于从所述网卡的存储器中获取所述冗余纠错数据,从所述本地获取所述处理后的第一数据;
所述硬件处理引擎,用于将所述处理后的第一数据和所述冗余纠错数据发送给所述至少一个对端服务器。
在另一种可能的实现方式中,所述处理器,还用于从对端服务器接收第一IO读响应消息,所述第一IO读响应消息中包括本端服务器需要从所述对端服务器获取的第二数据;
所述硬件处理引擎,还用于对所述第二数据进行处理,并直接将处理后的第二数据写入所述本端服务器中,所述第二数据不存储在所述网卡的存储器中。
在另一种可能的实现方式中,所述硬件处理引擎,还用于确定对所述第二数据进行以下的任意一种或多种的组合的处理:数据解密、数据解压缩。
在另一种可能的实现方式中,所述第一IO读响应消息中携带解密信息,所述硬件处理引擎具体用于:根据所述解密信息确定并对所述第二数据进行解密。
第二方面,提供了一种网卡,包括:处理器和硬件处理引擎,
所述处理器,用于从对端服务器接收第一IO读响应消息,所述第一IO读响应消息中包括本端服务器需要从所述对端服务器获取的第二数据;
所述硬件处理引擎,用于对所述第二数据进行处理,并直接将处理后的第二数据写入所述本端服务器中,所述第二数据不存储在所述网卡的存储器中。
在一种可能的实现方式中,所述硬件处理引擎,还用于确定对所述第二数据进行以下的任意一种或多种的组合的处理:数据解密、数据解压缩。
在另一种可能的实现方式中,所述第一IO读响应消息中携带解密信息,所述硬件处理引擎具体用于:根据所述解密信息确定并对所述第二数据进行解密。
第三方面,提供了一种网卡处理数据的方法,所述网卡包括处理器和硬件处理引擎,所述方法包括:
所述网卡的处理器获取第一输入输出IO命令,所述第一IO命令指示将本端服务器中存储的第一数据写入至少一个对端服务器中;
所述网卡的处理器向所述硬件处理引擎发送第一指示信息,所述第一指示信息用于指示所述硬件处理引擎从所述本端服务器中获取所述第一数据,所述第一指示信息中包括地址信息和长度信息;
所述网卡的硬件处理引擎在根据所述地址信息和长度信息从所述本端服务器中获取所述第一数据的过程中,直接对所述第一数据进行处理,并将处理后的第一数据发送给所述至少一个对端服务器,所述第一数据不存储在所述网卡的存储器中。
在一种可能的实现方式中,所述第一指示信息还用于指示所述硬件处理引擎对所述第一数据进行以下的任意一种或多种组合的处理:数据的指纹计算、数据的去重处理、数据加密、数据压缩、数据冗余纠错编码计算,所述网卡的硬件处理引擎在根据所述地址信息和长度信息从所述本端服务器中获取所述第一数据的过程中,根据所述第一指示信息直接对所述第一数据进行所述处理。
在另一种可能的实现方式中,数据冗余纠错编码计算例如可以是纠删码(erasurecode,EC)计算。
在另一种可能的实现方式中,所述第一指示信息指示所述硬件处理引擎对所述第一数据进行指纹计算,所述网卡的硬件处理引擎对所述第一数据进行所述指纹计算,得到所述第一数据对应的指纹信息;所述网卡的硬件处理引擎向所述处理器发送所述第一数据对应的指纹信息;所述网卡的处理器根据所述第一数据对应的指纹信息进行去重处理。
在另一种可能的实现方式中,所述方法还包括:所述网卡的硬件处理引擎在所述第一数据处理完之后,将所述处理后的第一数据放入所述硬件处理引擎的发送队列中,并发送至所述至少一个对端服务器;所述网卡的处理器在所述第一数据中包括重复数据的情况下,通过所述硬件处理引擎向存储有所述重复数据的对端服务器发送第二指示信息,所述第二指示信息用于删除所述重复数据。
在另一种可能的实现方式中,所述方法还包括:所述网卡的硬件处理引擎在所述第一数据处理完之后,向所述处理器发送通知消息,所述通知消息用于通知所述处理器发送所述第一数据;所述网卡的处理器在将所述处理后的第一数据放入所述硬件处理引擎的发送队列的过程中,如果确定所述第一数据中包括重复数据,不再向所述发送队列下发所述重复数据;或者所述网卡的处理器在将所述处理后的第一数据放入所述硬件处理引擎的发送队列后,如果确定所述第一数据中包括重复的数据,通过所述硬件处理引擎向存储有所述重复数据的对端服务器发送第二指示信息,所述第二指示信息用于删除所述重复的数据。
在另一种可能的实现方式中,所述第一指示信息中包括多组地址信息和长度信息,所述方法还包括:所述网卡的处理器根据所述第一数据存储在所述本端服务器的地址信息和长度信息对所述第一数据进行拆分,得到所述多组地址信息和长度信息。
在另一种可能的实现方式中,所述处理后的第一数据包括所述处理后的第一数据和所述处理后的第一数据对应的冗余纠错数据,所述冗余纠错数据存储在所述网卡的存储器中,所述处理后的第一数据不存储在所述网卡的存储器中,所述方法还包括:所述网卡的硬件处理引擎从所述网卡的存储器中获取所述冗余纠错数据,从所述本端服务器中重新获取所述处理器后的第一数据;所述网卡的硬件处理引擎将所述处理后的第一数据和所述冗余纠错数据发送给所述至少一个对端服务器。
在另一种可能的实现方式中,所述处理后的第一数据包括所述处理后的第一数据和所述处理后的第一数据对应的冗余纠错数据,所述冗余纠错数据存储在所述网卡的存储器中,所述处理后的第一数据存储在所述硬件处理引擎的本地,所述方法还包括:所述网卡的硬件处理引擎从所述网卡的存储器中获取所述冗余纠错数据,从所述本地获取所述处理后的第一数据;所述网卡的硬件处理引擎将所述处理后的第一数据和所述冗余纠错数据发送给所述至少一个对端服务器。
在另一种可能的实现方式中,所述方法还包括:所述网卡的处理器从对端服务器接收第一IO读响应消息,所述第一IO读响应消息中包括本端服务器需要从所述对端服务器获取的第二数据;所述网卡的硬件处理引擎对所述第二数据进行处理,并直接将处理后的第二数据写入所述本端服务器中,所述第二数据不存储在所述网卡的存储器中。
在另一种可能的实现方式中,所述方法还包括:所述网卡的硬件处理引擎确定对所述第二数据进行以下的任意一种或多种的组合的处理:数据的指纹计算、数据的去重处理、数据解密、数据解压缩。
在另一种可能的实现方式中,所述方法还包括:所述网卡的硬件处理引擎根据所述解密信息确定并对所述第二数据进行解密。
第三方面和第三方面的任意一个可能的实现方式的有益效果和第一方面以及第一方面的任意一个可能的实现方式的有益效果是对应的,对此,不再赘述。
第四方面,提供了一种网卡处理数据的方法,所述网卡包括处理器和硬件处理引擎,所述方法包括:所述网卡的处理器从对端服务器接收第一IO读响应消息,所述第一IO读响应消息中包括本端服务器需要从所述对端服务器获取的第二数据;所述网卡的硬件处理引擎对所述第二数据进行处理,并直接将处理后的第二数据写入所述本端服务器中,所述第二数据不存储在所述网卡的存储器中。
在一种可能的实现方式中,所述方法还包括:所述网卡的硬件处理引擎确定对所述第二数据进行以下的任意一种或多种的组合的处理:数据解密、数据解压缩。
在另一种可能的实现方式中,所述第一IO读响应消息中携带解密信息,所述方法还包括:所述网卡的硬件处理引擎根据所述解密信息确定并对所述第二数据进行解密。
第五方面,提供了一种网卡,包括:处理器和存储器,所述处理器运行所述存储器中的指令,使得所述计算设备执行如上述第一方面或第一方面的任意一种可能的实现方式中所执行的方法步骤。
第六方面,提供了一种网卡,包括处理器和存储器,所述处理器运行所述存储器中的指令,使得所述计算设备执行如上述第二方面或第二方面的任意一种可能的实现方式中所执行的方法步骤。
第七方面,提供了一种服务器,包括如上述第一方面或第一方面的任意一种可能的实现方式中的网卡或上述第五方面或第五方面的任意一种可能的实现方式中的网卡。
第八方面,提供了一种服务器,包括如上述第二方面或第二方面的任意一种可能的实现方式中的网卡或上述第六方面或第六方面的任意一种可能的实现方式中的网卡。
第九方面,提供了一种计算机可读存储介质,包括指令;所述指令用于实现如第三方面或第三方面的任意一种可能的实现方式中所执行的方法步骤。
可选地,作为一种实现方式,上述存储介质具体可以是非易失性存储介质。
第十方面,提供了一种计算机可读存储介质,包括指令;所述指令用于实现如第四方面或第四方面的任意一种可能的实现方式中所执行的方法步骤。
可选地,作为一种实现方式,上述存储介质具体可以是非易失性存储介质。
第十一方面,提供一种芯片,该芯片获取指令并执行该指令来实现上述第三方面以及第三方面的任意一种实现方式中的方法。
可选地,作为一种实现方式,该芯片包括处理器与数据接口,该处理器通过该数据接口读取存储器上存储的指令,执行上述第三方面以及第三方面的任意一种实现方式中的方法。
可选地,作为一种实现方式,该芯片还可以包括存储器,该存储器中存储有指令,该处理器用于执行该存储器上存储的指令,当该指令被执行时,该处理器用于执行第三方面以及第三方面中的任意一种实现方式中的方法。
第十二方面,提供一种芯片,该芯片获取指令并执行该指令来实现上述第四方面或第四方面的任意一种可能的实现方式中的方法。
可选地,作为一种实现方式,该芯片包括处理器与数据接口,该处理器通过该数据接口读取存储器上存储的指令,实现上述第四方面或第四方面的任意一种可能的实现方式中的方法。
可选地,作为一种实现方式,该芯片还可以包括存储器,该存储器中存储有指令,该处理器用于执行该存储器上存储的指令,当该指令被执行时,该处理器用于实现第四方面或第四方面的任意一种可能的实现方式中的方法。
附图说明
图1是本申请实施例提供的一种架构示意图。
图2是本申请实施例提供的一种应用场景示意图。
图3是本申请实施例提供的一种网卡对数据进行处理的方法的示意性流程图。
图4是本申请实施例提供的一种网卡400的结构示意图。
图5是本申请实施例提供的一种网卡对IO写命令进行处理的方法的示意性流程图。
图6是本申请实施例提供的一种数据拆分过程的示意性框图。
图7是本申请实施例提供的一种业务加速引擎450对数据进行存储业务处理的方法示意性流程图。
图8是本申请实施例提供的一种网卡对IO读命令进行处理的方法的示意性流程图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
本申请将围绕包括多个设备、组件、模块等的系统来呈现各个方面、实施例或特征。应当理解和明白的是,各个系统可以包括另外的设备、组件、模块等,并且/或者可以并不包括结合附图讨论的所有设备、组件、模块等。此外,还可以使用这些方案的组合。
另外,在本申请实施例中,“示例的”、“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用示例的一词旨在以具体方式呈现概念。
本申请实施例中,“相应的(corresponding,relevant)”和“对应的(corresponding)”有时可以混用,应当指出的是,在不强调其区别时,其所要表达的含义是一致的。
本申请实施例描述的网络架构以及业务场景是为了更加清楚地说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着网络架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:包括单独存在A,同时存在A和B,以及单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
随着云计算的兴起,为了减少对主机处理器(例如,中央处理器(centralprocessing unit,CPU))的占用率,让更多的主机CPU用来提供对外的售卖,或者是让用户的体验更好,让用户的CPU免受更多主机后台业务的影响。如图1所示,现在的云计算厂家逐渐将原来运行在主机上的管理业务、存储业务、网络业务等都卸载到网卡上,由网卡上的CPU对上述业务进行处理,这样,主机的CPU基本上可以全部提供给用户。
下面以图2所示的应用场景为例,对存储业务进行详细描述。
如图2所示,该场景中可以包括主机210、网卡220、目的存储设备230。下面分别对各个设备进行详细描述。
1、主机210
主机210中可以包括至少一个处理器211以及存储器212。
可选地,主机210中还包括系统总线213。其中,至少一个处理器211和存储器212分别与系统总线213连接。
处理器211能够通过系统总线213访问存储器212,例如,处理器211能够通过系统总线在存储器212中进行数据读写或代码执行。该系统总线213例如可以是快速路径互连(quick path interconnect,QPI)或超路径互连(ultra path interconnect,UPI)等。所述系统总线213分为地址总线、数据总线、控制总线等。为便于表示,图2中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
一种可能的实现方式,处理器211的功能主要是解释计算机程序的指令(或者说,代码)以及处理计算机软件中的数据。其中,该计算机程序的指令以及计算机软件中的数据能够保存在存储器212中。
处理器211是主机210的运算核心和控制核心(control unit)。处理器211中可以包括多个处理器核(core)。处理器211中所有的计算、接受命令、存储命令、处理数据都由处理器核(core)执行。处理器核(core)分别独立地运行程序指令,利用并行计算的能力加快程序的运行速度。处理器核(core)具有固定的逻辑结构,例如,包括一级缓存、二级缓存、执行单元、指令级单元和总线接口等逻辑单元。
可选地,处理器211可能是集成电路芯片,并具有信号的处理能力。作为示例而非限定,处理器110是通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(fieldprogrammable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。其中,通用处理器是微处理器等。例如,该处理器110是中央处理单元(central processing unit,CPU)。
存储器212是主机210的主存(也可以称为主机210的内存)。存储器212通常用来存放操作系统中各种正在运行的软件程序、上层应用下发的输入输出(input output,IO)命令以及与外存交换的信息等。为了提高处理器211的访问速度,存储器212需要具备访问速度快的优点。在一些计算机系统架构中,采用动态随机存取存储器(dynamic randomaccess memory,DRAM)作为存储器212。处理器211能够通过内存控制器(图1中未示出)高速访问存储器212,对存储器212中的任意一个存储单元进行读操作和写操作。
还应理解,本申请实施例中的存储器212可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的随机存取存储器(random accessmemory,RAM)可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
2、网卡220
网卡220用于实现主机210与通信网络中的其他服务器(例如,图1所示的目的存储设备230)之间的通讯。网卡220可以内置在主机210中,或者还可以作为主机210的外接设备,并通过接口与主机210连接。该接口例如可以是总线和接口标准(peripheralcomponent interface express,PCIE)接口。
为了便于描述,图2中以网卡220作为主机210的外接设备进行描述。
网卡220也可以包括存储器222、处理器221。可选地,网卡220还可以包括总线223。网卡220的内部结构可以与主机210类似,具体的请参考上文对主机210中各部分的描述,此处不再赘述。
3、目的存储设备230
目的存储设备230也可以包括存储器、处理器、网卡。可选地,目的存储设备230还可以包括总线。目的存储设备230的内部结构可以与主机210类似,具体的请参考上文对主机210中各部分的描述,此处不再赘述。
在数据处理和通信的场景中,以主机210作为本端,以目的存储设备230作为通信的对端。主机210上的虚拟机(virtual machine,VM)下发输入输出(input output,IO)命令,主机210上的处理器211可以将上述IO命令通过总线213发送至存储器212。网卡220从存储器212中获取上述IO命令,并对上述IO命令进行处理。
以IO命令为读命令和写命令作为示例,读命令是指由主机上运行的应用程序(例如,VM)下发的用于指示向远端设备(例如,目的存储设备)读数据,写命令是指由主机上运行的应用程序(例如,VM)下发的用于指示向远端设备写数据的命令。主机的处理器可以接收IO命令,并将其存储在存储器中,以使得IO命令等待被网卡220处理后发送给作为通信对端的目的存储设备230。
以IO写命令为例,网卡220在将主机210的存储器212中存储的IO写数据发送到目的存储设备230之前,还需要对该IO写数据进行存储业务的处理,再将处理之后的数据发送至目的存储设备230。本申请实施例对IO写过程中的存储业务的处理不做具体限定,可以包括但不限于:数据的去重处理,数据的加密处理,数据的压缩处理,数据冗余纠错编码计算(例如,EC计算)等。
以IO读命令为例,网卡220在从目的存储设备230获得需要读取的数据后,可以对IO读数据进行存储业务的处理,再将处理之后的数据存储至存储器212中。本申请实施例对IO读过程中的存储业务的处理不做具体限定,可以包括但不限于:数据的解密处理,数据的解压缩处理等。
相关的技术方案中,以该IO命令为IO写命令为例,网卡220需要将IO从主机210的存储器212中搬移到网卡220的存储器222中,通过网卡220的处理器221对存储器222中的IO写数据进行存储业务的处理。之后再将处理之后的数据存储在网卡220的存储器222中,以便网卡220的处理器221对存储器222中的数据进行下一步的处理。
以该IO命令为IO读命令为例,网卡220在从目的存储设备230获得需要读取的数据后,需要将数据先存储在网卡220的存储器222中,通过网卡220的处理器221对存储器222中的IO写数据进行存储业务的处理。之后再将处理之后的数据存储在网卡220的存储器222中,以便网卡220的处理器221将存储器222中的数据写入主机210的存储器212中。
在上述相关的技术方案中,一方面,由于网卡220在对数据进行存储业务处理时,需要通过总线223反复从网卡220的存储器222中获取数据,这给网卡220的总线223带来很大的压力。另一方面,网卡220需要大量的存储器222来存放这些处理后的数据,这些数据的存放和管理大大增加了程序的复杂度和存储器222资源的消耗。
有鉴于此,本申请提出了一种网卡,其从主机的存储器中获取数据的过程中就直接对该数据进行存储业务的处理,并直接将处理之后的数据发送给对端的目的存储设备。从主机的存储器中获取的数据不存储在网卡的存储器中,处理之后的数据也不存储在网卡的存储器中,而是直接就发送给目的存储设备。这样,一方面,由于网卡在对数据进行存储业务处理时,不需要通过总线反复从网卡的存储器中获取数据,减小了网卡的总线的压力。另一方面,网卡中不需要大量的存储器来存放这些处理后的数据,可以减小程序的复杂度和对存储器资源的消耗。
下面结合图3,对本申请实施例提供的一种网卡对数据进行处理的方法进行详细的介绍。
图3是本申请实施例提供的一种网卡对数据进行处理的方法的示意性流程图。如图3所示,该方法可以包括步骤310-330,下面分别对步骤310-330进行详细描述。
步骤310:网卡的处理器获取第一输入输出IO命令,所述第一IO命令指示将本端服务器中存储的第一数据写入至少一个对端服务器。
第一IO命令中还可以包括数据存储在本端服务器的地址信息和长度信息。
本申请实施例中,第一IO命令可以用于指示将存储在本端服务器中的数据写入至少一个对端服务器。作为示例,该数据可以存储在本端服务器的内存中。
一个示例,上述本端服务器可以是图2中的主机210。上述对端服务器可以是一个存储设备,或者是具有计算能力的计算设备。一个示例,对端服务器为图2中的目的存储设备230。
网卡可以作为本端服务器的外接设备,并通过接口与本端服务器连接。该接口可以是总线和接口标准(peripheral component interface express,PCIE)接口。具体的连接关系请参考图2中的描述,此处不再赘述。
步骤320:网卡的处理器向网卡的硬件处理引擎发送第一指示信息,所述第一指示信息用于指示所述硬件处理引擎从所述本端服务器中获取所述第一数据,所述第一指示信息中包括所述第一数据存储在所述本端服务器的地址信息和长度信息。
网卡的处理器在对上述第一IO命令进行处理后,可以向网卡的硬件处理引擎发送第一指示信息。作为示例,网卡的处理器可以基于上述第一IO命令中数据存储在本端服务器的地址信息和长度信息,对所述地址信息和长度信息对所述数据进行拆分,得到多组地址信息和长度信息。
应理解,数据的地址信息和长度信息可以用来描述本端服务器的存储器中存储的一个数据块。
步骤330:网卡的硬件处理引擎在根据所述地址信息和长度信息从所述本端服务器中获取所述第一数据的过程中,直接对所述第一数据进行处理,并将处理后的第一数据发送给所述至少一个对端服务器,所述第一数据不存储在所述网卡的存储器中。
网卡的硬件处理引擎在接收到网卡的处理器发送的第一指示信息后,可以基于第一指示信息中携带的第一数据的地址信息和长度信息,从本端服务器中获取所述第一数据。并且,网卡的硬件处理引擎在获取所述第一数据的过程中,就直接对该第一数据进行存储业务的处理,并将处理后的第一数据发送给所述至少一个对端服务器。
本申请实施例中,网卡的存储器可以不需要存储第一数据,这样,一方面,由于数据不需要从本端服务器的存储器中读取数据到网卡的存储器中,可以减小网卡总线的压力,也减小了网卡处理器的开销。另一方面,网卡不需要大量的存储器来存放要写的数据,降低了程序的复杂度和存储器资源的消耗。
上述技术方案中,网卡从主机的存储器中获取数据的过程中就直接对该数据进行存储业务的处理,并直接将处理之后的数据发送给对端的目的存储设备。从主机的存储器中获取的数据不存储在网卡的存储器中,处理之后的数据也不存储在网卡的存储器中,而是直接就发送给目的存储设备。这样,一方面,由于网卡在对数据进行存储业务处理时,不需要通过网卡的总线反复从网卡的存储器中获取数据,减小了网卡的总线压力。另一方面,网卡中不需要大量的存储器来存放这些处理后的数据,可以减小程序的复杂度和对网卡存储器资源的消耗。
下面结合图4,对本申请实施例提供的一种可能的网卡的结构进行详细描述。
图4是本申请实施例提供的一种网卡400的结构示意图。如图4所示,该网卡400通过PCIE接口与主机210连接。
网卡400中可以包括:数据平面卸载引擎410、内存控制器420、CPU核430、内存470、系统总线460。
1、数据平面卸载引擎410
数据平面卸载引擎410也可以指上文中的硬件处理引擎。作为示例,数据平面卸载引擎410可以由硬件逻辑或现成可编程门阵列(field programmable gate array,FPGA)或网络处理器(network processor,NP)这样的专门支持数据面处理的专用处理架构的引擎组成。其特点就是能够对报文进行快速的转发处理,但不适合做复杂协议处理。
应理解,数据平面卸载引擎410比较适合做网络转发的处理,所以通常网络转发的数据面可以由其承担。但存储业务的数据面,由于业务的复杂性,很难完全由其直接完成,通常需要CPU核430来完成。
数据平面卸载引擎410可以通过PCIE接口与主机210连接,用于获取主机210的存储器212中存储的数据。数据平面卸载引擎410还可以通过系统总线460与CPU核430、内存控制器420相连,可实现数据平面卸载引擎410内部的各个模块与CPU核430以及内存控制器420之间的高速通信。
数据平面卸载引擎410内部可以包括:设备模拟模块411、IO命令处理模块412、数据调度模块413、网络协议处理引擎440、业务加速引擎450。
下面分别对数据平面卸载引擎410中包括的各个模块的功能进行详细描述。
设备模拟模块411,主要用于实现设备的模拟,以便于网卡400对主机或主机上运行的虚拟机VM呈现出所需的设备,例如,存储、网络等设备的模拟。作为示例,设备模拟模块411用于实现非易失性内存主机控制器接口规范(non-volatile memory express,NVMe)存储设备、小型计算机系统接口(small computer system interface,SCSI)设备、虚拟的小型计算机系统接口(virtio-SCSI)设备、virtio-BLK设备、virtio的其他类型的设备的呈现。
应理解,设备模拟也可以由硬件逻辑和CPU核共同完成,通常强数据交互的由数据面卸载引擎完成,配置相关的由CPU核配合完成。
IO命令处理模块412,用于对IO命令进行简单的分析处理。作为一个示例,可以用于确定IO命令是读命令还是写命令。作为另一个示例,对于IO的读写命令,通常需要走调度,从而保证设备IO的服务质量(quality of service,Qos)。
数据调度模块413,用于对多个IO命令进行调度。作为一个示例,该调度可以包括对数据的Qos处理。例如,为了避免一个VM或者一个卷的负载不合理,需要限制每个设备的带宽和包率。对于存储IO数据,通常还需要要基于卷的每秒的输入输出操作(input outputoperation per second,IOPS)、带宽和整个VM的IOPS和带宽管理对IO命令进行调度。
业务加速引擎450,主要用于对数据进行存储业务处理。本申请实施例对存储业务的处理过程不做具体限定,可以包括以下中的任意一种或任意多种的组合:指纹计算、压缩、解压缩、加密、解密、EC计算等。
作为示例,业务加速引擎450中可以包括:指纹计算引擎451、压缩引擎452、加密引擎453、EC计算引擎454、解密引擎455、解压缩引擎456。
业务加速引擎450可以通过总线460与CPU核430进行高速通信。在纵向,业务加速引擎450还能够实现从主机210取数据过程中依次通过以下中的任意一种或任意多种的组合的引擎以类似流水线方式工作对数据进行处理:指纹计算引擎451、压缩引擎452、加密引擎453、EC计算引擎454。
本申请实施例中,业务加速引擎450中的每个引擎可以配置是否透传、停止、启用。其中,透传表示数据直接跳过本引擎处理,直接进入下一级;停止表示停止进入下级,直接转发CPU核430进行处理;启用表示正常处理完后进入下级引擎。
可选地,作为候选,本申请实施例中还可以增加一个选择模块(图4中未示出),由选择模块选择下一级是哪个卸载引擎或者网卡CPU对数据进行处理。作为示例,可以通过配置决定选择模块选择的顺序。
为了便于描述,下面先分别对业务加速引擎450中包括的各个引擎的功能进行详细描述。
指纹计算引擎451,用于对从主机210的存储器212中获取的数据进行指纹计算。作为示例,指纹计算可以使用哈希算法进行计算,例如,可以通过安全散列算法256(securehash algorithm256,SHA256)对数据进行指纹计算。该指纹计算的结果可以用于数据的去重处理,具体的有关数据的去重处理请参考后文中的描述,此处暂不详述。
压缩引擎452,用于对数据进行压缩处理,得到压缩后的数据。由于压缩的数据实际数据块会变小,因此,可以在消息头中记录压缩情况。这样消息发送时可以按实际压缩后的数据进行组装,节约网络带宽。
可选地,作为一种简化方案,由于存储数据是按块存储的,压缩后的数据可以按存储数据块为单位进行记录,空闲的地方按0填充。
解压缩引擎456,用于对数据进行解压缩处理,得到压缩前的数据。
加密引擎453,用于对数据进行加密处理,得到加密后的数据。
解密引擎455,用于对加密的数据进行解密,得到加密前的数据。
EC计算引擎454,用于对数据进行冗余保护。作为示例,EC方式是对M个数据块进行EC计算,生成N个冗余的块,它们通常保存在不同的存储设备上。M个数据块中同时损坏不超过N块,都能准确恢复数据,通常称之为M+N EC计算。M数越大数据存储效率越高,N越大表明可靠性越高。这样只要同时故障的节点数不超过N,都能够恢复出原始数据。应理解,M和N为1时,就是典型的1+1备份的方案。
网络协议处理引擎440,主要用于完成网络协议的处理,保证数据可靠的传到目的节点。上述网络协议可以有多种,本申请对此不做具体限定,例如,该网络协议可以是远程直接数据存取(remote direct data access,RDMA)协议,又如,该网络协议还可以是传输控制协议(transmission control protocol,TCP)协议,又如,该网络协议还可以是自定义的可靠传输协议。
2、内存控制器420
内存控制器420用于控制内存470与CPU核430之间的数据交互。具体地说,内存控制器420从CPU核430接收内存访问请求,并基于该内存访问请求控制针对内存470的访问。
一种实现举例,各内存控制器420通过系统总线460进行针对内存470的寻址。并且在系统总线中配置仲裁器(图中未示出),该仲裁器负责处理和协调多个CPU核430的竞争访问。
3、CPU核430
CPU核430是CPU最重要的组成部分,也可以称为CPU处理单元。是由单晶硅以一定的生产工艺制造出来的,CPU所有的计算、接受命令、存储命令、处理数据都由CPU核430执行。CPU核430分别独立地运行程序指令,利用并行计算的能力加快程序的运行速度。各种CPU核430都具有固定的逻辑结构,例如,CPU核430包括一级缓存、二级缓存、执行单元、指令级单元和总线接口等逻辑单元。
CPU核430一般用于进行复杂的业务处理,通常会运行操作系统(operatingsystem,OS),这样可以在其上面运行复杂的业务处理软件,各种管理软件,控制面软件等等。
4、内存470
内存470可以作为CPU核430的外接内存,用于存储CPU核430的程序运行和数据平面卸载引擎410的部分表项。
本申请实施例对外接内存470不做具体限定,作为示例,该外接内存470为双倍速率(double data rate,DDR)内存。
应理解,由于数据平面卸载引擎410内部集成的片内存储器是高速缓存,但其速度快、成本高,只能少量集成。大规模的表项需要存储在外接的内存470中。例如外接的内存470中存储网络转发需要的大的转发流表,网络连接的收发队列,网络连接的上下文表项,IO的上下文表项等。
还应理解,我们常说的数据上送CPU,其实是上送CPU核430的外接内存470中。本文后面所说的数据上送CPU,上送CPU内存都是指上送CPU核430的外接内存470中。
5、系统总线460
系统总线460可以连接数据平面卸载引擎410与CPU核430、内存控制器420,使得数据平面卸载引擎410与CPU核430、内存控制器420之间可以通过系统总线460进行通信。
下面以图4所示的硬件架构为例,结合图5中的例子,详细描述网卡对IO写命令进行处理的一种具体实现方式。应理解,图5的例子仅仅是为了帮助本领域技术人员理解本申请实施例,而非要将申请实施例限制于图5的具体数值或具体场景。本领域技术人员根据所给出的例子,显然可以进行各种等价的修改或变化,这样的修改和变化也落入本申请实施例的范围内。
图5是本申请实施例提供的一种网卡对IO写命令进行处理的方法的示意性流程图。如图5所示,该方法可以包括步骤510-570,下面分别对步骤510-570进行详细描述。
步骤510:主机210中的VM下发IO写命令。
主机的某个VM可以基于一个存储IO设备接口(例如NVMe、SCSI、Virtio-BLK、Virtio-SCSI等)发起存储业务的IO写命令。
应理解,可以通过一个标识(identity,ID)来标识一个虚拟化的设备。以上的存储IO设备在PCIE上通常会映射成一个功能(function),在启用单根IO虚拟化(single-rootI/O virtualization,SR-IOV)的情况下,以上的存储IO设备既可以是物理功能(Physicalfunction,PF),也可以是虚拟功能(virtual function,VF)。由于通常虚拟功能(virtualfunction,VF)数量更多,在VM应用场景,给VM分配主要是VF,为了描述简单,后面描述以VF来描述,但只要没有特别强调只能是PF,所有VF描述的地方都同样适用于PF。也就是说,作为一个示例,可以通过VF来标识一个运行在主机210中的一个VM。
步骤520:主机210中的处理器211向网卡400发送提示消息。
处理器211将待处理的IO写命令发送至存储器212后,可以向网卡400发送提示消息。该提示消息用于通知数据平面卸载引擎410有待处理的IO命令。
作为示例,该提示消息可以为门铃(door bell,DB)。
步骤530:网卡400中的IO命令处理模块412对待处理的IO写命令进行处理。
对于IO命令例如IO读、IO写命令,则通常需要进行Qos控制。例如针对IO命令中的逻辑单元号(logical unit number,LUN)信息(在NVMe中是名字空间),可以将VM的LUN ID以及入口的VF信息转换成全局LUN ID,该全局LUN ID可以是目的存储设备的地址信息。
为了便于描述,后文中出现的LUN ID可以理解为全局LUN ID。
应理解,VF信息(例如,VF ID)不在IO命令里面,就像一个报文进入网卡的如端口属性一样,这个信息不在报文里面。
步骤540:网卡400中的数据调度模块413对待处理的IO命令进行调度。
应理解,步骤540是可选地。也就是说,如果上述待处理的IO命令是多个IO命令,为了避免一个VM或者一个卷的负载不合理,需要限制每个设备的带宽和包率,因此,需要数据调度模块413对上述多个IO命令进行调度,从多个IO命令中选择出符合条件的IO命令。数据调度模块413可以将符合条件的IO命令存储在网卡400的内存470中的IO消息接收队列中。
数据平面卸载引擎410中的数据调度模块413对所述多个IO命令进行调度,并将调度的IO命令存储在IO消息接收队列中。
步骤550:CPU核430基于IO命令中的地址信息和长度信息对数据进行拆分。
IO命令存储在网卡400的外接内存470后,CPU核430上的软件分析IO命令。作为示例,IO命令通常可以包括:LUN、逻辑区块地址(logical block address,LBA)、数据大小(size)以及指向数据块的分散集中(scatter gather,SG)列表等信息。
LUN表示要访问的存储单元的ID,例如,图2所示的目的存储设备230的ID。LBA表示要访问的存储单元上数据所在的区块,也就是要访问的数据存储在LUN中的逻辑地址起始地址。size表示读取该地址后面数据的大小。CPU核430可以基于LUN、LBA以及size进行目的存储设备的寻址。
SG列表是多项由地址和长度组成的一个列表。一个地址+长度构成一个内存块,多个地址块就构成主机中存放IO数据所需的全部内存大小。也就是说,SG列表是指一个通过起始地址+长度的序列来描述一个分散存放的数据块,多个数据块组合成一个逻辑上连续的数据块。
应理解,SG列表中的一个地址+长度可对应于上文中数据的地址信息和长度信息。
对于IO写而言,SG列表表示从主机的存储器(内存)的哪些地方读取数据,并写到目的存储设备中。
需要说明的是,SG本身只有地址和长度信息,在虚拟化应用时,还要加上VF ID信息,才能准确映射到对应VM的内存地址。
下面对CPU核430基于待处理的数据在主机内存中的地址以及数据长度对数据进行拆分的具体实现过程进行详细描述。
应理解,对于云计算上常用的分布式存储系统,数据会被分散保存到成百上千个目的存储设备上。这样,就可以同时实现对数据的高速并发访问,获得极高的性能,也可以获得更好的安全性和扩展性。这个过程就是对数据进行拆分的过程。也就是将数据拆分成固定大小的数据块,例如拆分成4K、8K、16K、32K等等大小的数据块,不同的数据块发往不同的目的存储设备。
对于IO写,需要对要写的数据进行拆分,并将拆分之后得到的不同的数据块发送到不同的目的存储设备上。
可选地,在一些实施例中,为了提高发往多个目的存储设备的效率,通常还可以适当做一下汇聚,将发往同一个目的存储设备的多个数据块组合成一个更大的数据包,例如组合成128KB的大包一次性发送出去。这样,可以避免频繁的调用协议栈进行数据发送,导致CPU核430过载。
CPU核430对数据进行拆分的过程如图6所示。CPU核430对IO数据横向进行拆分,将一个IO数据拆分为多个数据块。纵向生成的就是一个个数据包,每个数据包唯一对应一个分布式远端的目的存储设备。每个数据包中可以包括一个数据块,或者也可以包括发往同一个目的存储设备的多个数据块。
由于IO写的真实数据存储在主机210中的存储器212,而没有存储在网卡400中的内存470中,因此,CPU核430对数据进行分区的过程不是基于IO写的真实数据,而是基于IO命令中SG的虚拟数据指针(数据在主机210存储器212中的地址信息和长度信息)进行拆分,其指向的对应主机VF的地址和长度的数据块。
步骤560:CPU核430指示数据平面卸载引擎410获取IO写的真实数据。
CPU核430对IO命令处理完之后,可以生成消息包,该消息包中包括消息头。消息头中可以携带对应的目的存储设备的信息,该信息通常可以是网络连接的发送队列。CPU核430可以将拆分的M个数据块放入M个消息队列中,其中,每个数据块存放的不是要写的真实的数据,而是拆分得到的每个数据块对应的VF+SG信息。该VF+SG信息同于指示IO写的真实数据在主机210的存储器212中的地址信息和长度信息。
CPU核430还可以向数据平面卸载引擎410发起存储数据处理指令,该指令中包括上述拆分得到的每个数据块对应的VF+SG信息,并指示数据平面卸载引擎410根据每个数据块对应的VF+SG信息从主机210的存储器212中获取IO写的真实数据。数据平面卸载引擎410获取到IO写的真实数据后,可以对IO写的真实数据进行消息封装,并将封装后的报文发送到对应的远端目的存储设备中,从而实现IO写的过程。
可选地,该指令还用于指示数据平面卸载引擎410对获取到的数据进行存储业务的处理,以便于数据平面卸载引擎410可以根据该指令对获取到的数据进行相应的存储业务的处理。
本申请实施例对获取到的数据进行以下的任意一种或多种组合的处理:数据的指纹计算、数据的去重处理、数据加密、数据压缩、数据冗余纠错编码计算。
作为示例,数据冗余纠错编码计算可以是纠删码(erasure code,EC)计算。经过数据冗余纠错编码计算生成的数据可以称为冗余纠错数据。
步骤570:数据平面卸载引擎410在从主机210中的存储器212中获取IO写的真实数据的过程中对数据进行处理,并将处理后的数据直接发送给远端的至少一个目的存储设备。
作为示例,数据平面卸载引擎410分别从M个消息队列中读取每个数据块对应的VF+SG信息,并分别向VF对应的VM发起DMA,从而根据VF+SG信息获取各个数据块对应的IO写的真实数据。
本申请实施例中,数据平面卸载引擎410还可以在读取到数据后直接对数据进行处理。具体的,数据平面卸载引擎410从存储器212中获取IO写的真实数据后,该数据进入业务加速引擎450。由业务加速引擎450对数据进行存储业务的处理后,将处理后的数据直接发送给网络协议处理引擎440,并由网络协议处理引擎440将处理后的数据直接发送给远端的至少一个目的存储设备。
下面结合图7,对步骤570的具体实现过程进行详细描述。
图7是本申请实施例提供的一种业务加速引擎450对数据进行存储业务处理的方法示意性流程图。如图7所示,该方法包括步骤710-750,下面分别对步骤710-750进行详细描述。
应理解,本申请实施例中业务加速引擎450对存储业务的处理过程不做具体限定,可以包括以下中的任意一种或任意多种的组合:指纹计算、压缩、加密、EC计算等。
为了便于描述,图7中以业务加速引擎450对数据分别进行指纹计算、压缩、加密、EC计算后发送给对应的目的存储设备。
步骤710:业务加速引擎450中的指纹计算引擎451对从主机210的存储器212中获取的数据进行指纹计算。
作为示例,指纹计算可以使用哈希算法进行计算,例如,可以通过SHA256算法对数据进行指纹计算,得到每个数据块的哈希值,即每个数据块的数据指纹。数据块的数据指纹可以用于对数据的去重处理。
本申请实施例中对数据的去重处理可以异步进行。具体的,可以由CPU核430以异步的方式协助进行数据的去重处理操作。
为了便于理解,下面先对数据的去重处理的具体实现过程进行详细描述。
一种可能的实现方式中,数据平面卸载引擎410计算出每个数据块的数据指纹后,数据平面卸载引擎410根据每个数据块的数据指纹查询去重数据库。如果获得数据块的数据指纹存在有对应的数据地址,则将查询结果通知CPU核430,由CPU核430进行后续的去重处理。如果去重数据库不存在数据块的数据指纹对应的数据地址,则说明是没有重复的新数据,插入新数据的数据指纹和数据地址去重数据库中。
另一种可能的实现方式中,数据平面卸载引擎410计算出每个数据块的数据指纹后,直接上送每个数据块的数据指纹到CPU事件通知队列,由CPU核430进行指纹比对和去重处理。
应理解,数据地址是数据的存储地址,通常是LUN+LBA。
步骤720:业务加速引擎450中的压缩引擎452对步骤710的数据进行数据压缩。
如果启用了数据压缩则压缩引擎452进行压缩处理,得到压缩后的数据。由于压缩的数据实际数据块会变小,需要在消息头中记录压缩情况,这样消息发送时可以按实际压缩后的数据进行组装,可以节约网络带宽。
作为一个示例,由于存储数据是按块存储的(例如512,4K),压缩后的数据可以按存储数据块为单位进行记录,空闲的地方按0填充。
步骤730:业务加速引擎450中的加密引擎453对步骤720中压缩后的数据进行加密。
如果需要加密,则加密引擎453获取对应的加密信息,并基于该加密信息对数据进行加密。一个示例,加密引擎453可以从队列中获取加密信息。
应理解,加密信息由步骤560中的CPU核430在条带拆分和消息封装时,预先准备好,放在队列中。例如,加密信息可以包括加密的Key和信息价值(information value,IV)值,其中,加密的Key可以是CPU核430从密钥服务器获得,IV可以是CPU核430根据数据块的LBA地址计算生成的。
步骤740:业务加速引擎450中的EC计算引擎454对数据进行数据冗余纠错编码计算(例如,EC计算)。
加密引擎453对数据完成加密处理后,可以由EC计算引擎454对数据进行EC计算。例如,加密引擎453对M个数据块进行加密,得到加密后的M个数据块,EC计算引擎454对该加密后的M个数据块进行EC计算,得到N个冗余数据块。
应理解,N个冗余数据块是EC计算引擎454根据加密后的M个数据块计算得到的,所以N个冗余数据块也是加密后的数据。
步骤750:通知网络协议处理引擎440开始报文发送。
由于网络协议处理引擎440通常需要基于连接与每个目的存储节点建立可靠的数据连接,所以通常需要有独立的发送队列。这里的实现方式有多种,下面分别对不同的实现方式进行详细描述。
一种可能的实现方式中,业务加速引擎450中的各个引擎对数据处理完成后,可以通知CPU核430,CPU核430再将消息放入网络协议处理引擎440的发送队列。这种实现方式需要CPU核430进行处理,因此,时延比较大,性能差些。
在这段时间内,CPU核430可以同步进行,或者也可以异步进行去重的处理。同步进行去重处理意味着如果发现有相同指纹的数据块,则进行数据直接比对,如果发现数据相同,则不再下发重复的数据块。异步进行去重处理意味着数据下发不影响,去重检查异步进行,如果检测数据块是重复块(指纹相同不能保证数据真正相同,所以通常还需要再进行数据块的真正比对),再发起删除对应的数据块。异步去重可以避免在读写过程中增加去重带来的时延。
另一种可能的实现方式中,数据平面卸载引擎410直接将消息放入网络协议处理引擎440的发送队列中,然后通知网络协议处理引擎440处理。这种实现方式中不需要CPU核430进行处理,时延更低,性能更好。
此时,针对去重的处理,数据平面卸载引擎410需要通知CPU核430,由CPU核430异步的进行去重处理,如果是新块,则将指纹数据和数据地址,插入指纹库;如果检测数据块是重复块,建立好地址引用关系后,由CPU核430发起删除命令,通过数据块的删除流程通过数据平面卸载引擎410通知重复块的存储设备删除重复块,这种方式的好处是,避免去重的引入所带来的读写时延增加,提升用户体验。
网络协议处理引擎440在进行报文发送的过程中,由于各发送队列深浅不一,同一批计算的M+N数据不一定能够马上得到发送。为了不将数据存储在网卡220的存储器222中,下面介绍几种可能的实现方式。
一种可能的实现方式中,EC计算引擎454根据M个数据块计算出N个冗余数据块后,将N个冗余数据块保存到网卡220的存储器222中,其余M个数据块直接丢弃。等消息发送时数据平面卸载引擎410再独立地从主机210的存储器212中获取M个数据块。并进行上述相关的处理。这种实现方式中,这样各消息的发送互不相关独立处理,实现简单。
另一种可能的实现方式中,可以在网卡220的存储器222中建立一个buffer暂存区,并在数据平面卸载引擎410的片内建立Cache区(也可以理解为数据平面卸载引擎410的本地)。EC计算完的N个冗余数据块放在Cache区中,只有当Cache冲突时才会将Cache中的数据存储至存储器222的buffer暂存区中。网络协议处理引擎440发送消息时从buffer中读取数据,如果Cache中有数据的话,直接Cache中读取,否则从外接内存中读取。消息发送成功后,对应的Cache数据清除,buffer回收。
另一种可能的实现方式中,EC计算完的N个冗余数据块保存到网卡220的存储器222中,其余M个数据块直接放入数据平面卸载引擎410片内的延迟删除链表中,而不直接删除。
可选地,为了网络协议处理引擎440能够快速查找存储的数据,可以为链表建立一个基于VF+地址的哈希索引。简单的实现就是在以VF+地址为key的基础的哈希表的基础上,按添加顺序把结果区创建成一个链表。
可选地,在一些实施例中,也可以不需要建立索引表,直接查询链表。
当暂存数据面卸载引擎内部buffer不够时则直接丢弃延迟删除链表尾部的数据,有索引表的话,删除对应索引表记录。
在网络协议处理引擎440消息发送时,先以VF+地址查询数据是否在延迟丢弃链表中,如果在,直接从延迟删除链表中读,否则重新从主机210的存储器212中获取M个数据块,并且需要重复前面的数据压缩和加密流程。
一个IO可能是多个条带构成,一个条带就是一个M+N。只有一个M+N的数据块都发送到目的存储设备中后,该条带算完成,类似多个条带全部发送到目的存储设备中后,IO才算完成,网卡400才回复主机IO成功。
所以保证M+N个消息发送的时间间隔约小效果越好,更进一步如果这些消息在队列中的等待的时间越短,上述其他的实现方式中的数据被存储在片内的概率就越高。如果网络协议发送队列为空,则消息马上就会被网络协议处理引擎440发送出去。CPU核430可以基于对应网络协议处理引擎440发送队列的浅深来发起EC计算和发送,优先发队列浅的,队列深度达到一个门限值时,可以先暂停调用EC计算API,以便减少对芯片内部buffer的挤占。
网络协议处理引擎440完成报文封装后,发送到目的存储设备,完成IO数据写入目的到存储设备。当收到当前IO写的所有条带数据和对应的EC冗余数据都写入存储设备的完成消息后,返回主机IO写完成。
下面以图4所示的硬件架构为例,结合图8中的例子,详细描述网卡对IO读命令进行处理的一种具体实现方式。应理解,图8的例子仅仅是为了帮助本领域技术人员理解本申请实施例,而非要将申请实施例限制于图8的具体数值或具体场景。本领域技术人员根据所给出的例子,显然可以进行各种等价的修改或变化,这样的修改和变化也落入本申请实施例的范围内。
图8是本申请实施例提供的一种网卡对IO读命令进行处理的方法的示意性流程图。如图8所示,该方法可以包括步骤810-850,下面分别对步骤810-850进行详细描述。
步骤810:主机210中的VM下发IO读命令。
IO读命令用于指示从目的存储设备获取需要读取的数据,并将该数据存储在主机210中。作为示例,可以将该数据存储在主机210中下发IO读命令的VM对应的内存中。
步骤820:主机210中的处理器211向网卡400发送提示消息。
步骤830:网卡400中的数据平面卸载引擎410将IO读命令转发到网卡400的外接内存470中。
步骤840:网卡400上的CPU核430对IO读命令进行处理。
CPU核430上的软件分析IO读命令。IO读命令通常可以包括读取的目的存储设备信息,该存储设备的信息包括但不限于:LUN、LBA、数据大小以及主机210本地存放数据的内存的VF+SG列表等信息。
对于IO读而言,VF+SG信息表示将从目的存储设备中读取的数据写到主机210的存储器(内存)的哪些地方。
本申请实施例中,CPU核430可以根据从目的存储设备中读取的数据写到主机210的存储器的地址信息和长度信息(SG列表)对所述IO读命令进行拆分,得到多个IO读消息。每个所述多个IO读消息中包括从目的存储设备中读取的数据中的每个数据写入所述主机210的存储器的信息。
应理解,所述每个数据写入所述主机210的存储器的信息包括以下中的任意一种:所述每个数据写入主机210的存储器的地址信息和长度信息(SG列表);或所述每个数据写入主机210的存储器的地址信息和长度信息以及所述主机210中下发所述IO读命令的VM信息(VF+SG列表);或第一标识ID和主机210的存储器中写入所述数据的偏移信息,所述第一ID用于指示主机210中下发所述IO读命令的VM信息和VM中写入所述数据的多组地址信息和长度信息(SG列表)。
步骤825:CPU核430指示网络协议处理引擎440向远端的目的存储设备发送消息包。
CPU核430对IO读命令处理完之后,可以指示网络协议处理引擎440向远端的多个目的存储设备发送所述多个IO读消息。该消息可以包括消息头,消息头中可以携带对应的目的存储设备的存储地址信息,该信息通常可以是网络连接的发送队列。
CPU核430还可以通知网络协议处理引擎440发起网络协议的发送处理,网络协议处理引擎440将IO读消息包发送到对应的目的存储设备。
步骤850:数据平面卸载引擎410从目的存储设备接收返回的IO读响应消息。
目的存储设备可以基于IO读消息包中的存储地址信息,读取对应的存储数据,并将存储数据通过IO读响应消息反馈给数据平面卸载引擎410。IO读响应消息中可以包括:写入主机210的存储器212中的数据、解密信息、解压缩信息等。
IO读响应消息可以理解为是目的存储设备对接收到的IO读命令反馈的应答报文。
如果IO读响应消息中的数据是加密后的数据,数据平面卸载引擎410中的解密引擎455可以基于解密信息对IO读响应消息中的数据进行解密,得到加密前的数据。
如果IO读响应消息中的数据是压缩后的数据,数据平面卸载引擎410中的解压缩引擎456还可以基于解压缩信息对IO读响应消息中的数据进行解压缩处理,得到压缩前的数据。
需要说明的是,对于IO读,需要从多个目的存储设备获取条带数据,组合成完整的IO数据,读是写的逆过程。不同之处在于数据正确的情况下不需要再进行EC计算处理,因为只有数据错误,才需要从冗余数据恢复正常数据。
数据平面卸载引擎410在对读响应消息中的数据进行上述处理之后,可以直接将数据写入VF+SG指定的主机/VM内存中。
上述技术方案中,数据一次读取完成全部的存储业务处理,避免通常方式反复调用加速模块,反复CPU处理带来的带宽和时延。数据不需上送网卡内存,大大降低了数据平面与网卡CPU的内存之间的带宽需求,降低了成本,提升了性能。
本申请实施例还提供一种芯片,该芯片获取指令并执行该指令来实现上述的方法。
可选地,作为一种实现方式,该芯片包括处理器与数据接口,该处理器通过该数据接口读取存储器上存储的指令,执行上述方法。
可选地,作为一种实现方式,该芯片还可以包括存储器,该存储器中存储有指令,该处理器用于执行该存储器上存储的指令,当该指令被执行时,该处理器用于执行上述方法。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有指令,该指令用于上述方法实施例中的方法。
本申请实施例还提供一种包含指令的计算机程序产品,该指令用于实现上述方法实施例中的方法。
一种实现举例,处理器可以为中央处理单元(central processing unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
一种实现举例,存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasablePROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的随机存取存储器(random access memory,RAM)可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhancedSDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,其中A,B可以是单数或者复数。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系,但也可能表示的是一种“和/或”的关系,具体可参考前后文进行理解。
本申请中,“多个”是指两个或两个以上。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (22)
1.一种网卡,其特征在于,所述网卡包括:处理器和硬件处理引擎,
所述处理器,用于获取第一输入输出IO命令,所述第一IO命令指示将本端服务器中存储的第一数据写入至少一个对端服务器中;
所述处理器,还用于向所述硬件处理引擎发送第一指示信息,所述第一指示信息用于指示所述硬件处理引擎从所述本端服务器中获取所述第一数据,所述第一指示信息中包括地址信息和长度信息;
所述硬件处理引擎,用于在根据所述地址信息和长度信息从所述本端服务器中获取所述第一数据的过程中,直接对所述第一数据进行处理,并将处理后的第一数据发送给所述至少一个对端服务器,所述第一数据不存储在所述网卡的存储器中。
2.根据权利要求1所述的网卡,其特征在于,所述第一指示信息还用于指示所述硬件处理引擎对所述第一数据进行以下的任意一种或多种组合的处理:数据的指纹计算、数据的去重处理、数据加密、数据压缩、数据冗余纠错编码计算,
所述硬件处理引擎具体用于:在根据所述地址信息和长度信息从所述本端服务器中获取所述第一数据的过程中,根据所述第一指示信息直接对所述第一数据进行所述处理。
3.根据权利要求2所述的网卡,其特征在于,所述第一指示信息指示所述硬件处理引擎对所述第一数据进行指纹计算,
所述硬件处理引擎具体用于对所述第一数据进行所述指纹计算,得到所述第一数据对应的指纹信息;
所述硬件处理引擎,还用于向所述处理器发送所述第一数据对应的指纹信息;
所述处理器,还用于根据所述第一数据对应的指纹信息进行去重处理。
4.根据权利要求1至3中任一项所述的网卡,其特征在于,
所述硬件处理引擎具体用于:在所述第一数据处理完之后,将所述处理后的第一数据放入所述硬件处理引擎的发送队列中,并发送至所述至少一个对端服务器;
所述处理器,还用于在所述第一数据中包括重复数据的情况下,通过所述硬件处理引擎向存储有所述重复数据的对端服务器发送第二指示信息,所述第二指示信息用于删除所述重复数据。
5.根据权利要求1至3中任一项所述的网卡,其特征在于,
所述硬件处理引擎具体用于:在所述第一数据处理完之后,向所述处理器发送通知消息,所述通知消息用于通知所述处理器发送所述第一数据;
所述处理器,还用于在将所述处理后的第一数据放入所述硬件处理引擎的发送队列的过程中,如果确定所述第一数据中包括重复数据,不再向所述发送队列下发所述重复数据;或者
还用于在将所述处理后的第一数据放入所述硬件处理引擎的发送队列后,如果确定所述第一数据中包括重复的数据,通过所述硬件处理引擎向存储有所述重复数据的对端服务器发送第二指示信息,所述第二指示信息用于删除所述重复的数据。
6.根据权利要求1至5中任一项所述的网卡,其特征在于,所述第一指示信息中包括多组地址信息和长度信息,
所述处理器,还用于根据所述第一数据存储在所述本端服务器的地址信息和长度信息对所述第一数据进行拆分,得到所述多组地址信息和长度信息。
7.根据权利要求1至6中任一项所述的网卡,其特征在于,所述处理后的第一数据包括所述处理后的第一数据和所述处理后的第一数据对应的冗余纠错数据,所述冗余纠错数据存储在所述网卡的存储器中,所述处理后的第一数据不存储在所述网卡的存储器中,
所述硬件处理引擎,用于从所述网卡的存储器中获取所述冗余纠错数据,从所述本端服务器中重新获取所述处理器后的第一数据;
所述硬件处理引擎,用于将所述处理后的第一数据和所述冗余纠错数据发送给所述至少一个对端服务器。
8.根据权利要求1至6中任一项所述的网卡,其特征在于,所述处理后的第一数据包括所述处理后的第一数据和所述处理后的第一数据对应的冗余纠错数据,所述冗余纠错数据存储在所述网卡的存储器中,所述处理后的第一数据存储在所述硬件处理引擎的本地,
所述硬件处理引擎,用于从所述网卡的存储器中获取所述冗余纠错数据,从所述本地获取所述处理后的第一数据;
所述硬件处理引擎,用于将所述处理后的第一数据和所述冗余纠错数据发送给所述至少一个对端服务器。
9.根据权利要求1至8中任一项所述的网卡,其特征在于,
所述处理器,还用于从对端服务器接收第一IO读响应消息,所述第一IO读响应消息中包括本端服务器需要从所述对端服务器获取的第二数据;
所述硬件处理引擎,还用于对所述第二数据进行处理,并直接将处理后的第二数据写入所述本端服务器中,所述第二数据不存储在所述网卡的存储器中。
10.根据权利要求9所述的网卡,其特征在于,
所述硬件处理引擎,还用于确定对所述第二数据进行以下的任意一种或多种的组合的处理:数据的指纹计算、数据的去重处理、数据解密、数据解压缩。
11.根据权利要求10所述的网卡,其特征在于,所述第一IO读响应消息中携带解密信息,
所述硬件处理引擎具体用于:根据所述解密信息确定并对所述第二数据进行解密。
12.一种网卡处理数据的方法,其特征在于,所述网卡包括处理器和硬件处理引擎,所述方法包括:
所述网卡的处理器获取第一输入输出IO命令,所述第一IO命令指示将本端服务器中存储的第一数据写入至少一个对端服务器中;
所述网卡的处理器向所述硬件处理引擎发送第一指示信息,所述第一指示信息用于指示所述硬件处理引擎从所述本端服务器中获取所述第一数据,所述第一指示信息中包括地址信息和长度信息;
所述网卡的硬件处理引擎在根据所述地址信息和长度信息从所述本端服务器中获取所述第一数据的过程中,直接对所述第一数据进行处理,并将处理后的第一数据发送给所述至少一个对端服务器,所述第一数据不存储在所述网卡的存储器中。
13.根据权利要求12所述的方法,其特征在于,所述第一指示信息还用于指示所述硬件处理引擎对所述第一数据进行以下的任意一种或多种组合的处理:数据的指纹计算、数据的去重处理、数据加密、数据压缩、数据冗余纠错编码计算,
所述网卡的硬件处理引擎在根据所述地址信息和长度信息从所述本端服务器中获取所述第一数据的过程中,直接对所述第一数据进行处理,包括:
所述网卡的硬件处理引擎在根据所述地址信息和长度信息从所述本端服务器中获取所述第一数据的过程中,根据所述第一指示信息直接对所述第一数据进行所述处理。
14.根据权利要求13所述的方法,其特征在于,所述第一指示信息指示所述硬件处理引擎对所述第一数据进行指纹计算,
所述网卡的硬件处理引擎在根据所述地址信息和长度信息从所述本端服务器中获取所述第一数据的过程中,直接对所述第一数据进行处理,包括:
所述网卡的硬件处理引擎对所述第一数据进行所述指纹计算,得到所述第一数据对应的指纹信息;
所述网卡的硬件处理引擎向所述处理器发送所述第一数据对应的指纹信息;
所述网卡的处理器根据所述第一数据对应的指纹信息进行去重处理。
15.根据权利要求12至14中任一项所述的方法,其特征在于,所述方法还包括:
所述网卡的硬件处理引擎在所述第一数据处理完之后,将所述处理后的第一数据放入所述硬件处理引擎的发送队列中,并发送至所述至少一个对端服务器;
所述网卡的处理器在所述第一数据中包括重复数据的情况下,通过所述硬件处理引擎向存储有所述重复数据的对端服务器发送第二指示信息,所述第二指示信息用于删除所述重复数据。
16.根据权利要求12至14中任一项所述的方法,其特征在于,所述方法还包括:
所述网卡的硬件处理引擎在所述第一数据处理完之后,向所述处理器发送通知消息,所述通知消息用于通知所述处理器发送所述第一数据;
所述网卡的处理器在将所述处理后的第一数据放入所述硬件处理引擎的发送队列的过程中,如果确定所述第一数据中包括重复数据,不再向所述发送队列下发所述重复数据;或者
所述网卡的处理器在将所述处理后的第一数据放入所述硬件处理引擎的发送队列后,如果确定所述第一数据中包括重复的数据,通过所述硬件处理引擎向存储有所述重复数据的对端服务器发送第二指示信息,所述第二指示信息用于删除所述重复的数据。
17.根据权利要求12至16中任一项所述的方法,其特征在于,所述第一指示信息中包括多组地址信息和长度信息,所述方法还包括:
所述网卡的处理器根据所述第一数据存储在所述本端服务器的地址信息和长度信息对所述第一数据进行拆分,得到所述多组地址信息和长度信息。
18.根据权利要求12至17中任一项所述的方法,其特征在于,所述处理后的第一数据包括所述处理后的第一数据和所述处理后的第一数据对应的冗余纠错数据,所述冗余纠错数据存储在所述网卡的存储器中,所述处理后的第一数据不存储在所述网卡的存储器中,所述方法还包括:
所述网卡的硬件处理引擎从所述网卡的存储器中获取所述冗余纠错数据,从所述本端服务器中重新获取所述处理器后的第一数据;
所述网卡的硬件处理引擎将所述处理后的第一数据和所述冗余纠错数据发送给所述至少一个对端服务器。
19.根据权利要求12至17中任一项所述的方法,其特征在于,所述处理后的第一数据包括所述处理后的第一数据和所述处理后的第一数据对应的冗余纠错数据,所述冗余纠错数据存储在所述网卡的存储器中,所述处理后的第一数据存储在所述硬件处理引擎的本地,所述方法还包括:
所述网卡的硬件处理引擎从所述网卡的存储器中获取所述冗余纠错数据,从所述本地获取所述处理后的第一数据;
所述网卡的硬件处理引擎将所述处理后的第一数据和所述冗余纠错数据发送给所述至少一个对端服务器。
20.根据权利要求12至19中任一项所述的方法,其特征在于,所述方法还包括:
所述网卡的处理器从对端服务器接收第一IO读响应消息,所述第一IO读响应消息中包括本端服务器需要从所述对端服务器获取的第二数据;
所述网卡的硬件处理引擎对所述第二数据进行处理,并直接将处理后的第二数据写入所述本端服务器中,所述第二数据不存储在所述网卡的存储器中。
21.根据权利要求20所述的方法,其特征在于,所述方法还包括:
所述网卡的硬件处理引擎确定对所述第二数据进行以下的任意一种或多种的组合的处理:数据的指纹计算、数据的去重处理、数据解密、数据解压缩。
22.根据权利要求21所述的方法,其特征在于,所述方法还包括:
所述网卡的硬件处理引擎根据所述解密信息确定并对所述第二数据进行解密。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP21821554.9A EP4152140A4 (en) | 2020-06-09 | 2021-04-30 | NETWORK CARD AND METHOD FOR PROCESSING DATA ON A NETWORK CARD |
PCT/CN2021/091376 WO2021249059A1 (zh) | 2020-06-09 | 2021-04-30 | 网卡以及网卡处理数据的方法 |
US18/063,359 US20230105771A1 (en) | 2020-06-09 | 2022-12-08 | Network adapter and data processing method of network adapter |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2020105196856 | 2020-06-09 | ||
CN202010519685 | 2020-06-09 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113778320A true CN113778320A (zh) | 2021-12-10 |
Family
ID=78835087
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011038826.9A Pending CN113778320A (zh) | 2020-06-09 | 2020-09-28 | 网卡以及网卡处理数据的方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230105771A1 (zh) |
EP (1) | EP4152140A4 (zh) |
CN (1) | CN113778320A (zh) |
WO (1) | WO2021249059A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114465770A (zh) * | 2021-12-29 | 2022-05-10 | 天翼云科技有限公司 | 数据处理方法及相关装置 |
WO2023169271A1 (zh) * | 2022-03-07 | 2023-09-14 | 阿里巴巴(中国)有限公司 | 一种数据存储方法及数据处理设备 |
CN117112044A (zh) * | 2023-10-23 | 2023-11-24 | 腾讯科技(深圳)有限公司 | 基于网卡的指令处理方法、装置、设备和介质 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110219208A1 (en) * | 2010-01-08 | 2011-09-08 | International Business Machines Corporation | Multi-petascale highly efficient parallel supercomputer |
US20130311434A1 (en) * | 2011-11-17 | 2013-11-21 | Marc T. Jones | Method, apparatus and system for data deduplication |
CN105068817A (zh) * | 2015-08-26 | 2015-11-18 | 华为技术有限公司 | 将数据写入存储设备的方法及存储设备 |
CN105450588A (zh) * | 2014-07-31 | 2016-03-30 | 华为技术有限公司 | 一种基于rdma的数据传输方法及rdma网卡 |
CN105808345A (zh) * | 2014-12-31 | 2016-07-27 | 华为技术有限公司 | 数据处理方法、加速引擎、控制板和系统 |
CN108768851A (zh) * | 2018-06-01 | 2018-11-06 | 武汉绿色网络信息服务有限责任公司 | 一种基于Linux系统实现的路由器环回口方法和装置 |
CN109218308A (zh) * | 2018-09-14 | 2019-01-15 | 上海赋华网络科技有限公司 | 一种基于智能网卡的数据高速安全交换方法 |
CN109597582A (zh) * | 2018-12-03 | 2019-04-09 | 郑州云海信息技术有限公司 | 一种数据处理方法及相关设备 |
CN109656855A (zh) * | 2018-08-16 | 2019-04-19 | 浮栅智联科技(苏州)有限公司 | 在网卡内读写数据的方法、计算存储网络一体化芯片和网卡 |
CN109962832A (zh) * | 2017-12-26 | 2019-07-02 | 华为技术有限公司 | 报文处理的方法和装置 |
CN110177087A (zh) * | 2019-05-05 | 2019-08-27 | 方一信息科技(上海)有限公司 | 一种基于TOE网卡的Target端协议硬件解析方法 |
CN110677402A (zh) * | 2019-09-24 | 2020-01-10 | 深圳前海微众银行股份有限公司 | 一种基于智能网卡的数据整合方法及装置 |
CN110896406A (zh) * | 2018-09-13 | 2020-03-20 | 华为技术有限公司 | 数据存储方法、装置及服务器 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112099940A (zh) * | 2016-08-26 | 2020-12-18 | 华为技术有限公司 | 实现硬件加速处理的方法、设备和系统 |
EP3352086B1 (en) * | 2016-12-05 | 2020-11-11 | Huawei Technologies Co., Ltd. | Control method, device and system for data reading-writing command in nvme over fabric architecture |
CN109714302B (zh) * | 2017-10-25 | 2022-06-14 | 阿里巴巴集团控股有限公司 | 算法的卸载方法、装置和系统 |
CN110460412B (zh) * | 2019-07-11 | 2021-09-07 | 创新先进技术有限公司 | 用于数据传输的方法和rdma网卡 |
CN110620762A (zh) * | 2019-08-06 | 2019-12-27 | 阿里巴巴集团控股有限公司 | 基于rdma的数据传输方法、网卡、服务器及介质 |
CN110753095B (zh) * | 2019-10-09 | 2023-01-06 | 苏州浪潮智能科技有限公司 | 一种网卡的数据处理方法、设备以及存储介质 |
-
2020
- 2020-09-28 CN CN202011038826.9A patent/CN113778320A/zh active Pending
-
2021
- 2021-04-30 WO PCT/CN2021/091376 patent/WO2021249059A1/zh unknown
- 2021-04-30 EP EP21821554.9A patent/EP4152140A4/en active Pending
-
2022
- 2022-12-08 US US18/063,359 patent/US20230105771A1/en active Pending
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110219208A1 (en) * | 2010-01-08 | 2011-09-08 | International Business Machines Corporation | Multi-petascale highly efficient parallel supercomputer |
US20130311434A1 (en) * | 2011-11-17 | 2013-11-21 | Marc T. Jones | Method, apparatus and system for data deduplication |
CN105450588A (zh) * | 2014-07-31 | 2016-03-30 | 华为技术有限公司 | 一种基于rdma的数据传输方法及rdma网卡 |
CN105808345A (zh) * | 2014-12-31 | 2016-07-27 | 华为技术有限公司 | 数据处理方法、加速引擎、控制板和系统 |
CN105068817A (zh) * | 2015-08-26 | 2015-11-18 | 华为技术有限公司 | 将数据写入存储设备的方法及存储设备 |
CN109962832A (zh) * | 2017-12-26 | 2019-07-02 | 华为技术有限公司 | 报文处理的方法和装置 |
CN108768851A (zh) * | 2018-06-01 | 2018-11-06 | 武汉绿色网络信息服务有限责任公司 | 一种基于Linux系统实现的路由器环回口方法和装置 |
CN109656855A (zh) * | 2018-08-16 | 2019-04-19 | 浮栅智联科技(苏州)有限公司 | 在网卡内读写数据的方法、计算存储网络一体化芯片和网卡 |
CN110896406A (zh) * | 2018-09-13 | 2020-03-20 | 华为技术有限公司 | 数据存储方法、装置及服务器 |
CN109218308A (zh) * | 2018-09-14 | 2019-01-15 | 上海赋华网络科技有限公司 | 一种基于智能网卡的数据高速安全交换方法 |
CN109597582A (zh) * | 2018-12-03 | 2019-04-09 | 郑州云海信息技术有限公司 | 一种数据处理方法及相关设备 |
CN110177087A (zh) * | 2019-05-05 | 2019-08-27 | 方一信息科技(上海)有限公司 | 一种基于TOE网卡的Target端协议硬件解析方法 |
CN110677402A (zh) * | 2019-09-24 | 2020-01-10 | 深圳前海微众银行股份有限公司 | 一种基于智能网卡的数据整合方法及装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114465770A (zh) * | 2021-12-29 | 2022-05-10 | 天翼云科技有限公司 | 数据处理方法及相关装置 |
WO2023169271A1 (zh) * | 2022-03-07 | 2023-09-14 | 阿里巴巴(中国)有限公司 | 一种数据存储方法及数据处理设备 |
CN117112044A (zh) * | 2023-10-23 | 2023-11-24 | 腾讯科技(深圳)有限公司 | 基于网卡的指令处理方法、装置、设备和介质 |
CN117112044B (zh) * | 2023-10-23 | 2024-02-06 | 腾讯科技(深圳)有限公司 | 基于网卡的指令处理方法、装置、设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
EP4152140A4 (en) | 2023-11-08 |
EP4152140A1 (en) | 2023-03-22 |
US20230105771A1 (en) | 2023-04-06 |
WO2021249059A1 (zh) | 2021-12-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113778320A (zh) | 网卡以及网卡处理数据的方法 | |
US20190163364A1 (en) | System and method for tcp offload for nvme over tcp-ip | |
US10374792B1 (en) | Layout-independent cryptographic stamp of a distributed dataset | |
CN112527186B (zh) | 一种存储系统、存储节点和数据存储方法 | |
US11546139B2 (en) | Smart compressor based on adaptive CPU/QAT scheduling method | |
CN110908600B (zh) | 数据访问方法、装置和第一计算设备 | |
KR20190027812A (ko) | 컴퓨팅 시스템을 위한 애플리케이션 구동형 스토리지 시스템 | |
US20150286414A1 (en) | Scanning memory for de-duplication using rdma | |
CN107850983B (zh) | 计算机系统、存储装置和数据的管理方法 | |
CN110837479B (zh) | 数据处理方法、相关设备及计算机存储介质 | |
CN114201421B (zh) | 一种数据流处理方法、存储控制节点及可读存储介质 | |
WO2017132797A1 (zh) | 数据整理方法、存储设备、存储控制器以及存储阵列 | |
CN105208135A (zh) | 一种文件传输方法和设备 | |
CN113836543A (zh) | 数据加密或解密的方法、装置和系统 | |
US8452900B2 (en) | Dynamic compression of an I/O data block | |
CN110955545B (zh) | 一种数据完整性校验方法、系统及相关设备 | |
US10061725B2 (en) | Scanning memory for de-duplication using RDMA | |
US20220121359A1 (en) | System and method to utilize a composite block of data during compression of data blocks of fixed size | |
US11513739B2 (en) | File layer to block layer communication for block organization in storage | |
US10372347B2 (en) | Selectively limiting throughput of test objects that share system resources with production objects | |
WO2021249063A1 (zh) | 网卡的数据处理方法以及网卡 | |
CN114465770A (zh) | 数据处理方法及相关装置 | |
US11861166B2 (en) | System and method for network interface controller based data deduplication | |
CN117318892B (zh) | 计算系统、数据处理方法、网卡、主机及存储介质 | |
WO2024109066A1 (zh) | 数据处理方法及装置 |
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 |