IP Library Granted Patent US 11,929,943
Granted Patent B2
US 11,929,943 · App. 17/403,805 · Granted Mar 12, 2024

Edge datapath using user space network stack

Inventors: Ronghua Zhang (San Jose, CA); Yong Wang (Sunnyvale, CA); Teemu Koponen (San Francisco, CA); Jia Yu (Sunnyvale, CA); Xinhua Hong (Milpitas, CA)
Assignee: Nicira, Inc.
H04L49/25H04L12/4633H04L12/4654H04L12/66H04L41/0654H04L41/145H04L41/5041H04L43/08H04L43/106H04L45/02H04L45/122H04L45/306H04L45/42H04L45/44H04L45/586H04L45/64H04L45/72H04L45/74H04L45/742H04L45/745H04L47/19H04L49/3009H04L49/3063H04L49/354H04L49/9068H04L61/2585H04L67/1001H04L67/1038H04L67/568H04L67/63H04L69/321H04L69/326H04L69/329H04L2012/4629H04L41/5077H04L45/22H04L45/28H04L45/38H04L61/103H04L61/2503H04L67/1095H04L2101/663
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,929,943
App. No.
17/403,805
Granted
Mar 12, 2024
Kind
B2
Abstract

A novel design of a gateway that handles traffic in and out of a network by using a datapath daemon is provided. The datapath daemon is a run-to-completion process that performs various data-plane packet-processing operations at the edge of the network. The datapath daemon dispatches packets to other processes or processing threads outside of the daemon by utilizing a user space network stack.

Claims (27)

1. A method for configuring a computer to implement a gateway for a network, the method comprising:

to implement the gateway on the computer:

operating first and second processing threads for the gateway to execute on first and second processing cores of the computer, each processing thread implementing multiple packet processing stages of one or more network elements implemented by the gateway;

operating a third processing thread for the gateway to provide a service for at least one of the first and second processing threads, the third processing thread communicating with the first or second processing thread through a network stack of the computer, said network stack performs network protocol processing on packets received by and transmitted from the computer;

wherein the first and second processing threads are datapath threads, while the third thread is a control plane thread.

2. The method of claim 1 , wherein the service is a routing service.

3. The method of claim 2 , wherein the routing service is a border gateway protocol (BGP) routing service.

4. The method of claim 1 , wherein the third thread is a control plane routing service thread.

5. The method of claim 1 , wherein the network is a logical network, the datapath thread is a logical datapath thread, and the control plane thread is a logical control plane thread.

6. The method of claim 1 , wherein the network stack is a separate process from the first and second processing threads.

7. The method of claim 1 , wherein the first and second processing threads are run-to-completion threads.

8. The method of claim 1 , wherein the service is a load balancing service.

9. The method of claim 1 , wherein through the network stack, the third processing thread receives packets to process from the first or second processing thread and provides processed packets back to the first or second processing thread.

10. The method of claim 1 , wherein the network elements comprise forwarding elements.

11. A non-transitory machine readable medium storing a program, which when executed by at least one processing unit, configures a computer to implement a gateway for a network, the program comprising sets of instructions for:

on the computer:

operating first and second processing threads to execute on first and second processing cores of the computer, each processing thread implementing multiple packet processing stages of one or more network elements;

operating a third processing thread to provide a service for at least one of the first and second processing threads, the third processing thread communicating with the first or second processing thread through a network stack of the computer, said network stack performs network protocol processing on packets received by and transmitted from the computer;

wherein the first and second processing threads are datapath threads, while the third thread is a control plane thread.

12. The non-transitory machine readable medium of claim 11 , wherein the service is a routing service.

13. The non-transitory machine readable medium of claim 12 , wherein the routing service is a border gateway protocol (BGP) routing service.

14. The non-transitory machine readable medium of claim 11 , wherein the third thread is a control plane routing service thread.

15. The non-transitory machine readable medium of claim 11 , wherein the network is a logical network, the datapath thread is a logical datapath thread, and the control plane thread is a logical control plane thread.

16. The non-transitory machine readable medium of claim 11 , wherein the network stack is a separate process from the first and second processing threads.

17. The non-transitory machine readable medium of claim 11 , wherein the first and second processing threads are run-to-completion threads.

18. The non-transitory machine readable medium of claim 11 , wherein the service is a load balancing service.

19. The non-transitory machine readable medium of claim 11 , wherein through the network stack, the third processing thread receives packets to process from the first or second processing thread and provides processed packets back to the first or second processing thread.

Assignments (1)
MERGER Recorded Jan 27, 2025
From: NICIRA, INC.
To: VMWARE LLC
Reel/Frame 070187/0487 →
Continuity (3)
Continuation 14965682 · Dec 10, 2015
Provisional Application 62110061 · Jan 30, 2015
Related Publication 20210377186A1 · Dec 2, 2021