# US 10,481,897 B2 · System and method for resilient software upgrades in a virtual datacenter

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

- Number: US 10,481,897 B2
- Document ID: US10481897B2
- Status: Granted
- Kind: B2
- Application number: 15/791,434
- Filed: 2017-10-24
- Published: 2019-01-10
- Granted: 2019-11-19
- Earliest claimed: 2017-07-04
- Assignees: VMware, Inc.
- Applicants: Vmware, Inc.
- Inventors: Amol Manohar Vaikar
- Web page: https://patentgrep.com/patent/US10481897B2

## CPC

- G06F 8/65: Updates (security arrangements therefor G06F21/57)
- G06F 9/455: Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F 9/45533: {Hypervisors; Virtual machine monitors}
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 11/1433: {during software upgrading}
- G06F 2009/45595: {Network integration; Enabling network access in virtual machine instances}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

In one example, resilient software application upgrades in a virtual datacenter is disclosed, in which network flow data is periodically obtained between a plurality of APPVMs and/or containers and deep packet inspection information from firewalls associated with the obtained network flow data in the virtual datacenter. Dependency relationships between the plurality of APPVMs and/or containers are then obtained based on the periodically obtained network flow data, the periodically obtained deep packet inspection information, and a network flow criteria. An upgrade that is about to happen to a software residing in one or more of the plurality of APPVMs and/or containers is determined. One or more of the plurality of APPVMs and/or containers affected by the software upgrade is determined based on the determined dependency relationships. Snapshots of the affected one or more of the plurality of APPVMs and/or containers are then obtained before initiating the software upgrade.

## Claims

### Claim 1

A non-transitory machine-readable medium storing instructions executable by a processing resource to:
periodically obtain network flow data between a plurality of application virtual machines (APPVMs) and/or containers in a virtual datacenter;
periodically obtain deep packet inspection information from firewalls associated with the periodically obtained network flow data in the virtual datacenter;
determine dependency relationships between the plurality of APPVMs and/or containers based on the periodically obtained network flow data, the periodically obtained deep packet inspection information, and a network flow criteria;
determine whether an upgrade is going to happen to a software residing in one or more of the plurality of APPVMs and/or containers;
determine one or more of the plurality of APPVMs and/or containers affected by the software upgrade based on the determined dependency relationships;
obtain snapshots of the affected one or more of the plurality of APPVMs and/or containers; and
initiate the software upgrade upon obtaining the snapshots of the affected one or more of the plurality of APPVMs and/or containers.

### Claim 2 (depends on 1)

The non-transitory machine-readable medium of claim 1, wherein the deep packet inspection information comprises response time between network and application, purpose of communication request, application traffic volume details, and/or user conversation details.

### Claim 3 (depends on 2)

The non-transitory machine-readable medium of claim 2, wherein the purpose of communication request is selected from a group consisting of database request, storage area network (SAN) request, and hypertext transfer protocol (HTTP) request.

### Claim 4 (depends on 1)

The non-transitory machine-readable medium of claim 1, wherein the network flow criteria are selected from a group consisting of volume of network flow between the plurality of APPVMs and/or containers, frequency of the network flow between the plurality of APPVMs and/or containers, duration of the network flow between the plurality of APPVMs and/or containers, and nature of the network flow between the plurality of APPVMs and/or containers.

### Claim 5 (depends on 1)

The non-transitory machine-readable medium of claim 1, wherein periodically obtaining the network flow data and the deep packet inspection information comprises:
periodically obtaining the network flow data and the deep packet inspection information within a software defined network (SDN) platform and a virtualization infrastructure layer.

### Claim 6 (depends on 1)

The non-transitory machine-readable medium of claim 1, wherein determining the dependency relationships between the plurality of APPVMs and/or containers comprises:
creating one or more topology graphs between the software residing in the one or more of the plurality of APPVMs and/or containers based on the network flow criteria.

### Claim 7 (depends on 6)

The non-transitory machine-readable medium of claim 6, wherein determining the one or more of the plurality of APPVMs and/or containers that are affected by the software upgrade based on the determined dependency relationships comprises:
determine one or more of the plurality of APPVMs and/or containers that are affected by the software upgrade based on the created one or more topology graphs.

### Claim 8 (depends on 1)

The non-transitory machine-readable medium of claim 1, wherein the software is a distributed software application.

### Claim 9

A method for resilient software upgrades in a virtual datacenter, the method comprising:
periodically obtaining network flow data between a plurality of application virtual machines (APPVMs) and/or containers in the virtual datacenter;
periodically obtaining deep packet inspection information from firewalls associated with the periodically obtained network flow data in the virtual datacenter;
determining dependency relationships between the plurality of APPVMs and/or containers based on the periodically obtained network flow data, the periodically obtained deep packet inspection information, and a network flow criteria;
determining whether an upgrade is going to happen to a software residing in one or more of the plurality of APPVMs and/or containers;
determining one or more of the plurality of APPVMs and/or containers affected by the software upgrade based on the determined dependency relationships;
obtaining snapshots of the affected one or more of the plurality of APPVMs and/or containers; and
initiating the software upgrade upon obtaining the snapshots of the affected one or more of the plurality of APPVMs and/or containers.

### Claim 10 (depends on 9)

The method of claim 9, wherein the deep packet inspection information comprises response time between network and application, purpose of communication request, application traffic volume details, and/or user conversation details.

### Claim 11 (depends on 9)

The method of claim 9, wherein the network flow criteria are selected from a group consisting of volume of network flow between the plurality of APPVMs and/or containers, frequency of the network flow between the plurality of APPVMs and/or containers, duration of the network flow between the plurality of APPVMs and/or containers, and nature of the network flow between the plurality of APPVMs and/or containers.

### Claim 12 (depends on 9)

The method of claim 9, wherein periodically obtaining the network flow data and the deep packet inspection information comprises:
periodically obtaining the network flow data and the deep packet inspection information within a software defined network (SDN platform and a virtualization infrastructure layer.

### Claim 13 (depends on 9)

The method of claim 9, wherein determining the dependency relationships between the plurality of APPVMs and/or containers comprises:
creating one or more topology graphs between the software residing in the one or more of the plurality of APPVMs and/or containers based on the network flow criteria.

### Claim 14 (depends on 13)

The method of claim 13, wherein determining the one or more of the plurality of APPVMs and/or containers that are affected by the software upgrade based on the determined dependency relationships comprises:
determine one or more of the plurality of APPVMs and/or containers that are affected by the software upgrade based on the created one or more topology graphs.

### Claim 15

A system comprising:
a processor; and
a non-transitory machine-readable medium storing instructions for controlling the processor to be operable to:
periodically obtain network flow data between a plurality of application virtual machines (APPVMs) and/or containers in a virtual datacenter;
periodically obtain deep packet inspection information from firewalls associated with the periodically obtained network flow data in the virtual datacenter;
determine dependency relationships between the plurality of APPVMs and/or containers based on the periodically obtained network flow data, the periodically obtained deep packet inspection information, and a network flow criteria;
determine whether an upgrade is going to happen to a software residing in one or more of the plurality of APPVMs and/or containers;
determine one or more of the plurality of APPVMs and/or containers affected by the software upgrade based on the determined dependency relationships;
obtain snapshots of the affected one or more of the plurality of APPVMs and/or containers; and
initiate the software upgrade upon obtaining the snapshots of the affected one or more of the plurality of APPVMs and/or containers.

### Claim 16 (depends on 15)

The system of claim 15, wherein the deep packet inspection information comprises response time between network and application, purpose of communication request, application traffic volume details, and/or user conversation details.

### Claim 17 (depends on 16)

The system of claim 16, wherein the network flow criteria are selected from a group consisting of volume of network flow between the plurality of APPVMs and/or containers, frequency of the network flow between the plurality of APPVMs and/or containers, duration of the network flow between the plurality of APPVMs and/or containers, and nature of the network flow between the plurality of APPVMs and/or containers.

### Claim 18 (depends on 15)

The system of claim 15, wherein periodically obtaining the network flow data and the deep packet inspection information comprises:
periodically obtaining the network flow data and the deep packet inspection information within a software defined network (SDN) platform and a virtualization infrastructure layer.

### Claim 19 (depends on 15)

The system of claim 15, wherein determining the dependency relationships between the plurality of APPVMs and/or containers comprises:
creating one or more topology graphs between the software residing in the one or more of the plurality of APPVMs and/or containers based on the network flow criteria.

### Claim 20 (depends on 19)

The system of claim 19, wherein determining the one or more of the plurality of APPVMs and/or containers that are affected by the software upgrade based on the determined dependency relationships comprises:
determine one or more of the plurality of APPVMs and/or containers that are affected by the software upgrade based on the created one or more topology graphs.
