IP Library Granted Patent US 7,730,183
Granted Patent B2
US 7,730,183 · App. 11/035,260 · Granted Jun 1, 2010

System and method for generating virtual networks

Assignee: Microsoft Corporation
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 7,730,183
App. No.
11/035,260
Granted
Jun 1, 2010
Kind
B2
Abstract

A system and method for generating and/or managing virtual network(s) is provided. The system provides an interface for end-user(s) to create a virtual network (e.g., on-demand). The virtual network comprises a plurality of servers that allow the user to, for example, develop and/or test software, migrate applications, apply tasks and/or troubleshoot scenarios in a simulated, distributed environment. A user can communicate with the system via an interface (e.g., web-based) to create and/or manage the virtual network. Additionally, the system can employ a common infrastructure to facilitate creation and/or management of a variety of virtual deployment configurations. The common infrastructure can be designed, for example, by administrator(s) having knowledge of hardware and/or software available for employment within the virtual network. The system can further provide a load-balancing mechanism to determine and/or distribute workload to computer(s) with available resource(s). Additionally, the system can expire virtual session(s) that are no longer in use thereby releasing resources for other user(s) and/or session(s).

Claims (61)

1. A virtual network management system comprising:

a memory; and

a processor, operatively coupled to the memory, the processor executing computer-executable components, comprising:

a user interface component that receives requirements input by a user for a virtual network, the virtual network comprising one or more virtual devices that are interconnected, the user interface component generates an XML message comprising at least the requirements and empty fields reserved for configuration information of the virtual network, wherein the user interface component parses the message to retrieve the requirements and calculate resources required to support the requirements;

an identification component that receives the message generated by the user interface component and that identifies one or more server(s) from a plurality of servers available to the virtual network that fulfills the requirements from the message and has available resources, the identification component updates at least a subset of the empty fields of the received message with configuration information of the one or more server(s) identified with the identification component; and

a creation component that receives the updated message from the identification component and creates a virtual server session associated with the virtual network based, at least in part, upon the one or more server(s) identified by the identification component, wherein the creation component creates the virtual server session by performing the following:

creating a subdirectory to host the virtual server session,

creating a differencing drive file that defines the deployment configuration,

creating a virtual machine, and attaching the differencing file to the virtual machine,

creating a virtual network, and attaching the virtual machine to the virtual network, and

starting the virtual network.

2. The system of claim 1 , the requirements input by the user comprising at least one of: an operating system, a processor, a memory quantity, a virtual storage quantity, a graphics requirement, a floppy drive, a port for a peripheral device, or a device.

3. The system of claim 1 , the requirements input by the user further providing a life-time of the virtual network.

4. The system of claim 1 , the user interface component employing a common infrastructure to facilitate creation or management of a variety of virtual deployment configurations.

5. The system of claim 1 , the user interface component comprising a web-based interface that allows a user to configure the virtual network.

6. The system of claim 1 , identification of the one or more server(s) by the identification component being further based, at least in part, upon load-balancing across the plurality of servers.

7. The system of claim 1 , further comprising a server data store that stores configuration information for the plurality of servers.

8. The system of claim 7 , identification of the one or more server(s) by the identification component based, at least in part, upon configuration information stored in the server data store.

9. The system of claim 1 , further comprising a configuration data store that stores configuration information for a desired deployment configuration.

10. The system of claim 9 , identification of the one or more server(s) by the identification component based, at least in part, upon configuration information stored in the configuration data store.

11. The system of claim 1 , the updated message of the identification component comprising a target driver letter, job identifier, or a server configuration.

12. The system of claim 1 further comprising an expiration component that can expire a virtual session that is no longer in use by releasing resources associated with the session.

13. The system of claim 1 , the user interface component further providing information that specifies at least one application to include or simulate in the virtual network.

14. A method for allocating system resources in a virtual network environment comprising:

employing a processor executing computer-executable instructions stored on a computer-readable storage medium to implement the following acts:

receiving user requirements associated with a virtual network, the virtual network comprising one or more virtual devices that are interconnected;

creating an updateable XML message based, at least in part, upon the user requirements;

sending the updateable message to a first message queue;

retrieving the updateable message from the first message queue;

parsing the user requirements from the message;

calculating a quantity of resources to fulfill the user requirements for the virtual network;

identifying available server(s) of a plurality of servers, if any, that fulfill the user requirements from a server data store having configuration information for the plurality of servers in a deployment infrastructure available for the virtual network;

validating resources on the identified server(s) so as to verify that the identified server can fulfill the user requirements;

updating the updateable message that has the user requirements to further include configuration information of the available identified server(s);

sending the updateable message that has the user requirements and configuration information for the identified server(s) to a second message queue;

retrieving the updateable message that has the user requirements and server configuration information from the second message queue;

parsing the configuration information from the updateable message; and

creating a virtual network based on the configuration information by performing the following:

creating a subdirectory to host the virtual server session,

creating a differencing drive file that defines the deployment configuration,

creating a virtual machine, and attaching the differencing file to the virtual machine,

creating a virtual network, and attaching the virtual machine to the virtual network, and

starting the virtual network.

15. The method of claim 14 , identifying available server(s) further based on load-balancing of the plurality of servers.

16. A computer-implemented system for managing a virtual server session comprising:

at least one processor that executes computer-executable code stored in memory to effect the following:

receive requirements from a user for a virtual network, the virtual network comprising one or more virtual devices that are interconnected;

generate an XML message having requirements, the message further provides empty elements retained for configuration information associated with the requirements;

receive and parse the user requirements from the message;

identify server(s) available to a deployment structure of the virtual server session from the requirements parsed from the message, the identification of the sewer(s) includes calculating resources necessary for the requirements, and determining resources of the servers using information stored in a server data store and information associated with current and scheduled load balancing of the sewers;

update the empty elements of the message with configuration information of the identified server(s);

receive and parse the message having the configuration information of the identified server(s);

create a virtual server session from the parsed message having the configuration information of the identified sewer(s) by performing the following:

creating a subdirectory to host the virtual server session,

creating a differencing drive file that defines the deployment configuration,

creating a virtual machine, and attaching the differencing file to the virtual machine,

creating a virtual network, and attaching the virtual machine to the virtual network, and

staffing the virtual network;

update the message with the virtual machine and a time that the creation of the virtual server session is completed; and

notify the user that initiated the request via email that the virtual server session has been created.

17. The system of claim 1 , the user interface component receives requirements via a web-based interface.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034543/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 3, 2005
From: BROWN, S. MORRIS; ZILINSKAS, ADAM E.; HUANG, DANNY; ABINION, ERWIN C.; MACHADO DE WRIGHT, LAURA DELHY; FEIGNER, RANDALL J.
To: MICROSOFT CORPORATION
Reel/Frame 015723/0668 →
Continuity (1)
Related Publication 20060155708A1 · Jul 13, 2006