IP Library Granted Patent US 11,671,350
Granted Patent B1
US 11,671,350 · App. 17/888,108 · Granted Jun 6, 2023

Data request servicing using multiple paths of smart network interface cards

Inventors: Gabriel Zvi BenHanokh (Ra'anana, IL); Brett Douglas Niver (Westford, MA); Joshua Nikolai Durgin (Victoria, CA)
Assignee: RED HAT, INC.
H04L45/24H04L45/123H04L49/901H04L67/1097
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,671,350
App. No.
17/888,108
Granted
Jun 6, 2023
Kind
B1
Abstract

Data requests can be serviced by multiple paths of smart network interface cards (NICs). For example, a system can receive a request for data at a first path of a smart NIC. The first path can be a hardware-implemented path. The system can send one or more parameters of the request to a second path of the smart NIC. The second path can be a slower path than the first path and configured to execute a routing algorithm for the request. The system can receive routing information for the request from the second path based on the routing algorithm and transmit the request to a storage node based on the routing information.

Claims (82)

1. A method comprising:

receiving a request for data at a first path of a smart network interface card (NIC), the first path being a hardware-implemented path;

sending one or more parameters of the request to a second path of the smart NIC, the second path being a slower path than the first path and configured to execute a routing algorithm for the request;

receiving routing information for the request from the second path based on the routing algorithm; and

transmitting the request to a storage node based on the routing information.

2. The method of claim 1 , wherein the storage node is a first storage node, and further comprising:

determining, based on the routing information, the first storage node includes a first portion of the data and a second storage node includes a second portion of the data; and

transmitting the request to the first storage node and the second storage node.

3. The method of claim 1 , wherein the storage node is a first storage node, and further comprising transmitting the request to the first storage node for:

determining the first storage node includes a first portion of the data and a second storage node includes a second portion of the data;

generating, from the request, a first partial request for the first portion of the data and a second partial request for the second portion of the data; and

transmitting the second partial request to the second storage node.

4. The method of claim 1 , further comprising transmitting the request to the storage node for:

subsequent to transmitting the request to the storage node, determining the storage node includes the data of the request; and

retrieving the data in the storage node.

5. The method of claim 1 , further comprising:

receiving the request from a queue of a plurality of requests for data operations; and

sending the one or more parameters of the request to a ring buffer accessible by the second path of the smart NIC.

6. The method of claim 5 , wherein the request is a first request and the routing information is first routing information, and further comprising:

performing, by the first path, a first operation associated with the first request substantially contemporaneously with a second operation for a second request, wherein the first operation comprises:

receiving the first request from the queue; and

sending the first request to the second path, and

wherein the second operation comprises:

receiving second routing information for the second request from the second path;

removing the second request from the queue; and

executing the second request based on the second routing information.

7. The method of claim 1 , wherein the storage node maintains an association between each storage node and data stored on each storage node.

8. A non-transitory computer-readable medium comprising program code that is executable by a processor for causing the processor to:

receive a request for data at a first path of a smart network interface card (NIC), the first path being a hardware-implemented path;

send one or more parameters of the request to a second path of the smart NIC, the second path being a slower path than the first path and configured to execute a routing algorithm for the request;

receive routing information for the request from the second path based on the routing algorithm; and

transmit the request to a storage node based on the routing information.

9. The non-transitory computer-readable medium of claim 8 , wherein the storage node is a first storage node, and further comprising program code executable by the processor for causing the processor to:

determine, based on the routing information, the first storage node includes a first portion of the data and a second storage node includes a second portion of the data; and

transmit the request to the first storage node and the second storage node.

10. The non-transitory computer-readable medium of claim 8 , wherein the storage node is a first storage node, and further comprising program code executable by the processor for causing the processor to transmit the request to the first storage node for:

determining the first storage node includes a first portion of the data and a second storage node includes a second portion of the data;

generating, from the request, a first partial request for the first portion of the data and a second partial request for the second portion of the data; and

transmitting the second partial request to the second storage node.

11. The non-transitory computer-readable medium of claim 8 , further comprising program code executable by the processor for causing the processor to transmit the request to the storage node for:

subsequent to transmitting the request to the storage node, determining the storage node includes the data of the request; and

retrieving the data in the storage node.

12. The non-transitory computer-readable medium of claim 8 , further comprising program code executable by the processor for causing the processor to:

receive the request from a queue of a plurality of requests for data operations; and

send the one or more parameters of the request to a ring buffer accessible by the second path of the smart NIC.

13. The non-transitory computer-readable medium of claim 12 , wherein the request is a first request and the routing information is first routing information, and further comprising program code executable by the processor for causing the processor to:

perform, by the first path, a first operation associated with the first request substantially contemporaneously with a second operation for a second request, wherein the first operation comprises:

receiving the first request from the queue; and

sending the first request to the second path, and

wherein the second operation comprises:

receiving second routing information for the second request from the second path;

removing the second request from the queue; and

executing the second request based on the second routing information.

14. The non-transitory computer-readable medium of claim 8 , wherein the storage node maintains an association between each storage node and data stored on each storage node.

15. A system comprising:

a processing device; and

a memory device including instructions executable by the processing device for causing the processing device to:

receive a request for data at a first path of a smart network interface card (NIC), the first path being a hardware-implemented path;

send one or more parameters of the request to a second path of the smart NIC, the second path being a slower path than the first path and configured to execute a routing algorithm for the request;

receive routing information for the request from the second path based on the routing algorithm; and

transmit the request to a storage node based on the routing information.

16. The system of claim 15 , wherein the storage node is a first storage node, and wherein the memory device further instructions executable by the processing device for causing the processing device to:

determine, based on the routing information, the first storage node includes a first portion of the data and a second storage node includes a second portion of the data; and

transmit the request to the first storage node and the second storage node.

17. The system of claim 15 , wherein the storage node is a first storage node, and wherein the memory device further instructions executable by the processing device for causing the processing device to transmit the request to the first storage node for:

determining the first storage node includes a first portion of the data and a second storage node includes a second portion of the data;

generating, from the request, a first partial request for the first portion of the data and a second partial request for the second portion of the data; and

transmitting the second partial request to the second storage node.

18. The system of claim 15 , wherein the memory device further instructions executable by the processing device for causing the processing device to transmit the request to the storage node for:

subsequent to transmitting the request to the storage node, determining the storage node includes the data of the request; and

retrieving the data in the storage node.

19. The system of claim 15 , wherein the memory device further instructions executable by the processing device for causing the processing device to:

receive the request from a queue of a plurality of requests for data operations; and

send the one or more parameters of the request to a ring buffer accessible by the second path of the smart NIC.

20. The system of claim 19 , wherein the request is a first request and the routing information is first routing information, and wherein the memory device further instructions executable by the processing device for causing the processing device to:

perform, by the first path, a first operation associated with the first request simultaneously with a second operation for a second request, wherein the first operation comprises:

receiving the first request from the queue; and

sending the first request to the second path,

and wherein the second operation comprises:

receiving second routing information for the second request from the second path;

removing the second request from the queue; and

executing the second request based on the second routing information.

Assignments (2)
CHANGE OF NAME Recorded Mar 3, 2026
From: RED HAT, INC.
To: RED HAT, LLC
Reel/Frame 074913/0759 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 15, 2022
From: BENHANOKH, GABRIEL ZVI; NIVER, BRETT DOUGLAS; DURGIN, JOSHUA NIKOLAI
To: RED HAT, INC.
Reel/Frame 060810/0647 →