IP Library Granted Patent US 11,190,458
Granted Patent B2
US 11,190,458 · App. 15/814,237 · Granted Nov 30, 2021

Network functions support for serverless and granular computing environments

Inventors: Arjun Singhvi (Madison, WI); Sujata Banerjee (Palo Alto, CA); Mark Peek (Palo Alto, CA); Yotam Harchol (Berkeley, CA); Pontus Rydin (Mendham, NJ)
Assignee: VMware, Inc.
H04L47/78H04L47/24H04L47/2483G06F9/5077
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,190,458
App. No.
15/814,237
Granted
Nov 30, 2021
Kind
B2
Abstract

The disclosure provides an approach for enabling network functions to be executed in serverless computing environments. One embodiment employs a per-packet architecture, in which the trigger for launching a serverless computing instance is receipt of a packet. In such a case, each received packet is packaged into a request to invoke network function(s) required to process the packet, and a serverless computing environment in turn executes the requested network function(s) as serverless computing instance(s) that process the packet and return a response. Another embodiment employs a per-flow architecture in which the trigger for launching a serverless computing instance is receipt of a packet belonging to a new traffic flow. In such a case, a coordinator identifies (or receives notification of) a received packet that belongs to a new sub-flow and launches a serverless computing instance to process packets of the sub-flow that are redirected to the serverless computing instance.

Claims (56)

1. A computer-implemented method of processing a network packet, comprising:

receiving, by a packet manager of one or more serverless computing instances, the network packet;

determining, by the packet manager, whether to utilize a per-packet basis to process the received network packet or a per-flow basis to process the network packet and a corresponding traffic flow to which the received network packet belongs;

executing, by the packet manager, the one or more serverless computing instances by sending the network packet to the one or more serverless computing instances that each perform one or more packet processing functions to process the network packet according to the determined basis, wherein each of the one or more serverless computing instances queries a data store separate from the one or more serverless computing instances for at least one of traffic flow state information and packet state information associated with the network packet prior to performing packet processing functions on the network packet, wherein each of the one or more serverless computing instances obtains, from the data store, the at least one of traffic flow state information for processing the network packet on the per-flow basis and packet state information for processing the network packet on the per-packet basis prior to performing packet processing functions on the network packet, and wherein the one or more packet processing functions are performed using the at least one of traffic flow state information and packet state information, wherein executing the one or more serverless computing instances on the per-flow basis includes:

responsive to determining to process the network packet according to the per-flow basis, launching or re-using, by the packet manager, the one or more serverless computing instances for processing the network packet and the corresponding traffic flow; and

redirecting, by the packet manager, the received network packet and subsequently received network packets belonging to the traffic flow to the one or more serverless computing instances for processing;

receiving, by the packet manager, the processed network packet; and

sending, by the packet manager, the processed network packet to a destination.

2. The method of claim 1 , wherein:

the traffic flow is one of a plurality of sub-flows of an application traffic flow-space; and

each of the plurality of sub-flows is processed by a respective set of one or more serverless computing instances.

3. The method of claim 1 , wherein:

launching or re-using the one or more serverless computing instances includes transmitting, by the packet manager, one or more requests to execute the one or more serverless computing instances to a serverless computing platform, the one or more requests each including an identifier of the traffic flow; and

the one or more serverless computing instances each query the data store to obtain the traffic flow state information based on the identifier.

4. The method of claim 1 , wherein executing the one or more serverless computing instances on the per-flow basis further includes, responsive to determining, by the packet manager, a lifetime of one of the one or more serverless computing instances is about to expire, launching another serverless computing instances to replace the one of the one or more serverless computing instances.

5. The method of claim 1 , wherein executing the one or more serverless computing instances on the per-packet basis includes:

encapsulating, by the packet manager, the network packet into a request to execute the network packet, the request configured to identify the packet state information associated with the network packet and stored in the data store, and

responsive to the receiving of the network packet, launching or re-using the one or more serverless computing instances by transmitting, by the packet manager, the request to execute the one or more serverless computing instances for processing the request according to the packet state information.

6. The method of claim 5 , wherein the request specifies a predefined workflow of tasks which are performed by the one or more serverless computing instances.

7. The method of claim 5 , wherein:

the receiving the network packet, the executing the one or more serverless computing instances, and the sending the processed network packet, are performed in a private cloud computing system; and

the packet manager comprises one or more components of a public cloud computing system to which the private cloud computing system is connected, the method further comprising:

receiving, by the packet manager, another network packet belonging to another traffic flow;

responsive to determining, by the packet manager, to utilize the per-packet basis to process the other network packet, launching or re-using one or more additional serverless computing instances in the public cloud computing system for the other traffic flow; and

redirecting, by the packet manager, the other network packet and subsequently received network packets belonging to the other traffic flow to the one or more additional serverless computing instances.

8. The method of claim 1 , wherein the receiving the network packet, the executing the one or more serverless computing instances, and the sending the processed network packet, are performed in one of a private cloud computing system, a public cloud computing system, and a hybrid cloud computing system.

9. The method of claim 1 , wherein contents of the network packet are stored in and referenced from the data store during the processing of the network packet.

10. One or more non-transitory computer-readable storage media storing one or more programs, which, when executed by a computing system performs operations for processing a network packet, the operations comprising:

receiving, by a packet manager of one or more serverless computing instances, the network packet;

determining, by the packet manager, whether to utilize a per-packet basis to process the received network packet or a per-flow basis to process the network packet and a corresponding traffic flow to which the received network packet belongs;

executing, by the packet manager, the one or more serverless computing instances by sending the network packet to the one or more serverless computing instances that each perform one or more packet processing functions to process the network packet according to the determined basis, wherein each of the one or more serverless computing instances queries a data store separate from the one or more serverless computing instances for at least one of traffic flow state information and packet state information associated with the network packet prior to performing packet processing functions on the network packet, wherein each of the one or more serverless computing instances obtains, from the data store, the at least one of traffic flow state information for processing the network packet on the per-flow basis and packet state information for processing the network packet on the per-packet basis prior to performing packet processing functions on the network packet, and wherein the one or more packet processing functions are performed using the at least one of traffic flow state information and packet state information, wherein executing the one or more serverless computing instances on the per-flow basis includes:

responsive to determining to process the network packet according to the per-flow basis, launching or re-using, by the packet manager, the one or more serverless computing instances for processing the network packet and the corresponding traffic flow; and

redirecting, by the packet manager, the received network packet and subsequently received network packets belonging to the traffic flow to the one or more serverless computing instances for processing;

receiving, by the packet manager, the processed network packet; and

sending, by the packet manager, the processed network packet to a destination.

11. The one or more non-transitory computer-readable storage media of claim 10 , wherein:

the traffic flow is one of a plurality of sub-flows of an application traffic flow-space; and

each of the plurality of sub-flows is processed by a respective set of one or more serverless computing instances.

12. The one or more non-transitory computer-readable storage media of claim 10 , wherein:

launching or re-using the one or more serverless computing instances includes transmitting, by the packet manager, one or more requests to execute the one or more serverless computing instances to a serverless computing platform, the one or more requests each including an identifier of the traffic flow; and

the one or more serverless computing instances each query the data store to obtain the traffic flow state information based on the identifier.

13. The one or more non-transitory computer-readable storage media of claim 10 , wherein executing the one or more serverless computing instances on the per-flow basis further includes, responsive to determining, by the packet manager, a lifetime of one of the one or more serverless computing instances is about to expire, launching another serverless computing instances to replace the one of the one or more serverless computing instances.

14. The one or more non-transitory computer-readable storage media of claim 10 , wherein executing the one or more serverless computing instances on the per-packet basis includes:

encapsulating, by the packet manager, the network packet into a request to execute the network packet, the request configured to identify the packet state information associated with the network packet and stored in the data store, and

responsive to the receiving of the network packet, launching or re-using the one or more serverless computing instances by transmitting, by the packet manager, the request to execute the one or more serverless computing instances for processing the request according to the packet state information.

15. The one or more non-transitory computer-readable storage media of claim 14 , wherein the request specifies a predefined workflow of tasks which are performed by the one or more serverless computing instances.

16. A system, comprising:

one or more processors; and

a memory, wherein the memory includes an application program configured to perform operations for processing a network packet, the operations comprising:

receiving, by a packet manager of one or more serverless computing instances, the network packet;

determining, by the packet manager, whether to utilize a per-packet basis to process the received network packet or a per-flow basis to process the network packet and a corresponding traffic flow to which the received network packet belongs;

executing, by the packet manager, the one or more serverless computing instances by sending the network packet to the one or more serverless computing instances that each perform one or more packet processing functions to process the network packet according to the determined basis, wherein each of the one or more serverless computing instances queries a data store separate from the one or more serverless computing instances for at least one of traffic flow state information and packet state information associated with the network packet prior to performing packet processing functions on the network packet, wherein each of the one or more serverless computing instances obtains, from the data store, the at least one of traffic flow state information for processing the network packet on the per-flow basis and packet state information for processing the network packet on the per-packet basis prior to performing packet processing functions on the network packet, and wherein the one or more packet processing functions are performed using the at least one of traffic flow state information and packet state information, wherein executing the one or more serverless computing instances on the per-flow basis includes:

responsive to determining to process the network packet according to the per-flow basis, launching or re-using, by the packet manager, the one or more serverless computing instances for processing the network packet and the corresponding traffic flow; and

redirecting, by the packet manager, the received network packet and subsequently received network packets belonging to the traffic flow to the one or more serverless computing instances for processing;

receiving, by the packet manager, the processed network packet; and

sending, by the packet manager, the processed network packet to a destination.

Assignments (2)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0314 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 19, 2019
From: SINGHVI, ARJUN; RYDIN, PONTUS; BANERJEE, SUJATA; HARCHOL, YOTAM; PEEK, MARK
To: VMWARE, INC.
Reel/Frame 048938/0116 →