IP Library Granted Patent US 9,268,586
Granted Patent B2
US 9,268,586 · App. 13/467,686 · Granted Feb 23, 2016

Wake-on-LAN and instantiate-on-LAN in a cloud computing system

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 9,268,586
App. No.
13/467,686
Granted
Feb 23, 2016
Kind
B2
Abstract

Several different embodiments of a flexible virtual machine management system are described. The virtual machine management system is used to instantiate, wake, move, sleep, and destroy individual operating environments in a cloud or cluster. In various embodiments, the virtual machine management system uses single messages to perform complex operations, allowing for flexible and scalable use of virtual resources in a cluster while still reducing energy consumption to the minimum possible level. In one preferred embodiment, Wake-on-LAN packets are used as the messages.

Claims (60)

1. A method for remotely managing a hardware/software platform, the method comprising:

receiving, at a first location, using a first network interface card (NIC) associated with a hardware portion of said platform, a management packet identifying a first virtual machine associable with the platform, the virtual machine including a logical container and an operating environment;

evaluating said management packet via an instruction processor executing on said platform to determine a message type;

if the message type is a wake message, then:

evaluating whether the first virtual machine has been previously allocated;

if the first virtual machine has been previously allocated, making a logical container available and loading an operating environment encapsulating the state of the previously-allocated first virtual machine into the logical container;

if the first virtual machine has not been previously allocated, identifying an instruction sequence from the management packet, the instruction sequence suitable for instantiating a virtual machine; making a logical container available for the first virtual machine, and executing the instruction sequence to instantiate the first virtual machine using the logical container.

2. The method of claim 1 wherein if the message is a content message, then:

evaluating whether the first virtual machine is currently active;

if the first virtual machine is currently active, then routing the content message to the first virtual machine; and

if the first virtual machine is not currently active, storing the content message temporarily; following the steps associated with a wake message to instantiate the first virtual machine; and routing the content message to the first virtual machine.

3. The method of claim 2 , wherein prior to identifying a first virtual machine associable with the platform, identifying a first physical machine associated with the platform;

evaluating whether said first physical machine is active; and

if the first physical machine is not active, waking the first physical machine prior to evaluating whether the first virtual machine has been previously allocated.

4. The method of claim 2 , wherein prior to identifying a first virtual machine associable with the platform, identifying a first set of physical machines sharing an electrical bus;

evaluating whether said first set of physical machines are active; and

if the first set of physical machines are not active, activating the electrical bus and waking a machine from the first set physical machines prior to evaluating whether the first virtual machine has been previously allocated.

5. The method of claim 1 wherein if the message is a clone message, then:

identifying a second location operable to host a virtual machine; following the steps associated with a wake message to create a second virtual machine that is a clone of the first virtual machine, using the first virtual machine as a template;

identifying a routing rule governing the routing of messages sent to the first location and the second location; and

routing messages according to the routing rule.

6. The method of claim 5 wherein if the message is a move message, then:

following the steps associated with a clone message create a second virtual machine that is a clone of the first virtual machine;

using a routing rule redirecting all messages addressed to the first location to the second location;

routing messages according to the routing rule; and

deallocating the first virtual machine.

7. The method of claim 1 wherein if the message is a sleep message, then:

identifying a routing rule governing the routing of messages sent to the first location;

placing the first virtual machine into a sleep state; and

routing messages according to the routing rule.

8. The method of claim 7 , further comprising the steps of:

after placing the first virtual machine into a sleep state; determining whether a second virtual machine is active on the same hardware portion of the platform; and

if there is not a second virtual machine active, placing the hardware portion of the platform into a lower power state.

9. The method of claim 8 , further comprising the steps of

if there is a second virtual machine active, determining whether a third virtual machine is active on the same hardware portion of the platform;

if there is not a third virtual machine active, migrating the second virtual machine to a second hardware/software platform; and

placing the hardware portion of the platform into a lower power state.

10. The method of claim 1 wherein if the message is a deallocate message, then:

identifying a routing rule governing the routing of messages sent to the first location;

deallocating the first virtual machine; and

routing messages according to the routing rule.

11. The method of claim 1 , wherein prior to identifying a first virtual machine associable with the platform, identifying a first physical machine associated with the platform;

evaluating whether said first physical machine is active; and

if the first physical machine is not active, waking the first physical machine prior to evaluating whether the first virtual machine has been previously allocated.

12. The method of claim 1 , wherein prior to identifying a first virtual machine associable with the platform, identifying a first set of physical machines sharing an electrical bus;

evaluating whether said first set of physical machines are active; and

if the first set of physical machines are not active, activating the electrical bus and waking a machine from the first set physical machines prior to evaluating whether the first virtual machine has been previously allocated.

13. A system for computation, the system comprising:

a combination hardware/software platform, the hardware portion of the platform including a first network interface card (NIC), a processor, a memory, a computer-readable storage medium, and a power controller;

the software portion of the platform including a hypervisor, wherein the hypervisor is associated with a plurality of logical containers, each logical container including a virtual network interface;

wherein each logical container is operable to host an operating environment; and wherein each logical container and each operating environment can be in one of a plurality of states, including an active state, an inactive state, and an unallocated state; and wherein the hypervisor, the logical containers, and the operating environments can be manipulated by a sequence of computer-readable instructions;

and wherein, responsive to a message received at the first NIC, the message identifying a first virtual interface associated with a first operating environment, the platform is operable to determine a message type and evaluate whether the identified first operating environment has been previously allocated and whether the identified first operating environment is active; and take action thereon using the processor to execute a sequence of computer-readable instructions that, when executed:

if the message type indicates that the identified first operating environment should be active:

if the first operating environment has been already allocated and is active, route the message to the virtual network interface of the logical container hosting the identified first operating environment;

if the first operating environment has been already allocated but is not active, make a first logical container available on the platform and load a representation encapsulating the state of the previously-allocated first operating environment into the first logical container, and route the message to the virtual network interface of the logical container hosting the identified first operating environment;

if the first operating environment has not been already allocated, make a first logical container available; instantiate, using one or more instructions included in the message received at the first NIC, the first identified operating environment in the first logical container; and route the message to the virtual network interface of the logical container hosting the identified first operating environment.

14. The system of claim 13 wherein the hardware portion of the platform can be in one of a plurality of states, including an active state and a low power state; and

wherein the power controller is operable to change the state of the hardware portion of the platform to an active state responsive to the message received at the first NIC and prior to the execution of the sequence of computer-readable instructions by the processor.

15. The system of claim 13 wherein the message uses a MAC address to identify the first virtual interface.

16. The system of claim 13 wherein the message is sent using the Ethernet protocol.

Assignments (5)
RELEASE OF PATENT SECURITIES Recorded Mar 13, 2024
From: CITIBANK, N.A.
To: RACKSPACE US, INC.
Reel/Frame 066795/0177 →
SECURITY AGREEMENT (FIRST LIEN) Recorded Mar 13, 2024
From: RACKSPACE US, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 066795/0282 →
CORRECTIVE ASSIGNMENT TO CORRECT THE DELETE PROPERTY NUMBER PREVIOUSLY RECORDED AT REEL: 40564 FRAME: 914. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Mar 21, 2019
From: RACKSPACE US, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 048658/0637 →
SECURITY AGREEMENT Recorded Nov 4, 2016
From: RACKSPACE US, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 040564/0914 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 9, 2012
From: VOCCIO, PAUL; MESSERLI, ANTONY JOEL; MICK, JASON L.; WALSH, ALEXANDER
To: RACKSPACE US, INC.
Reel/Frame 028182/0883 →