# US 11,115,466 B2 · Distributed network services

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,115,466 B2
- Document ID: US11115466B2
- Status: Granted
- Kind: B2
- Application number: 16/858,664
- Filed: 2020-04-26
- Published: 2020-08-13
- Granted: 2021-09-07
- Earliest claimed: 2013-03-15
- Assignees: VMware, Inc.
- Applicants: VMware, Inc.
- Inventors: Murali Basavaiah; Ranganathan Rajagopalan
- Web page: https://patentgrep.com/patent/US11115466B2

## CPC

- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 9/455: Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- H04L 67/1001: for accessing one among a plurality of replicated servers
- H04L 67/1029: using data related to the state of servers by a load balancer
- H04L 67/59: Providing operational support to end devices by off-loading in the network or by emulation, e.g. when they are unavailable
- G06F 9/5027: {the resource being a machine, e.g. CPUs, Servers, Terminals}
- G06F 2009/45595: {Network integration; Enabling network access in virtual machine instances}
- H04L 67/568: Storing data temporarily at an intermediate stage, e.g. caching
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Providing a distributed network service includes: receiving network traffic at a first physical device; and executing a service engine to participate in the distributed network service. The distributed network service is provided to at least the first target application instance executing in a first VM on the first physical device, and a second target application instance executing in a second VM on a second physical device; and a shared state of the distributed network service is maintained with respect to the first physical device and the second physical device.

## Claims

### Claim 1

A method for managing a set of load balancers that perform a load balancing service for a plurality of target application instances, the method comprising:
collecting state information relating to data messages that the set of load balancers distribute to the plurality of target application instances, the plurality of load balancers and target application instances executing on a plurality of physical devices with at least a set of load balancers executing on a set of physical devices on which a set of target application instances execute;
generating aggregated state information from the collected state information;
distributing the aggregated state information to at least a subset of the plurality of load balancers to cause the subset of load balancers to adjust how they distribute new data message flows to the plurality of target application instances; and
providing to each load balancer in the subset of load balancers a set of numerical values that the load balancer uses to spread the data messages among the target application instances as part of an initial configuration of the load balancer,
wherein each load balancer in the subset of load balancers spreads the data messages among the target application instances based on the set of numerical values, and each load balancer in the subset of load balancers that receives the aggregated state information adjusts the load balancer's set of numerical values based on the aggregated state information.

### Claim 2 (depends on 1)

The method of claim 1, wherein the aggregated state information expresses the data message traffic load on each target application instance in the plurality of target application instances.

### Claim 3 (depends on 1)

The method of claim 1, wherein the aggregated state information expresses at least one of the number of connections to each target application instance and a number of packets processed in a specified time period by each target application instance.

### Claim 4 (depends on 1)

The method of claim 1, wherein the numerical values include one weight value for each target application instance, wherein based on the weight values, each load balancer performs a selection of the target application instances for new data message flows.

### Claim 5 (depends on 1)

The method of claim 1, wherein each load balancer in the set of load balancers executes on a physical device in the set of physical devices along with at least one target application instance.

### Claim 6 (depends on 5)

The method of claim 5, wherein each physical device in the set of physical devices executes a virtual switch that intercepts traffic sent to a target application and redirects the intercepted traffic to a particular load balancer for the particular load balancer to perform the load balancing service to select a target application instance to which the traffic should be directed.

### Claim 7 (depends on 6)

The method of claim 6, wherein a virtual switch executing on a particular physical device redirects the intercepted traffic to a load balancer executing on the same physical device.

### Claim 8 (depends on 5)

The method of claim 5, wherein
for a first set of packets for the target application, the load balancer selects a target application instance executing on the same physical device on which the load balancer executes; and
for a second set of packets for the target application, the load balancer selects a target application instance executing on a different physical device than the physical device on which the load balancer executes.

### Claim 9

A non-transitory machine readable medium storing a program for execution by a set of processing units, the program for managing a plurality of load balancers that perform a load balancing service for a plurality of target application instances, the program comprising sets of instructions for:
collecting state information relating to data messages that the set of load balancers distribute to the plurality of target application instances, the plurality of load balancers and target application instances executing on a plurality of physical devices with at least a set of load balancers executing on a set of physical devices on which a set of target application instances execute;
generating aggregated state information from the collected state information;
distributing the aggregated state information to at least a subset of the plurality of load balancers to cause the subset of load balancers to adjust how they distribute new data message flows to the plurality of target application instances; and
providing to each load balancer in the subset of load balancers a set of numerical values that the load balancer uses to spread the data messages among the target application instances as part of an initial configuration of the load balancer,
wherein each load balancer in the subset of load balancers spreads the data messages among the target application instances based on the set of numerical values, and each load balancer in the subset of load balancers that receives the aggregated state information adjusts the load balancer's set of numerical values based on the aggregated state information.

### Claim 10 (depends on 9)

The non-transitory machine readable medium of claim 9, wherein the aggregated state information expresses the data message traffic load on each target application instance in the plurality of target application instances.

### Claim 11 (depends on 9)

The non-transitory machine readable medium of claim 9, wherein the aggregated state information expresses at least one of the number of connections to each target application instance and a number of packets processed in a specified time period by each target application instance.

### Claim 12 (depends on 9)

The non-transitory machine readable medium of claim 9, wherein each physical device in the set of physical devices executes:
a load balancer in the set of load balancers;
at least one target application instance; and
a virtual switch that intercepts traffic sent to a target application and redirects the intercepted traffic to the load balancer executing on the physical device for the load balancer to perform the load balancing service to select a target application instance to which the traffic should be directed.

### Claim 13 (depends on 12)

The method of claim 12, wherein
for a first set of packets for the target application, the load balancer selects a target application instance executing on the same physical device on which the load balancer executes, and
for a second set of packets for the target application, the load balancer selects a target application instance executing on a different physical device than the physical device on which the load balancer executes.
