IP Library Granted Patent US 11,503,140
Granted Patent B2
US 11,503,140 · App. 17/172,513 · Granted Nov 15, 2022

Packet processing by programmable network interface

Inventors: Marjan Radi (San Jose, CA); Dejan Vucinic (San Jose, CA)
Assignee: Western Digital Technologies, Inc.
H04L69/163G06F3/067G06F3/0613G06F3/0679H04L47/36H04L67/60H04L69/22H04L69/28G06F3/0635H04L1/1848
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 11,503,140
App. No.
17/172,513
Granted
Nov 15, 2022
Kind
B2
Abstract

A programmable network interface for a server includes at least one memory storing connection parameters for previously active Non-Volatile Memory express over Fabric (NVMeoF) connections with different NVMe nodes. An NVMeoF connection request is received from an NVMe node, and it is determined whether the NVMe node is associated with connection parameters stored in the at least one memory. In response to determining that the NVMe node is associated with connection parameters stored in the at least one memory, a new NVMeoF connection is established for communicating with the NVMe node using the stored connection parameters. In one aspect, an address space of the server is partitioned, and an NVMe request queue is assigned to each partition of the address space. At least one address is identified in a received NVMeoF message, and an NVMe request queue is determined for performing an NVMe request included in the NVMeoF message.

Claims (70)

1. A method performed by a programmable network interface of a server, the method comprising:

receiving a Non-Volatile Memory express over Fabric (NVMeoF) connection request from a node;

determining whether the node is associated with connection parameters stored in at least one memory of the programmable network interface, wherein the connection parameters are for a plurality of previously active NVMeoF connections with different nodes; and

in response to determining that the node is associated with connection parameters stored in the at least one memory, establishing a new NVMeoF connection for communicating with the node using the stored connection parameters associated with the node.

2. The method of claim 1 , wherein the stored connection parameters include at least one of an indication of a connection state, a negotiated parameter between the server and the node during a previously active connection, a packet sequence number, and a retransmission timeout value.

3. The method of claim 1 , further comprising temporarily storing data sent to the node after sending the data in a message.

4. The method of claim 1 , further comprising:

sending a message to the node over network fabric;

determining whether a timeout value stored in the connection parameters has been reached for receiving an acknowledgment of the sent message from the node; and

in response to the timeout value being reached without receiving the acknowledgment from the node, resending the message to the node over network fabric.

5. The method of claim 1 , further comprising:

receiving an NVMeoF disconnection request from the node or from an application executed by the server; and

in response to the received NVMeoF disconnection request, performing an NVMeoF/Transmission Control Protocol (TCP) connection teardown for the new connection.

6. The method of claim 1 , further comprising performing a connection setup for an NVMeoF/TCP connection with the node including:

sending an NVMe/TCP initialization request to the node based on a command received from a processor of the server;

receiving an NVMe/TCP initialization response from the node;

sending an NVMeoF connection request to the node; and

receiving an NVMeoF connection response from the node.

7. The method of claim 1 , further comprising:

parsing an Ethernet header of a message received from the node over network fabric;

parsing an NVMe capsule of the message received from the node; and

providing a processor of the server with a portion of the NVMe capsule without providing the parsed Ethernet header and a remaining portion of the NVMe capsule.

8. The method of claim 1 , further comprising:

fragmenting data received from a processor of the server to fit within a network Maximum Transmission Unit (MTU); and

sending a plurality of messages to the node for the fragmented data.

9. The method of claim 1 , further comprising:

partitioning an address space of the server;

assigning an NVMe request queue to each partition of the address space;

receiving an NVMeoF message from the node;

identifying at least one address in the received NVMeoF message; and

based on the identified at least one address, determining an NVMe request queue for performing an NVMe request included in the NVMeoF message, wherein the NVMe request is performed by one or more processors of the server.

10. A programmable network interface for a server, the programmable network interface comprising:

at least one memory configured to store connection parameters for a plurality of previously active Non-Volatile Memory express over Fabric (NVMeoF) connections with different nodes;

means for receiving an NVMeoF connection request from a node;

means for determining whether the node is associated with connection parameters stored in the at least one memory; and

means for, in response to determining that the node is associated with connection parameters stored in the at least one memory, establishing a new NVMeoF connection for communicating with the node using the stored connection parameters associated with the node.

11. A programmable network interface for a server, the programmable network interface comprising:

at least one memory configured to store connection parameters for a plurality of previously active Non-Volatile Memory express over Fabric (NVMeoF) connections with different nodes; and

circuitry configured to:

receive an NVMeoF connection request from a node;

determine whether the node is associated with connection parameters stored in the at least one memory; and

in response to determining that the node is associated with connection parameters stored in the at least one memory, establish a new NVMeoF connection for communicating with the node using the stored connection parameters associated with the node.

12. The programmable network interface of claim 11 , wherein the stored connection parameters include at least one of an indication of a connection state, a negotiated parameter between the server and the node during a previously active connection, a packet sequence number, and a retransmission timeout value.

13. The programmable network interface of claim 11 , wherein the circuitry is further configured to temporarily store data sent to the node after sending the data in a message.

14. The programmable network interface of claim 11 , wherein the circuitry is further configured to:

send a message to the node over network fabric;

determine whether a timeout value stored in the connection parameters has been reached for receiving an acknowledgment of the sent message from the node; and

in response to the timeout value being reached without receiving the acknowledgment from the node, resend the message to the node over network fabric.

15. The programmable network interface of claim 11 , wherein the circuitry is further configured to:

receive an NVMeoF disconnection request from the node or from an application executed by the server; and

in response to the received NVMeoF disconnection request, perform an NVMeoF/Transmission Control Protocol (TCP) connection teardown for the new connection.

16. The programmable network interface of claim 11 , wherein the circuitry is further configured to perform a connection setup for an NVMeoF/TCP connection with the node including:

sending an NVMe/TCP initialization request to the node based on a command received from a processor of the server;

receiving an NVMe/TCP initialization response from the node;

sending an NVMeoF connection request to the node; and

receiving an NVMeoF connection response from the node.

17. The programmable network interface of claim 11 , wherein the circuitry is further configured to:

parse an Ethernet header of a message received from the node over network fabric;

parse an NVMe capsule of the message received from the node; and

provide a processor of the server with a portion of the NVMe capsule without providing the parsed Ethernet header and a remaining portion of the NVMe capsule.

18. The programmable network interface of claim 11 , wherein the circuitry is further configured to:

fragment data received from a processor of the server to fit within a network Maximum Transmission Unit (MTU); and

send a plurality of messages to the node for the fragmented data.

19. The programmable network interface of claim 11 , wherein the circuitry is further configured to:

partition an address space of the server;

assign an NVMe request queue to each partition of the address space;

receive an NVMeoF message from the node;

identify at least one address in the received NVMeoF message; and

based on the identified at least one address, determine an NVMe request queue for performing an NVMe request included in the NVMeoF message, wherein the NVMe request is performed by one or more processors of the server.

20. The programmable network interface of claim 11 , wherein the circuitry is further configured to send to the node an indication of a predetermined number of credits for sending messages to the server based on an available capacity of the determined NVMe request queue that are decreased by the node with each NVMeoF message sent to the server.

Assignments (5)
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
RELEASE OF SECURITY INTEREST AT REEL 056285 FRAME 0292 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058982/0001 →
SECURITY INTEREST Recorded May 19, 2021
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 056285/0292 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 10, 2021
From: RADI, MARJAN; VUCINIC, DEJAN
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 055215/0152 →