# US 2019/0379729 A1 · Datapath-driven fully distributed east-west application load balancer

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

- Number: US 2019/0379729 A1
- Document ID: US20190379729A1
- Status: Published application
- Kind: A1
- Application number: 16/001,557
- Filed: 2018-06-06
- Published: 2019-12-12
- Earliest claimed: 2018-06-06
- Assignees: VMware, Inc.
- Applicants: VMware, Inc.
- Inventors: Jagdish S. PATEL; Srikanth V. GARIMELLA; Mukesh HIRA
- Web page: https://patentgrep.com/patent/US20190379729A1

## CPC

- H04L 41/142: using statistical or mathematical methods
- G06F 9/45533: {Hypervisors; Virtual machine monitors}
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 11/301: {where the computing system is a virtual computing platform, e.g. logically partitioned systems (virtual machines G06F9/45533; logical partitioning of resources G06F9/5077)}
- G06F 11/3055: {Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available (error or fault processing without redundancy G06F11/0703; error detection or correction by redundancy in data representation G06F11/08; error detection or correction of the data by redundancy in operations G06F11/14; error detection or correction by redundancy in hardware G06F11/16)}
- G06F 11/3433: {for load management (allocation of a server based on load conditions G06F9/505; load rebalancing G06F9/5083; redistributing the load in a network by a load balancer H04L67/1029)}
- H04L 41/40: using virtualisation of network functions or resources, e.g. SDN or NFV entities
- H04L 43/0876: Network utilisation, e.g. volume of load or congestion level
- H04L 43/10: Active monitoring, e.g. heartbeat, ping or trace-route
- H04L 43/20: the monitoring system or the monitored elements being virtualised, abstracted or software-defined entities, e.g. SDN or NFV
- H04L 67/1008: based on parameters of servers, e.g. available memory or workload (monitoring of computer activity G06F11/30)
- G06F 2201/815: Virtual
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

The disclosure provides an approach for load balancing packets within a data center. The approach leverages dynamically collected and up-to-date health information on each virtual computing instance located within the data center. In one embodiment, health monitoring modules, located within hypervisors of each host computer, collect health statistics on local virtual computing instances. Each health monitoring module shares its locally collected health statistics with every other health monitoring module. Each health monitoring module provides the shared health statistics, on all virtual computing instances within the data center, to a local load balancing module located within the hypervisor of each host computer. Each load balancing module uses health statistics of all virtual computing instances to load balance packets within the data center. Further, the disclosure describes an affinity-based load balancing approach in which a local load balancing module may give preference to local virtual computing instances when making load balancing decisions.

## Claims

### Claim 1

A method of load balancing a network packet, the method comprising:
receiving, by a first health monitoring (HM) module running on a first host device, health information of a plurality of virtual computing instances (VCIs) that are running on a plurality of host devices;
providing, by the first HM module to a first load balancing (LB) module running on the first host device, the health information of the plurality of VCIs;
receiving, at the first LB module, a first network packet;
selecting, by the first LB module, a destination VCI from the plurality of VCIs to process the first network packet based on the health information.

### Claim 2 (depends on 1)

The method of claim 1, wherein each of the plurality of host devices includes an HM module and an LB module that each receives the health information.

### Claim 3 (depends on 1)

The method of claim 1, wherein the host device comprises one of a physical host machine or a host VCI running on the physical host machine.

### Claim 4 (depends on 1)

The method of claim 1, wherein the receiving the first network packet comprises receiving the first network packet from a first VCI running on the first host device, the method further comprising:
subsequent to the selecting, changing a destination address of the first network packet to the destination address of the destination VCI; and
receiving from the destination VCI, by the first LB module, a response network packet.

### Claim 5 (depends on 4)

The method of claim 4, wherein the changing a destination address comprises changing an original destination address to the destination address of the destination VCI, wherein the original address is a virtual address associated with a subset of VCIs of the plurality of VCIs.

### Claim 6 (depends on 1)

The method of claim 1, wherein the receiving the health information comprises receiving local health information of a local plurality of VCIs running on the first host device.

### Claim 7 (depends on 1)

The method of claim 1, wherein the selecting the destination VCI comprises assigning a higher priority to VCIs of the plurality of VCIs located on the first host device than to VCIs of the plurality of VCIs located on other host devices.

### Claim 8 (depends on 1)

The method of claim 1, wherein the health information comprises information on the number of connections of each VCI of the plurality of VCIs, central processing unit (CPU) utilization by each VCI of the plurality of VCIs, memory utilization by each VCI of the plurality of VCIs, whether each VCI of the plurality of VCIs is operational, or whether a service running on each VCI of the plurality of VCIs is operational.

### Claim 9 (depends on 1)

The method of claim 1, further comprising, responsive to the selecting, storing within a cache a mapping between (a) at least one identifier of a source of the network packet, and (b) the destination VCI.

### Claim 10

A non-transitory computer readable medium comprising instructions to be executed in a processor of a computer system, the instructions when executed in the processor cause the computer system to carry out a method of load balancing a network packet, the method comprising:
receiving, by a first health monitoring (HM) module running on a first host device, health information of a plurality of virtual computing instances (VCIs) that are running on a plurality of host devices;
providing, by the first HM module to a first load balancing (LB) module running on the first host device, the health information of the plurality of VCIs;
receiving, at the first LB module, a first network packet;
selecting, by the first LB module, a destination VCI from the plurality of VCIs to process the first network packet based on the health information.

### Claim 11 (depends on 10)

The non-transitory computer readable medium of claim 10, wherein each of the plurality of host devices includes an HM module and an LB module that each receives the health information.

### Claim 12 (depends on 10)

The non-transitory computer readable medium of claim 10, wherein the host device comprises one of a physical host machine or a host VCI running on the physical host machine.

### Claim 13 (depends on 10)

The non-transitory computer readable medium of claim 10, wherein the receiving the first network packet comprises receiving the first network packet from a first VCI running on the first host device, the method further comprising:
subsequent to the selecting, changing a destination address of the first network packet to the destination address of the destination VCI; and
receiving from the destination VCI, by the first LB module, a response network packet.

### Claim 14 (depends on 13)

The non-transitory computer readable medium of claim 13, wherein the changing a destination address comprises changing an original destination address to the destination address of the destination VCI, wherein the original address is a virtual address associated with a subset of VCIs of the plurality of VCIs.

### Claim 15 (depends on 10)

The non-transitory computer readable medium of claim 10, wherein the receiving the health information comprises receiving local health information of a local plurality of VCIs running on the first host device.

### Claim 16 (depends on 10)

The non-transitory computer readable medium of claim 10, wherein the selecting the destination VCI comprises assigning a higher priority to VCIs of the plurality of VCIs located on the first host device than to VCIs of the plurality of VCIs located on other host devices.

### Claim 17 (depends on 10)

The non-transitory computer readable medium of claim 10, wherein the health information comprises information on the number of connections of each VCI of the plurality of VCIs, central processing unit (CPU) utilization by each VCI of the plurality of VCIs, memory utilization by each VCI of the plurality of VCIs, whether each VCI of the plurality of VCIs is operational, or whether a service running on each VCI of the plurality of VCIs is operational.

### Claim 18 (depends on 10)

The non-transitory computer readable medium of claim 10, further comprising, responsive to the selecting, storing within a cache a mapping between (a) at least one identifier of a source of the network packet, and (b) the destination VCI.

### Claim 19

A computer system comprising:
a plurality of host devices comprising a plurality of virtual computing instances (VCIs);
a first host device comprising a first health monitoring (HM) module; and
a processor, wherein the processor is programmed to carry out a method of load balancing a network packet, the method comprising:
receiving, by the first HM module, health information of the plurality of virtual computing instances (VCIs);
providing, by the first HM module to a first load balancing (LB) module running on the first host device, the health information of the plurality of VCIs;
receiving, at the first LB module, a first network packet;
selecting, by the first LB module, a destination VCI from the plurality of VCIs to process the first network packet based on the health information.

### Claim 20 (depends on 19)

The computer system of claim 19, wherein each of the plurality of host devices includes an HM module and an LB module that each receives the health information.
