# US 10,372,478 B2 · Using diversity to provide redundancy of virtual machines

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

- Number: US 10,372,478 B2
- Document ID: US10372478B2
- Status: Granted
- Kind: B2
- Application number: 15/632,456
- Filed: 2017-06-26
- Published: 2017-10-12
- Granted: 2019-08-06
- Earliest claimed: 2015-04-12
- Assignees: AT&T Intellectual Property I, L.P.
- Applicants: AT&T Intellectual Property I, L.P.
- Inventors: Vikram Seenappa; Vivek Mhatre
- Web page: https://patentgrep.com/patent/US10372478B2

## CPC

- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 11/0712: {in a virtual computing platform, e.g. logically partitioned systems}
- G06F 11/14: Error detection or correction of the data by redundancy in operations (error detection or correction of the data by redundancy in hardware G06F11/16)
- G06F 11/1438: {Restarting or rejuvenating}
- G06F 11/1484: {involving virtual machines}
- G06F 11/16: Error detection or correction of the data by redundancy in hardware
- H04L 41/0654: using network fault recovery (ring fault isolation or reconfiguration in loop networks without recovery actions by a network management system H04L12/437)
- H04L 41/0806: for initial configuration or provisioning, e.g. plug-and-play
- H04L 41/0895: Configuration of virtualised networks or elements, e.g. virtualised network function or OpenFlow elements
- H04L 41/40: using virtualisation of network functions or resources, e.g. SDN or NFV entities
- G06F 11/202: {where processing functionality is redundant (redundant communication control functionality G06F11/2005, redundant storage control functionality G06F11/2089)}
- G06F 11/3409: {for performance assessment}
- G06F 2009/45591: {Monitoring or debugging support}
- G06F 2009/45595: {Network integration; Enabling network access in virtual machine instances}
- G06F 2201/815: Virtual
- 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

Concepts and technologies are disclosed herein for using diversity to provide redundancy of virtual machines. A server computer that executes an orchestrator application can receive a virtual machine instantiation request. The server computer can analyze the request to determine needs associated with a virtual machine (including a redundancy requirement). The server computer can obtain resource availability data that indicates availability of resources and includes diversity data used to provide diversity-based redundancy of the virtual machine. The server computer can identify a pool of resources and identify, among the pool, two or more resources. The two or more resources can include a most diverse group of resources of the pool of resources and can be identified based upon the diversity data. The server computer can trigger instantiation of the virtual machine and a copy of the virtual machine on the resources.

## Claims

### Claim 1

A system comprising:
a processor; and
a memory that stores computer-executable instructions that, when executed by the processor, cause the processor to perform operations comprising
analyzing a virtual machine instantiation request to determine a redundancy requirement associated with a virtual machine requested by the virtual machine instantiation request,
obtaining resource availability data that comprises diversity data, wherein the resource availability data indicates availability of resources,
identifying a pool of resources that are capable of hosting the virtual machine,
identifying a plurality of resources of the pool of resources, wherein the plurality of resources comprises a most diverse group of resources of the pool of resources, and wherein the plurality of resources is identified based upon the diversity data, and
triggering instantiation of a plurality of virtual machines on the plurality of resources, wherein the plurality of virtual machines comprises the virtual machine and a copy of the virtual machine.

### Claim 2 (depends on 1)

The system of claim 1, wherein identifying the most diverse group of resources comprises analyzing host names for resources of the pool of resources to determine diversity, wherein the host names are formatted in a dotted string format that comprises the diversity data.

### Claim 3 (depends on 1)

The system of claim 1, wherein the computer-executable instructions, when executed by the processor, cause the processor to perform operations further comprising:
detecting a failure of one of the plurality of virtual machines; and
in response to determining that a failed virtual machine should not be replaced, repairing the failed virtual machine.

### Claim 4 (depends on 1)

The system of claim 1, wherein the computer-executable instructions, when executed by the processor, cause the processor to perform operations further comprising:
detecting a failure of one of the plurality of virtual machines;
determining that a failed virtual machine should be replaced;
determining that enhanced redundancy is not to be provided for the failed virtual machine; and
replacing the failed virtual machine with a single new virtual machine.

### Claim 5 (depends on 1)

The system of claim 1, wherein the computer-executable instructions, when executed by the processor, cause the processor to perform operations further comprising:
detecting a failure of one of the plurality of virtual machines;
determining that a failed virtual machine should be replaced;
determining that enhanced redundancy is to be provided for the failed virtual machine;
determining a number of new virtual machines to be instantiated to provide the enhanced redundancy;
identifying a further pool of resources that are capable of providing needs associated with the new virtual machines;
identifying a most diverse group of the further pool of resources; and
triggering instantiation of the new virtual machines on the most diverse group of the further pool of resources.

### Claim 6

A method comprising:
analyzing, by a processor that executes an orchestrator application, a virtual machine instantiation request to determine a redundancy requirement associated with a virtual machine requested by the virtual machine instantiation request;
obtaining, by the processor, resource availability data that comprises diversity data, wherein the resource availability data indicates availability of resources;
identifying, by the processor, a pool of resources that are capable of hosting the virtual machine;
identifying, by the processor, a plurality of resources of the pool of resources, wherein the plurality of resources comprises a most diverse group of resources of the pool of resources, and wherein the plurality of resources is identified based upon the diversity data; and
triggering, by the processor, instantiation of a plurality of virtual machines on the plurality of resources, wherein the plurality of virtual machines comprises the virtual machine and a copy of the virtual machine.

### Claim 7 (depends on 6)

The method of claim 6, wherein the diversity data comprises data selected from a group of data consisting of vendor information, geographic location information, building information, rack information, row information, virtualization environment information, and power feed information.

### Claim 8 (depends on 6)

The method of claim 6, wherein identifying the plurality of resources comprises identifying the most diverse group of resources, wherein the most diverse group of resources is identified by comparing host names of the resources of the pool of resources, wherein the host names comprise the diversity data formatted as data points separated by a character.

### Claim 9 (depends on 6)

The method of claim 6, wherein the resource availability data is provided by the resources.

### Claim 10 (depends on 6)

The method of claim 6, wherein triggering the instantiation comprises issuing a plurality of commands to the plurality of resources, wherein the plurality of commands cause the plurality of resources to instantiate the plurality of virtual machines.

### Claim 11 (depends on 6)

The method of claim 6, further comprising:
detecting a failure of one of the plurality of virtual machines;
determining that a failed virtual machine should be replaced;
determining that enhanced redundancy is to be provided for the failed virtual machine;
determining a number of new virtual machines to be instantiated to provide the enhanced redundancy;
identifying a further pool of resources that are capable of providing needs associated with the new virtual machines;
identifying a further plurality of resources of the further pool of resources, wherein the further plurality of resources comprises a most diverse group of the further pool of resources; and
triggering instantiation of the new virtual machines on the further plurality of resources.

### Claim 12 (depends on 6)

The method of claim 6, further comprising:
detecting a failure of one of the plurality of virtual machines; and
in response to determining that a failed virtual machine should not be replaced, repairing the failed virtual machine.

### Claim 13 (depends on 6)

The method of claim 6, further comprising:
detecting a failure of one of the plurality of virtual machines;
determining that a failed virtual machine should be replaced;
determining that enhanced redundancy is not to be provided for the failed virtual machine; and
replacing the failed virtual machine with a single new virtual machine.

### Claim 14 (depends on 6)

The method of claim 6, wherein the plurality of resources are located at a single data center.

### Claim 15 (depends on 6)

The method of claim 6, wherein the plurality of resources are located at a plurality of data centers.

### Claim 16

A computer storage medium having computer-executable instructions stored thereon that, when executed by a processor, cause the processor to perform operations comprising:
analyzing a virtual machine instantiation request to determine a redundancy requirement associated with a virtual machine requested by the virtual machine instantiation request;
obtaining resource availability data that comprises diversity data, wherein the resource availability data indicates availability of resources;
identifying a pool of resources that are capable of hosting the virtual machine;
identifying a plurality of resources of the pool of resources, wherein the plurality of resources comprises a most diverse group of resources of the pool of resources, and wherein the plurality of resources is identified based upon the diversity data; and
triggering instantiation of a plurality of virtual machines on the plurality of resources, wherein the plurality of virtual machines comprises the virtual machine and a copy of the virtual machine.

### Claim 17 (depends on 16)

The computer storage medium of claim 16, wherein identifying the most diverse group of resources comprises analyzing host names for resources of the pool of resources to determine diversity, wherein the host names are formatted in a dotted string format that comprises the diversity data.

### Claim 18 (depends on 16)

The computer storage medium of claim 16, wherein the computer-executable instructions, when executed by the processor, cause the processor to perform operations further comprising:
detecting a failure of one of the plurality of virtual machines; and
in response to determining that a failed virtual machine should not be replaced, repairing the failed virtual machine.

### Claim 19 (depends on 16)

The computer storage medium of claim 16, wherein the computer-executable instructions, when executed by the processor, cause the processor to perform operations further comprising:
detecting a failure of one of the plurality of virtual machines;
determining that a failed virtual machine should be replaced;
determining that enhanced redundancy is not to be provided for the failed virtual machine; and
replacing the failed virtual machine with a single new virtual machine.

### Claim 20 (depends on 16)

The computer storage medium of claim 16, wherein the computer-executable instructions, when executed by the processor, cause the processor to perform operations further comprising:
detecting a failure of one of the plurality of virtual machines;
determining that a failed virtual machine should be replaced;
determining that enhanced redundancy is to be provided for the failed virtual machine;
determining a number of new virtual machines to be instantiated to provide the enhanced redundancy;
identifying a further pool of resources that are capable of providing needs associated with the new virtual machines;
identifying a most diverse group of the further pool of resources; and
triggering instantiation of the new virtual machines on the most diverse group of the further pool of resources.
