IP Library › Granted Patent US 12,333,147
Granted Patent B2
US 12,333,147 · App. 18/308,118 · Granted Jun 17, 2025

Network interface card, controller, storage apparatus, and packet sending method

Inventors: Zhaojiao Han (Shenzhen, CN); Xindong Luo (Shenzhen, CN); Jiyuan Chen (Shenzhen, CN); Xuhui Li (Shenzhen, CN)
Assignee: HUAWEI TECHNOLOGIES CO., LTD.
G06F3/0611G06F3/0646G06F3/0683G06F13/28G06F15/17331G06F2213/3808
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,333,147
App. No.
18/308,118
Granted
Jun 17, 2025
Kind
B2
Abstract

A network interface card, a controller, a storage apparatus, and a packet sending method are disclosed, and relate to the storage field to reduce a delay of an RDMA read operation. The network interface card includes: a processing module, configured to: in response to a doorbell signal of a controller, obtain a work queue element (WQE) from a send queue (SQ) corresponding to the controller, where the doorbell signal indicates that there is a to-be-sent message in a storage space to which at least one WQE points in the SQ, the WQE includes indication information, and the indication information indicates a type of a first remote direct memory access (RDMA) packet scheduled by the WQE.

Claims (35)

1. A network interface card, comprising:

at least one processor, configured to: in response to a doorbell signal of a controller, obtain a work queue element (WQE) from a send queue (SQ) corresponding to the controller, wherein the doorbell signal indicates that there is a to-be-sent message in a storage space to which at least one WQE points in the SQ, the WQE comprises indication information, and the indication information indicates a type of a first remote direct memory access (RDMA) packet scheduled by the WQE, wherein the type of the first RDMA packet comprises an initial packet, an intermediate packet, a tail packet, or a single packet of I/O data; and

a transceiver, configured to: when the indication information indicates that the type of the first RDMA packet is a tail packet or a single packet of I/O data, send, to a host client before the at least one processor polls an SQ of a next controller, the first RDMA packet and a second RDMA packet scheduled by a next WQE of the WQE in the SQ,

wherein the at least one processor is further configured to perform data integrity function (DIF) check on the first RDMA packet; and

the transceiver is further configured to: when the indication information indication that the type of the first RDMA packet is the trail packet or the single packet of the I/O data, and the DIF check succeeds, send, to the host client before the at least one processor polls the SQ of the next controller, the first RDMA packet and the second RDMA packet scheduled by the next WQE of the WQE in the SQ.

2. The network interface card according to claim 1 ,

wherein the transceiver is further configured to: when the DIF check fails, send a third RDMA packet to the host client, wherein the third RDMA packet indicates that the DIF check on the first RDMA packet fails.

3. A controller, comprising:

at least one processor, configured to submit a work queue element (WQE) to a send queue (SQ), wherein the WQE comprises indication information, and the indication information indicates a type of a first remote direct memory access (RDMA) packet scheduled by the WQE, wherein the type of the first RDMA packet comprises an initial packet, an intermediate packet, a tail packet, or a single packet of I/O data; and

a transceiver, further configured to send a doorbell signal to a network interface card, wherein the doorbell signal indicates that there is a to-be-sent message in a storage space to which at least one WQE points in the SQ, so that the network interface card obtains the WQE from the SQ, performs data integrity function (DIF) check on the first RDMA packet, and when the indication information indicates that the type of the first RDMA packet is the tail packet or the single packet of the I/O data, and the DIF check succeeds, the network interface card sends, to a host client before polling the SQ of a next controller, the first RDMA packet and a second RDMA packet scheduled by a next WQE of the WQE in the SQ.

4. A packet sending method, comprising:

in response to a doorbell signal of a controller, obtaining a work queue element (WQE) from a send queue (SQ) corresponding to the controller, wherein the doorbell signal indicates that there is a to-be-sent message in a storage space to which at least one WQE points in the SQ, the WQE comprises indication information, and the indication information indicates a type of a first remote direct memory access (RDMA) packet scheduled by the WQE, wherein the type of the first RDMA packet comprises an initial packet, an intermediate packet, a tail packet, or a single packet of I/O data; and

when the indication information indicates that the type of the first RDMA packet is a tail packet or a single packet of I/O data, sending, to a host client before polling an SQ of a next controller, the first RDMA packet and a second RDMA packet scheduled by a next WQE of the WQE in the SQ,

wherein the indication information indicates that the type of the first RDMA packet is a tail packet or a single packet of I/O data, and the sending, to a host client before polling an SQ of a next controller, the first RDMA packet and second RDMA packet scheduled by a next WQE of the WQE in the SQ comprises:

performing data integrity function (DIF) check on the first RDMA packet; and

when the indication information indicates that the type of the first RDMA packet is the tail packet or the single packet of the I/O data, and the DIF check succeeds, sending, to the host client before polling the SQ of the next controller, the first RDMA packet and the second RDMA packet scheduled by the next WQE of the WQE in the SQ.

5. The method according to claim 4 , further comprising:

when the DIF check fails, sending a third RDMA packet to the host client, wherein the third RDMA packet indicates that the DIF check on the first RDMA packet fails.

6. A packet sending method, comprising:

submitting a work queue element (WQE) to a send queue (SQ), wherein the WQE comprises indication information, and the indication information indicates a type of a first remote direct memory access (RDMA) packet scheduled by the WQE, wherein the type of the first RDMA packet comprises an initial packet, an intermediate packet, a tail packet, or a single packet of I/O data; and

sending a doorbell signal to a network interface card, wherein the doorbell signal indicates that there is a to-be-sent message in a storage space to which at least one WQE points in the SQ, so that the network interface card obtains the WQE from the SQ, performs data integrity function (DIF) check on the first RDMA packet, and when the indication information indicates that the type of the first RDMA packet is the tail packet or the single packet of the I/O data, and the DIF check succeeds, the network interface card sends, to a host client before polling the SQ of a next controller, the first RDMA packet and a second RDMA packet scheduled by a next WQE of the WQE in the SQ.

7. The method according to claim 6 , wherein the type of the first RDMA packet comprises an initial packet, an intermediate packet, a tail packet, or a single packet of I/O data.

8. A non-transitory storage medium storing information comprising instructions that, when executed by at least one processor, control the at least one processor to perform operations comprising:

in response to a doorbell signal of a controller, obtaining a work queue element (WQE) from a send queue (SQ) corresponding to the controller, wherein the doorbell signal indicates that there is a to-be-sent message in a storage space to which at least one WQE points in the SQ, the WQE comprises indication information, and the indication information indicates a type of a first remote direct memory access (RDMA) packet scheduled by the WQE, wherein the type of the first RDMA packet comprises an initial packet, an intermediate packet, a tail packet, or a single packet of I/O data; and

when the indication information indicates that the type of the first RDMA packet is a tail packet or a single packet of I/O data, sending, to a host client before polling an SQ of a next controller, the first RDMA packet and a second RDMA packet scheduled by a next WQE of the WQE in the SQ,

wherein the indication information indicates that the type of the first RDMA packet is a tail packet or a single packet of I/O data, and the sending, to a host client before polling an SQ of a next controller, the first RDMA packet and second RDMA packet scheduled by a next WQE of the WQE in the SQ comprises:

performing data integrity function (DIF) check on the first RDMA packet; and

when the indication information indicates that the type of the first RDMA packet is the tail packet or the single packet of the I/O data, and the DIF check succeeds, sending, to the host client before polling the SQ of the next controller, the first RDMA packet and the second RDMA packet scheduled by the next WQE of the WQE in the SQ.

9. The non-transitory storage medium according to claim 8 , further comprising:

when the DIF check fails, sending a third RDMA packet to the host client, wherein the third RDMA packet indicates that the DIF check on the first RDMA packet fails.

10. The network interface card according to claim 1 , wherein, when the type of the first RDMA packet is the tail packet or the single packet of the I/O data, the second RDMA packet scheduled by the next WQE in the SQ is an I/O response.

11. The network interface card according to claim 1 , wherein the first RDMA packet is segmented into a plurality of RDMA packets, the initial packet is a first packet in the plurality of RDMA packets, the tail packet is a last packet in the plurality of RDMA packets, and the intermediate packet is a packet in the plurality of RDMA packets other than the initial packet and the tail packet.

12. The network interface card according to claim 1 , wherein, when a length of the I/O data is greater than a path maximum transmission unit (PMTU), the I/O data is segmented into three types of RDMA packets comprising an initial packet, an intermediate packet, and a tail packet.

13. The network interface card according to claim 1 , wherein, when a length of the I/O data is less than or equal to a PMTU, the I/O data is not segmented.

14. The network interface card according to claim 1 , wherein the single packet is an RDMA packet in which a RDMA message is not segmented.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 24, 2025
From: HAN, ZHAOJIAO; LUO, XINDONG; LI, XUHUI
To: HUAWEI TECHNOLOGIES CO., LTD.
Reel/Frame 070599/0956 →
EMPLOYMENT AGREEMENT Recorded Mar 24, 2025
From: CHEN, JIYUAN
To: HUAWEI TECHNOLOGIES CO., LTD.
Reel/Frame 070609/0803 →
Priority Claims (1)
CN 202011174175.6 · Oct 28, 2020 · national
Continuity (2)
Continuation PCTCN2021124792 · Oct 19, 2021
Related Publication 20230259284A1 · Aug 17, 2023
References Cited (9)
US 7688838B1 · Aloni et al. · 2010 [cited by applicant]
US 20140258438A1 · Ayoub · 2014 [cited by examiner]
US 20180067893A1 · Raindel · 2018 [cited by examiner]
US 20180183699A1 · Koren · 2018 [cited by examiner]
US 20190089641A1 · Shattah · 2019 [cited by examiner]
US 20200026656A1 · Liao · 2020 [cited by examiner]
Extended European Search Report issued in EP21884986.7, dated Mar. 12, 2024, 7 pages. [cited by applicant]
InfiniBand Architecture Specification vol. 1, Release 1.3, Mar. 3, 2015, total 1842 pages. [cited by applicant]
NVM Express over Fabrics, Revision 1.0a, Jul. 17, 2018, total 51 pages. [cited by applicant]