IP Library › Granted Patent US 10,841,243
Granted Patent B2
US 10,841,243 · App. 16/012,826 · Granted Nov 17, 2020

NIC with programmable pipeline

Inventors: Dotan Levi (Kiryat Motzkin, IL); Liran Liss (Atzmon, IL); Haggai Eran (Yokneam Illit, IL); Noam Bloch (Bat Shlomo, IL); Idan Burstein (Carmiel, IL); Lior Narkis (Petach-Tikva, IL); Avraham Ganor (Shoham, IL)
Assignee: MELLANOX TECHNOLOGIES, LTD.
H04L49/1546G06F9/45558G06F13/4068H04L49/9068H04L67/10G06F2009/45595
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 10,841,243
App. No.
16/012,826
Granted
Nov 17, 2020
Kind
B2
Abstract

A network interface controller that is connected to a host and a packet communications network. The network interface controller includes electrical circuitry configured as a packet processing pipeline with a plurality of stages. It is determined in the network interface controller that at least a portion of the stages of the pipeline are acceleration-defined stages. Packets are processed in the pipeline by transmitting data to an accelerator from the acceleration-defined stages, performing respective acceleration tasks on the transmitted data in the accelerator, and returning processed data from the accelerator to receiving stages of the pipeline.

Claims (74)

1. A method of communication, comprising the steps of:

receiving a packet in a network interface controller that is connected to a host and a communications network, the network interface controller comprising electrical circuitry configured as a packet processing pipeline having a plurality of stages;

determining in the network interface controller that at least a portion of the stages of the pipeline are acceleration-defined stages;

processing the packet in the pipeline, wherein processing the packet comprises:

transmitting data to an accelerator from the acceleration-defined stages;

performing respective acceleration tasks on the transmitted data in the accelerator; and

returning processed data from the accelerator to receiving stages of the pipeline; and

after processing the packet in the pipeline routing the packet toward a destination,

wherein performing respective acceleration tasks comprises performing one of the acceleration tasks in a configurable unit of the accelerator;

thereafter reporting a status of the one acceleration task from the accelerator to the network interface controller; and

responsively to the status returning the processed data to the accelerator to perform another acceleration task.

2. The method according to claim 1 , wherein the stages of the pipeline are organized in a hierarchy having levels, further comprising:

in each of the levels of the hierarchy configuring the stages thereof by processes executing in respective domains.

3. The method according to claim 1 , wherein for each of the acceleration tasks, the receiving stages differ from the acceleration-defined stages.

4. The method according to claim 1 , further comprising accessing the network interface controller by a plurality of virtual machines having respective virtual network interface controllers, wherein returning processed data from the accelerator comprises transmitting the processed data from one of the virtual network interface controllers to another of the virtual network interface controllers.

5. The method according to claim 1 , wherein transmitting data to an accelerator comprises the steps of:

adding metadata to the data; and

determining in the accelerator responsively to the metadata whether to perform acceleration on the data or to direct the data to the communications network.

6. The method according to claim 1 , wherein the one acceleration task is a decryption of a portion of the packet, and the other acceleration task is an acceleration of the decrypted portion of the packet.

7. The method according to claim 1 , wherein transmitting data to an accelerator comprises transmitting an indication to perform a specified acceleration task.

8. The method according to claim 7 , wherein transmitting data to an accelerator is performed in one virtual machine, and the indication comprises an instruction to the accelerator to route the processed data to the host for use in another virtual machine.

9. The method according to claim 1 , wherein routing the packet toward a destination comprises routing the packet to the communications network while avoiding transmitting the packet to the host.

10. A communications apparatus, comprising:

a host processor;

a network interface controller coupled to the host processor and to a communications network, the network interface controller comprising electrical circuitry configured as a packet processing pipeline having a plurality of stages;

an accelerator linked to the network interface controller, wherein the network interface controller is configured for:

receiving a packet;

determining that at least a portion of the stages of the pipeline are acceleration-defined stages;

processing the packet in the pipeline, wherein processing the packet comprises:

transmitting data to the accelerator from the acceleration-defined stages;

performing respective acceleration tasks on the transmitted data in the accelerator; and

returning processed data from the accelerator to receiving stages of the pipeline; and

after processing the packet in the pipeline routing the packet toward a destination,

wherein performing respective acceleration tasks comprises performing one of the acceleration tasks in a configurable unit of the accelerator;

thereafter reporting a status of the one acceleration task from the accelerator to the network interface controller; and

responsively to the status returning the processed data to the accelerator to perform another acceleration task.

11. The apparatus according to claim 10 , wherein the stages of the pipeline are organized in a hierarchy having levels, further comprising:

in each of the levels of the hierarchy configuring the stages thereof by respective processes executing in corresponding domains.

12. The apparatus according to claim 10 , wherein for each of the acceleration tasks, the receiving stages differ from the acceleration-defined stages.

13. The apparatus according to claim 10 , wherein the host processor is configured as a plurality of virtual machines having respective virtual network interface controllers that access the network interface controller, wherein returning processed data from the accelerator comprises transmitting the processed data from one of the virtual network interface controllers to another of the virtual network interface controllers.

14. The apparatus according to claim 10 , wherein transmitting data to an accelerator comprises the steps of:

adding metadata to the data; and

determining in the accelerator responsively to the metadata whether to perform acceleration on the data or to direct the data to the communications network.

15. The apparatus according to claim 10 , wherein the one acceleration task is a decryption of a portion of the packet, and the other acceleration task is an acceleration of the decrypted portion of the packet.

16. The apparatus according to claim 10 , wherein transmitting data to the accelerator comprises transmitting an indication to perform a specified acceleration task.

17. The apparatus according to claim 16 , wherein transmitting data to the accelerator is performed in one virtual machine, and the indication comprises an instruction to the accelerator to route the processed data to the host processor for use in another virtual machine.

18. The apparatus according to claim 10 , wherein routing the packet toward a destination comprises routing the packet to the communications network while avoiding transmitting the packet to the host processor.

19. A method of communication, comprising the steps of:

receiving a packet in a network interface controller that is connected to a host and a communications network, the network interface controller comprising electrical circuitry configured as a packet processing pipeline having a plurality of stages;

determining in the network interface controller that at least a portion of the stages of the pipeline are acceleration-defined stages;

processing the packet in the pipeline, wherein processing the packet comprises:

transmitting data to an accelerator from the acceleration-defined stages;

performing respective acceleration tasks on the transmitted data in the accelerator; and

returning processed data from the accelerator to receiving stages of the pipeline; and

after processing the packet in the pipeline routing the packet toward a destination,

wherein performing respective acceleration tasks comprises performing one of the acceleration tasks in a sandbox unit of the accelerator;

thereafter reporting a status of the one acceleration task from the accelerator to the network interface controller; and

responsively to the status returning the processed data to the accelerator to perform another acceleration task.

20. The method according to claim 19 , wherein the one acceleration task is a decryption of a portion of the packet, and the other acceleration task is an acceleration of the decrypted portion of the packet.

21. A communications apparatus, comprising:

a host processor;

a network interface controller coupled to the host processor and to a communications network, the network interface controller comprising electrical circuitry configured as a packet processing pipeline having a plurality of stages;

an accelerator linked to the network interface controller, wherein the network interface controller is configured for:

receiving a packet;

determining that at least a portion of the stages of the pipeline are acceleration-defined stages;

processing the packet in the pipeline, wherein processing the packet comprises:

transmitting data to the accelerator from the acceleration-defined stages;

performing respective acceleration tasks on the transmitted data in the accelerator; and

returning processed data from the accelerator to receiving stages of the pipeline; and

after processing the packet in the pipeline routing the packet toward a destination,

wherein performing respective acceleration tasks comprises performing one of the acceleration tasks in a sandbox unit of the accelerator;

thereafter reporting a status of the one acceleration task from the accelerator to the network interface controller; and

responsively to the status returning the processed data to the accelerator to perform another acceleration task.

22. The apparatus according to claim 21 , wherein the one acceleration task is a decryption of a portion of the packet, and the other acceleration task is an acceleration of the decrypted portion of the packet.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 20, 2018
From: LEVI, DOTAN; LISS, LIRAN; ERAN, HAGGAI; BLOCH, NOAM; BURSTEIN, IDAN; NARKIS, LIOR; GANOR, AVRAHAM
To: MELLANOX TECHNOLOGIES, LTD.
Reel/Frame 046137/0257 →
Continuity (2)
Provisional Application 62582997 · Nov 8, 2017
Related Publication 20190140979A1 · May 9, 2019
Cited By (23)
US 12,200,183 US 12,210,468 US 12,216,489 US 12,218,849 US 12,229,057 US 12,282,775 US 12,289,388 US 12,289,389 US 12,294,469 US 12,308,952 US 12,355,669 US 12,375,199 US 12,380,041 US 12,452,219 US 12,499,082 US 12,524,038 US 12,547,543 US 12,615,130 US 12,645,251 US 12,669,843 US 12,671,657 US 12,712,703 US 12,719,843