IP Library Granted Patent US 11,397,604
Granted Patent B2
US 11,397,604 · App. 16/445,058 · Granted Jul 26, 2022

Service path selection in load balanced manner

Inventors: Kantesh Mundaragi (Pune, IN); Rahul Mishra (Mountain View, CA); Pierluigi Rolando (Santa Clara, CA); Jayant Jain (Cupertino, CA); Raju Koganty (San Jose, CA)
Assignee: VMWARE, INC.
G06F9/45558G06F9/546H04L12/4633H04L41/0803H04L41/0816H04L41/5003H04L41/5054H04L45/26H04L45/308H04L45/38H04L45/586H04L45/66H04L45/74H04L45/745H04L47/125H04L47/17H04L47/19H04L47/2425H04L49/252H04L49/3009H04L61/2592H04L67/10H04L67/101H04L67/1002H04L67/16H04L67/28H04L67/2814H04L67/32H04L69/321H04L69/324H04L69/325G06F2009/4557G06F2009/45595H04L41/0806H04L41/0893H04L2212/00
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,397,604
App. No.
16/445,058
Granted
Jul 26, 2022
Kind
B2
Abstract

Some embodiments provide novel methods for performing services for machines operating in one or more datacenters. For instance, for a group of related guest machines (e.g., a group of tenant machines), some embodiments define two different forwarding planes: (1) a guest forwarding plane and (2) a service forwarding plane. The guest forwarding plane connects to the machines in the group and performs L2 and/or L3 forwarding for these machines. The service forwarding plane (1) connects to the service nodes that perform services on data messages sent to and from these machines, and (2) forwards these data messages to the service nodes. In some embodiments, the guest machines do not connect directly with the service forwarding plane. For instance, in some embodiments, each forwarding plane connects to a machine or service node through a port that receives data messages from, or supplies data messages to, the machine or service node. In such embodiments, the service forwarding plane does not have a port that directly receives data messages from, or supplies data messages to, any guest machine. Instead, in some such embodiments, data associated with a guest machine is routed to a port proxy module executing on the same host computer, and this other module has a service plane port. This port proxy module in some embodiments indirectly can connect more than one guest machine on the same host to the service plane (i.e., can serve as the port proxy module for more than one guest machine on the same host).

Claims (40)

1. A method of performing a chain of two or more services on data message flows on a host computer, the service chain comprising a plurality of services, the method comprising:

at the host computer:

receiving data regarding a plurality of service paths each of which specifies a set of two or more service nodes each of which performs one of the plurality of services of the service chain;

receiving load balancing criteria, including a plurality of numerical ranges with different ranges associated with different service paths in the plurality of service paths, to use to select different service paths for different data message flows on which the plurality of services of the service chain have to be performed;

receiving different data message flows associated with a machine executing on a host computer;

generating numerical values for each data message flow and mapping each flow's generated numerical value to one of the numerical ranges in order to select the service path associated with numerical range as the service path of the flow, wherein at least two different service paths are selected for at least two different data message flows;

forwarding each data message flow to the a service node of the service path selected for the data message flow in order to initiate the performance of the plurality of services of the service chain on the data message flow, the first service node performing the first service of the plurality of services on each data message flow and forwarding each data message flow to a subsequent service node of the service path; and

after a last service node of each service path performs a service on data messages of each data message flow, receiving the data messages of each data message flow and forwarding each flow's data messages to a destination of the flow.

2. The method of claim 1 , wherein generating the numerical values comprises using a random number generator to generate a random or pseudo random number for a data message flow from a set of attributes associated with the data message flow.

3. The method of claim 1 , wherein generating the numerical values comprises using a deterministic function to generate a determined numerical value for each data message flow from a set of attributes associated with the data message flow.

4. The method of claim 1 further comprising:

receiving a service insertion rule that comprises a rule identifier and specifies a service chain identifier for data message flows that match the rule identifier, the service chain identifier specifying the service chain;

receiving a record that maps the service chain identifier to a plurality of service path identifiers;

determining that a particular data message of a particular data message flow matches the rule identifier of a particular service insertion rule; and

using the service chain identifier of the matched service insertion rule to identify the received plurality of service paths.

5. The method of claim 1 further comprising receiving, at the host computer, updates to the load balancing criteria to adjust the selection of the different service paths to the different data message flows.

6. The method of claim 5 , wherein the updated load balancing criteria is generated based on statistics regarding data message processing by the service nodes.

7. The method of claim 6 further comprising:

at the host computer;

collecting statistics regarding data message processing by at least one service node executing on the host computer; and

providing the collected statistics to a server in order for the statistics to be used to update the load balancing criteria.

8. A non-transitory machine readable medium storing a program for execution by at least one processing unit of a host computer and for performing a chain of two or more services on data message flows on the host computer, the service chain comprising a plurality of services, the program comprising sets of instructions for:

receiving data regarding a plurality of service paths each of which specifies a set of two or more service nodes each of which performs one of the plurality of services of the service chain;

receiving load balancing criteria, including a plurality of numerical ranges with different ranges associated with different service paths in the plurality of service paths, to use to select different service paths for different data message flows on which the plurality of services of the service chain have to be performed;

receiving different data messages for different data message flows associated with a machine executing on a host computer;

generating numerical values for each data message flow and mapping each flow's generated numerical value to one of the numerical ranges in order to select the service path associated with numerical range as the service path of the flow, wherein at least two different service paths are selected for at least two different data message flows;

forwarding each data message flow to a first service node of the service path selected for the data message flow in order to initiate the performance of the plurality of services of the service chain on the data message flow, the first service node performing the first service of the plurality of services on each data message flow and forwarding each data message flow to a subsequent service node of the service path; and

after a last service node of each service path performs a service on data messages of each data message flow, receiving the data messages of each data message flow and forwarding each flow's data messages to a destination of the flow.

9. The non-transitory machine readable medium of claim 8 , wherein the set of instructions for generating the numerical values comprises a set of instructions for using a random number generator to generate a random or pseudo random number for a data message flow from a set of attributes associated with the data message flow.

10. The non-transitory machine readable medium of claim 8 , wherein the set of instructions for generating the numerical values comprises a set of instructions for using a deterministic function to generate a determined numerical value for each data message flow from a set of attributes associated with the data message flow.

11. The non-transitory machine readable medium of claim 8 , wherein the program further comprises sets of instructions for:

receiving a service insertion rule that comprises a rule identifier and specifies a service chain identifier for data message flows that match the rule identifier, the service chain identifier specifying the service chain;

receiving a record that maps the service chain identifier to a plurality of service path identifiers;

determining that a particular data message of a particular data message flow matches the rule identifier of a particular service insertion rule; and

using the service chain identifier of the matched service insertion rule to identify the received plurality of service paths.

12. The non-transitory machine readable medium of claim 8 , wherein the program further comprises a set of instructions for receiving, at the host computer, updates to the load balancing criteria to adjust the selection of the different service paths to the different data message flows.

13. The non-transitory machine readable medium of claim 12 , wherein the updated load balancing criteria is generated based on statistics regarding data message processing by the service nodes.

14. The non-transitory machine readable medium of claim 13 , wherein the program further comprises sets of instructions for:

collecting statistics regarding data message processing by at least one service node executing on the host computer; and

providing the collected statistics to a server in order for the statistics to be used to update the load balancing criteria.

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 Jun 18, 2019
From: MUNDARAGI, KANTESH; MISHRA, RAHUL; ROLANDO, PIERLUIGI; JAIN, JAYANT; KOGANTY, RAJU
To: VMWARE, INC.
Reel/Frame 049508/0661 →
Priority Claims (1)
IN 201941007860 · Feb 28, 2019 · national
Continuity (2)
Provisional Application 62809464 · Feb 22, 2019
Related Publication 20200274808A1 · Aug 27, 2020
Cited By (3)
US 12,231,252 US 12,254,340 US 12,341,680