IP Library Granted Patent US 11,734,043
Granted Patent B2
US 11,734,043 · App. 17/122,192 · Granted Aug 22, 2023

Providing stateful services in a scalable manner for machines executing on host computers

Inventors: Jayant Jain (Cupertino, CA); Anirban Sengupta (Saratoga, CA); Rick Lund (Livermore, CA)
Assignee: VMWARE, INC.
G06F9/45558G06F9/44505G06F9/45545G06F2009/45562G06F2009/45579G06F2009/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 11,734,043
App. No.
17/122,192
Granted
Aug 22, 2023
Kind
B2
Abstract

Some embodiments provide a method for performing services on a host computer that executes several machines in a datacenter. The method configures a first set of one or more service containers for a first machine executing on the host computer, and a second set of one or more service containers for a second machine executing on the host computer. Each configured service container performs a service operation (e.g., a middlebox service operation, such as firewall, load balancing, encryption, etc.) on data messages associated with a particular machine (e.g., on ingress and/or egress data messages to and/or from the particular machine). For each particular machine, the method also configures a module along the particular machine's datapath to identify a subset of service operations to perform on a set of data messages associated with the particular machine, and to direct the set of data messages to a set of service containers configured for the particular machine to perform the identified set of service operations on the set of data messages. In some embodiments, the first and second machines are part of one logical network or one virtual private cloud that is deployed over a common physical network in the datacenter.

Claims (28)

1. A method for providing services on a host computer that executes a plurality of machines, the method comprising:

configuring first and second Pods respectively for first and second machines executing on the host computer,

on each particular machine's respective Pod, configuring a set of two or more service containers for performing a set of two or more services on data messages associated with the particular machine; and

configuring, for each particular machine, a module along the particular machine's datapath to direct data messages associated with the particular machine to the particular machine's Pod for at least a subset of the set of services to be performed by the set of service containers of the particular machine's Pod.

2. The method of claim 1 , wherein the first and second machines belong to one logical network implemented over a physical network on which a plurality of logical networks are defined.

3. The method of claim 2 , wherein the first and second Pods execute the same set of service containers.

4. The method of claim 2 , wherein the first and second Pods execute different sets of service containers.

5. The method of claim 1 , wherein the first and second machines belong to first and second logical networks implemented over a physical network on which a plurality of logical networks are defined.

6. The method of claim 1 , wherein the first and second Pods execute on first and second service virtual machines (SVMs) that execute on the host computer.

7. The method of claim 6 , wherein:

the first and second machines are first and second guest virtual machines (GVMs); and

the SVMs consume less storage resources and have faster bootup times than the GVMs.

8. The method of claim 1 , wherein each particular machine's configured module comprises a classifier that for each data message that it processes, identifies the subset of service operations that have to be performed on the data message, and provides the data message with a service identifier to the particular machine's configured Pod in order to specify the identified subset of service operations that have to be performed on the data message by a subset of service containers of the Pod.

9. The method of claim 8 , wherein service operations in the subset of services identified by the classifier have a particular order, and the service identifier specifies the particular order.

10. The method of claim 8 , wherein a forwarding element executes on each particular machine's Pod to process each provided service identifier in order to identify the subset of services that has to be performed on the provided data message, and to successively provide the data message to service containers in the subset of service containers to perform the subset of service operations.

11. The method of claim 8 , wherein each particular machine's classifier identifies at least two different subsets of service operations for at least two different data message flows originating from the particular machine.

12. The method of claim 8 , wherein each particular machine's classifier is called by a port of a software forwarding element that receives the data messages associated with the particular machine.

13. The method of claim 1 , wherein the first and second Pods are configured when the first and second machines are configured to operate on the host computer, and the first and second Pods are terminated when the first and second machines are respectively terminated on the host computer.

14. The method of claim 1 further comprising

identifying the first and second Pods respectively as being part of first and second resource groups respectively of the first and second machines, in order to allow the first Pod to be migrated with the first machine to another host computer and the second Pod to be migrated with the second machine to another host computer.

15. A non-transitory machine readable medium storing a program for execution by at least one processing unit of a host computer, the program providing services on the host computer that executes a plurality of machines, the program comprising sets of instructions for:

configuring first and second Pods respectively for first and second machines executing on the host computer;

on each particular machine's respective Pod, configuring a set of two or more service containers for performing a set of two or more services on data messages associated with the particular machine; and

configuring, for each particular machine, a module operating outside of the particular machine along the particular machine's datapath to direct data messages associated with the particular machine to the particular machine's Pod for at least a subset of the set of services to be performed by the set of service containers of the Pod, said module receiving the data messages through a port associated with a software forwarding element that executes on the host computer outside of the particular machine.

16. The non-transitory machine readable medium of claim 15 , wherein the first and second machines belong to one logical network implemented over a physical network on which a plurality of logical networks are defined.

17. The non-transitory machine readable medium of claim 16 , wherein the first and second Pods execute the same set of service containers.

18. The non-transitory machine readable medium of claim 16 , wherein the first and second Pods execute different sets of service containers.

19. The non-transitory machine readable medium of claim 18 , wherein the first and second machines belong to first and second logical networks implemented over a physical network on which a plurality of logical networks are defined.

Assignments (2)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0395 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 15, 2020
From: JAIN, JAYANT; SENGUPTA, ANIRBAN; LUND, RICK
To: VMWARE, INC.
Reel/Frame 054650/0939 →
Cited By (1)
US 12,254,340