U.S. patent application number 13/920884 was filed with the patent office on 2014-12-04 for dynamically migrating virtual machines and gateways.
The applicant listed for this patent is Microsoft Corporation. Invention is credited to Gregory M. Cusanza, Uladzimir V. Raikou, Pradeep Senniappan, Natalia Valeryevna Varava.
Application Number | 20140359091 13/920884 |
Document ID | / |
Family ID | 51986434 |
Filed Date | 2014-12-04 |
United States Patent
Application |
20140359091 |
Kind Code |
A1 |
Senniappan; Pradeep ; et
al. |
December 4, 2014 |
DYNAMICALLY MIGRATING VIRTUAL MACHINES AND GATEWAYS
Abstract
Improving a distributed network environment. A method includes
determining physical element properties of physical elements in a
virtualized network topology. The method further includes
determining gateway placement on a first physical element of the
virtualized network topology. The method further includes
determining utilization of physical elements in the virtualized
network topology. Based on the physical element properties, gateway
placement, and utilization of physical elements in the virtualized
network topology, the method further includes determining an
improved virtualized network topology to improve use of physical
elements in the virtualized network topology
Inventors: |
Senniappan; Pradeep;
(Redmond, WA) ; Raikou; Uladzimir V.; (Kirkland,
WA) ; Varava; Natalia Valeryevna; (Bellevue, WA)
; Cusanza; Gregory M.; (Redmond, WA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
Microsoft Corporation |
Redmond |
WA |
US |
|
|
Family ID: |
51986434 |
Appl. No.: |
13/920884 |
Filed: |
June 18, 2013 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
61830522 |
Jun 3, 2013 |
|
|
|
Current U.S.
Class: |
709/221 |
Current CPC
Class: |
H04L 41/12 20130101;
G06F 9/4856 20130101; G06F 2009/4557 20130101 |
Class at
Publication: |
709/221 |
International
Class: |
H04L 12/24 20060101
H04L012/24 |
Claims
1. In a virtualized networking environment, a method of improving
the network environment, the method comprising: determining
physical element properties of physical elements in a virtualized
network topology; determining gateway placement on a first physical
element of the virtualized network topology; determining
utilization of physical elements in the virtualized network
topology; and based on the physical element properties, gateway
placement, and utilization of physical elements in the virtualized
network topology, determining an improved virtualized network
topology to improve use of physical elements in the virtualized
network topology.
2. The method of claim 1, further comprising using the determined
improved virtualized network topology, reconfiguring the
virtualized network topology to move one or more virtual gateways
from the first physical element of the virtualized network topology
to a second physical element of the virtualized network
topology.
3. The method of claim 2, wherein reconfiguring the virtualized
network topology to move one or more virtual gateways from the
first physical element of the virtualized network topology to a
second physical element of the virtualized network topology
comprises: creating a replica of a gateway; deploying the replica
of the gateway at the second physical element of the virtualized
network topology; routing virtualized network traffic flow to the
replica of the gateway; and deleting gateway configuration
information associated with the first physical element for the
gateway.
4. The method of claim 2, further comprising moving one or more
virtual machines in the virtualized network topology to the second
physical element.
5. The method of claim 1, further comprising, identifying
additional physical resources needed to implement the improved
virtualized network topology, and indicating those resources to a
user to allow the user to add additional resources to implement the
improved virtualized network topology.
6. The method of claim 1, further comprising, identifying
under-utilized physical resources in the virtualized network
topology and providing an indication of the under-utilized physical
resources.
7. The method of claim 1, wherein determining physical element
properties of physical elements in a virtualized network topology
is performed using a plug-in at a virtual machine management
component that functions with 3.sup.rd party network management
solutions to discover a network topology.
8. The method of claim 1, wherein determining utilization of
physical elements in the virtualized network topology is performed
using a plug-in at a virtual machine management component that
interacts with physical network devices which provide network
utilization information to the virtual machine management
component.
9. In a virtualized networking environment, a system for improving
the network environment, the method comprising one or more
processors; and one or more computer readable media, wherein the
one or more computer readable media comprise computer-executable
instructions that when executed by at least one of the one or more
processors cause the system to perform the following: determining
physical element properties of physical elements in a virtualized
network topology; determining gateway placement on a first physical
element of the virtualized network topology; determining
utilization of physical elements in the virtualized network
topology; and based on the physical element properties, gateway
placement, and utilization of physical elements in the virtualized
network topology, determining an improved virtualized network
topology to improve use of physical elements in the virtualized
network topology.
10. The system of claim 9, wherein the one or more computer
readable media comprise computer-executable instructions that when
executed by at least one of the one or more processors cause the
system to, using the determined improved virtualized network
topology, reconfigure the virtualized network topology to move one
or more virtual gateways from the first physical element of the
virtualized network topology to a second physical element of the
virtualized network topology.
11. The system of claim 10, wherein reconfiguring the virtualized
network topology to move one or more virtual gateways from the
first physical element of the virtualized network topology to a
second physical element of the virtualized network topology
comprises: creating a replica of a gateway; deploying the replica
of the gateway at the second physical element of the virtualized
network topology; routing virtualized network traffic flow to the
replica of the gateway; and deleting gateway configuration
information associated with the first physical element for the
gateway.
12. The system of claim 10, wherein the one or more computer
readable media comprise computer-executable instructions that when
executed by at least one of the one or more processors cause the
system to move one or more virtual machines in the virtualized
network topology to the second physical element.
13. The system of claim 9, wherein the one or more computer
readable media comprise computer-executable instructions that when
executed by at least one of the one or more processors cause the
system to identify additional physical resources needed to
implement the improved virtualized network topology, and indicate
those resources to a user to allow the user to add additional
resources to implement the improved virtualized network
topology.
14. The system of claim 9, wherein the one or more computer
readable media comprise computer-executable instructions that when
executed by at least one of the one or more processors cause the
system to identify under-utilized physical resources in the
virtualized network topology and provide an indication of the
under-utilized physical resources.
15. The method of claim 1, wherein determining physical element
properties of physical elements in a virtualized network topology
is performed using a plug-in at a virtual machine management
component that functions with 3.sup.rd party network management
solutions to discover a network topology.
16. The method of claim 1, wherein determining utilization of
physical elements in the virtualized network topology is performed
using a plug-in at a virtual machine management component that
interacts with physical network devices which provide network
utilization information to the virtual machine management
component.
17. A physical computer readable storage medium comprising
computer-executable instructions that when executed by one or more
processors causes the following to be performed by one or more
processors: determining physical element properties, including
processor capacity, installed memory, and network capacity for
physical elements in a datacenter; determining gateway placement on
a physical host machine of the virtualized network topology, the
gateway being a virtualized gateway installed on a physical machine
in the datacenter configured to allow virtual machines in a virtual
network topology to communicate with external machines, external
storage, or external devices external to the virtual network
topology; determining utilization of physical elements in the
datacenter, including determining where virtual machines are
installed on physical host machines in the datacenter; and based on
the physical element properties, gateway placement, and utilization
of physical elements in the datacenter, moving the gateway to a
different physical host machine to improve use of physical element
resources in the data center.
18. The physical computer readable storage medium of claim 17,
further comprising computer-executable instructions that when
executed by one or more processors causes one or more processors to
identify under-utilized physical resources in the virtualized
network topology and provide an indication of the under-utilized
physical resources
19. The physical computer readable storage medium of claim 17,
further comprising computer-executable instructions that when
executed by one or more processors causes one or more processors to
identify additional physical resources needed to implement the
improved virtualized network topology, and indicate those resources
to a user to allow the user to add additional resources to
implement the improved virtualized network topology
20. The physical computer readable storage medium of claim 17,
further comprising computer-executable instructions that when
executed by one or more processors causes one or more processors to
move one or more virtual machines to the different physical host
machine.
Description
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application claims the benefit of U.S. Provisional
application 61/830,522 filed Jun. 3, 2013, titled "DYNAMICALLY
MIGRATING VIRTUAL MACHINES AND GATEWAYS", which is incorporated
herein by reference in its entirety.
BACKGROUND
Background and Relevant Art
[0002] Computers and computing systems have affected nearly every
aspect of modern living. Computers are generally involved in work,
recreation, healthcare, transportation, entertainment, household
management, etc.
[0003] Further, computing system functionality can be enhanced by a
computing systems ability to be interconnected to other computing
systems via network connections. Network connections may include,
but are not limited to, connections via wired or wireless Ethernet,
cellular connections, or even computer to computer connections
through serial, parallel, USB, or other connections. The
connections allow a computing system to access services at other
computing systems and to quickly and efficiently receive
application data from other computing system.
[0004] Interconnection of computing systems has facilitated
distributed computing systems, such as so-called "cloud" computing
systems. In this description, "cloud computing" may be systems or
resources for enabling ubiquitous, convenient, on-demand network
access to a shared pool of configurable computing resources (e.g.,
networks, servers, storage, applications, services, etc.) that can
be provisioned and released with reduced management effort or
service provider interaction. A cloud model can be composed of
various characteristics (e.g., on-demand self-service, broad
network access, resource pooling, rapid elasticity, measured
service, etc), service models (e.g., Software as a Service
("SaaS"), Platform as a Service ("PaaS"), Infrastructure as a
Service ("IaaS"), and deployment models (e.g., private cloud,
community cloud, public cloud, hybrid cloud, etc.).
[0005] So called "cloud" computing systems implement virtual
machines on physical hardware. The virtual machines function as if
they were actual physical machines, but can be implemented using
abstractions applied to physical hardware. Virtual machines can be
networked together in a cloud system. However, for the virtual
machines to communicate with external machines, storage, or other
systems, the virtual machines communicate through a gateway.
[0006] With network virtualizations technologies like HyperV
network virtualization available from Microsoft Corporation of
Redmond Wash., the location of physical hardware in a datacenter
implementing virtual networks no longer constrains deployment of
virtual machines to specific hardware. Rather, a virtualized
network can be built using various physical elements of the
physical datacenter network infrastructure, which allows virtual
machines to be deployed anywhere in the datacenter, even when the
various physical elements are located in different physical
locations. But such deployments can cause non-optimal network
utilization within a datacenter network if the communication
between virtual machines results in use of a long or complex
network path. Additionally, gateways connecting the virtual
machines to external networks or devices, that are implemented on
physical elements in the network that result in longer or more
complex network paths between virtual machines within a virtualized
environment, can result in further overhead.
[0007] The subject matter claimed herein is not limited to
embodiments that solve any disadvantages or that operate only in
environments such as those described above. Rather, this background
is only provided to illustrate one exemplary technology area where
some embodiments described herein may be practiced.
BRIEF SUMMARY
[0008] One embodiment illustrated herein includes a method that may
be practiced in a virtualized networking environment. The method
includes acts for improving the network environment. The method
includes determining physical element properties of physical
elements in a virtualized network topology. The method further
includes determining gateway placement on a first physical element
of the virtualized network topology. The method further includes
determining utilization of physical elements in the virtualized
network topology. Based on the physical element properties, gateway
placement, and utilization of physical elements in the virtualized
network topology, the method further includes determining an
improved virtualized network topology to improve use of physical
elements in the virtualized network topology.
[0009] This Summary is provided to introduce a selection of
concepts in a simplified form that are further described below in
the Detailed Description. This Summary is not intended to identify
key features or essential features of the claimed subject matter,
nor is it intended to be used as an aid in determining the scope of
the claimed subject matter.
[0010] Additional features and advantages will be set forth in the
description which follows, and in part will be obvious from the
description, or may be learned by the practice of the teachings
herein. Features and advantages of the invention may be realized
and obtained by means of the instruments and combinations
particularly pointed out in the appended claims. Features of the
present invention will become more fully apparent from the
following description and appended claims, or may be learned by the
practice of the invention as set forth hereinafter.
BRIEF DESCRIPTION OF THE DRAWINGS
[0011] In order to describe the manner in which the above-recited
and other advantages and features can be obtained, a more
particular description of the subject matter briefly described
above will be rendered by reference to specific embodiments which
are illustrated in the appended drawings. Understanding that these
drawings depict only typical embodiments and are not therefore to
be considered to be limiting in scope, embodiments will be
described and explained with additional specificity and detail
through the use of the accompanying drawings in which:
[0012] FIG. 1 illustrates transformation of a virtualized network
topology;
[0013] FIG. 2 illustrates a method of improving a virtualized
network environment.
DETAILED DESCRIPTION
[0014] Embodiments may create improved virtual network topologies
of a datacenter with respect to physical elements (i.e. hardware)
used to create virtual network topologies. This may be done by
migrating virtual machines and/or dynamically configuring the
gateway used by the virtual machines, based on physical
infrastructure utilization. Virtual machines communicate with
external machines, storage, or other systems external to a virtual
machine virtual network topology through a gateway. In this way,
embodiments can group virtual machines and routing devices (i.e.
gateways) used by virtual machines to be close to each other. By
gathering datacenter physical network utilization, embodiments can
create virtual machine groups and position gateways to balance
network load across a virtual network topology and to reduce or
eliminate excessive traffic. When such network improvement is
restricted because of deficiencies in other resources (such as
available CPU or storage capacity in some part of the datacenter),
network virtualization allows embodiments to still function, but
recommendations regarding what resources and location(s) to add
resources can be provided to datacenter administrators to improve
utilization.
[0015] Referring now to FIG. 1, an example is illustrated. FIG. 1
illustrates a datacenter 100. The datacenter 100 is shown as being
implemented in two different physical locations 102 and 104. Each
of the locations has physical hardware used to implement a part of
the datacenter. Such physical hardware may include (but is not
limited to) processors, memory, storage, network hardware, and the
like. Physical hardware may be consolidated into a physical host
machine, which may include one or more processors, memory, network
interface card, etc. In the example illustrated, the first location
102 hosts two virtual machines 106-1 and 106-2. While two are
illustrated here, it should be appreciated that the first location
102 could host a different number of virtual machines and that two
are only shown for illustration purposes. The first location also
hosts a software gateway 108 implemented on top of a hardware
gateway 112-2. The second location 104 hosts five virtual machines
106-3, 106-4, 106-5, 106-6, and 106-7. All of the virtual machines
106-1 through 106-7 may be in the same virtual network. Thus, all
of the virtual machines 106-1 through 106-7 communicate with each
other and use the same gateway 108, and thus the same hardware
gateway 112-2, in spite of there being a hardware gateway 112-4 at
the second location, to communicate with other resources that do
not use the virtual network protocol used by the virtual machines
106-1 through 106-7.
[0016] Because portions of the virtual network are in different
physical locations within the network, inefficiencies may be
present. For example, if any of the virtual machines 106-3 through
106-7 wishes to communicate with either of the virtual machines
106-1 or 106-2, that communication needs to be performed over some
physical networking hardware that allows the physical hardware at
the two different locations 104 and 102 to communicate with each
other. In contrast, if virtual machine 106-3 wishes to communicate
with virtual machine 106-4, less (and potentially no) physical
network hardware resources need to be used as the virtual machines
are in the same location. Further, if one of the virtual machines
106-3 through 106-7 wishes to communicate with external devices or
with devices that do not use the virtual networking protocol, the
virtual machines must communicate with the gateway 108, through the
hardware gateway 112-2. Because the gateway 108 is located at the
first location 102 and the virtual machines 106-3 through 106-7 are
located at the second location 104, extra physical networking
resources need to be used to be able to facilitate the
communication between the first location 102 and the second
location 104.
[0017] Embodiments can include functionality for identifying
inefficiencies in a virtual networking topology and either
automatically fixing inefficiencies and/or notifying a network
administrator of the inefficiencies so that the network
administrator can correct the inefficiencies. Alternatively or
additionally, embodiments may suggest hardware upgrades or
additions that would allow inefficiencies to be automatically
corrected.
[0018] Illustratively, FIG. 1 illustrates an improved datacenter
100'. In the improved datacenter 100', the gateway 108 is moved to
the second location 104 as a replica 108' and configured to operate
with the hardware gateway 112-4. This can create a more efficient
network as more virtual machines are located at the second location
104 than the first location 102 where the gateway 108 was
originally placed. However, it should be appreciated that
optimizations are not necessarily based simply on how many virtual
machines are at a location. Rather, as will be illustrated later
herein, some embodiments may be able to determine how active
various virtual machines are such that it may be more efficient to
move the gateway 108 to a location which may have fewer virtual
machines, but where the virtual machines are particularly active in
the datacenter in terms of the amount of communication to and from
the virtual machines.
[0019] While FIG. 1 illustrates movement of a gateway 108 from one
location to another, it should be appreciated that in alternative
or additional embodiments, virtual machines may be moved to
different locations. For example, FIG. 1 illustrates a further
improved datacenter 100''. The datacenter 100'' may be a datacenter
that is an improved version of the datacenter 100 with an improved
topology where all of the virtual machines 106-1 through 106-7 and
the gateway replica 108' are all located in the same location.
[0020] Embodiments can dynamically improve the datacenter 100
topology. In particular, as new virtual machines are added, as
hardware in the datacenter changes, as usage patterns of the
datacenter change, etc., embodiments can identify such changes and
move virtual machines in the datacenter, move gateways in the
datacenter, suggest hardware upgrades in the datacenter, identify
under-utilized resources in the datacenter that could be removed or
better utilized, etc. As noted, this can be done in a dynamic and
ongoing fashion, such that the datacenter can continue to be
improved over time depending on datacenter conditions and
changes.
[0021] Various actions may be performed to perform optimization
actions in a datacenter implementing one or more virtual network to
improve virtual network. In particular, embodiments may (1)
identify a virtual network topology; (2) identify virtual network
utilization; (3) determine one or improved network topologies; and
(4) optionally automatically improve the network topology. The
following illustrates additional details.
[0022] As noted, embodiments include functionality for identifying
a virtual network topology. Identifying a network topology can be
achieved using various techniques. In particular, a datacenter 100
may include a Virtual Machine Management (VMM) component 110. The
VMM components may require configuration of a network topology to
be provided by a network administrators to deploy virtual machines.
Using this information a network topology can be inferred.
[0023] Alternatively or additionally, embodiments may identify a
network topology using standard protocols like the Simple Network
Management Protocol (SNMP). Alternatively or additionally,
embodiments may identify a network topology using a network manager
plugin integration in the VMM component 110 to gather physical
topology information from third party network management
solutions.
[0024] As noted, embodiments include functionality for identifying
network utilization. This can be achieved in various ways. For
example, network utilization can be determined from Hypervisor
hosts and their corresponding gateway connectivity can be used to
infer load on the gateways. For example, network traffic can volume
can be monitored at hosts to determine the amount of traffic a host
may encounter. Alternatively or additionally, identifying network
utilization can be performed by using standard Simple Network
Management Protocols (SNMP) protocols to interact with the
gateways. SNMP can be used to query network hardware to determine
network volume or other characteristics, which can be used to infer
gateway usage. Alternatively or additionally, identifying network
utilization can be performed by using VMM plugin models to allow
network devices to provide utilization information.
[0025] As noted, embodiments include functionality for determining
one or improved network topologies. In some embodiments, this may
be performed by identifying communication sets of virtual machines
and placements of virtual gateway devices.
[0026] Embodiments may identify communication characteristics of
the sets. Such communication characteristics may include, for
example, intranetwork communication between virtual machines;
communication through gateways to systems and devices that are
external to a datacenter; communication through gateways to other
areas inside datacenter.
[0027] Embodiments may determine available resources on different
areas of datacenter. For example, embodiments can determine
physical machines that have additional processing power available,
memory available, storage available, network hardware capabilities
available, etc. Some of this information may be discovered by
actions performed when identifying a virtual network topology as
described above. Alternatively or additionally, such information
may be gathered from a hypervisor and storages devices. Such
information may include CPU and storage utilization of virtual
machines, and available CPU and storage on those devices.
[0028] Embodiments may use a multidimensional packing algorithm to
identify an improved location for each set of virtual machines. The
algorithm may take into account intra-set communications;
communication through gateways within the datacenter; communication
through gateways outside of the datacenter; CPU utilization of a
set; storage utilization of a set; etc.
[0029] Based on the optimal configuration calculated, embodiments
may improve the datacenter. For example, this may be done by using
live migration to move virtual machines from physical hardware to
different physical hardware. For example, as illustrated in FIG. 1,
virtual machines can be moved from the hardware at the first
location 102 to hardware at the second location 104. Alternatively
or additionally, embodiments may reconfigure the gateway 108.
Customer network information is stored in the VMM component 110.
Using this information, embodiments can create a replica 108' of
the gateway on the destination device. For example, FIG. 1
illustrates that a replica 108' of the gateway 108 is created at
the second location 104 using the hardware gateway 112-4. In some
embodiments, creating a replica of the gateway may be performed
using virtual gateway functions or an additional compartment in
hypervisor based gateways. The gateway information in the network
virtualization stack is reconfigured to redirect the traffic flow
to the new physical gateway replica 108'. Embodiments then delete
the gateway configuration for network virtualization for the old
gateway (e.g. gateway 108). In particular, old configuration
entries can be removed from the hardware gateway 112-2.
[0030] The following discussion now refers to a number of methods
and method acts that may be performed. Although the method acts may
be discussed in a certain order or illustrated in a flow chart as
occurring in a particular order, no particular ordering is required
unless specifically stated, or required because an act is dependent
on another act being completed prior to the act being
performed.
[0031] Referring now to FIG. 2, a method 200 is illustrated. The
method 200 may be practiced in a virtualized networking
environment. The method 200 includes acts for improving the network
environment. The method includes determining physical element
properties of physical elements in a virtualized network topology
(act 202). For example, embodiments may determine processor power
on physical hose machines, installed memory on physical host
machines, network bandwidth of networking hardware, etc.
[0032] The method 200 may further include determining gateway
placement on a first physical element of the virtualized network
topology (act 204). For example, Embodiments may determine what
physical machine a gateway (such as gateway 108) may be installed.
In particular, In FIG. 1, the first location 102 may be a location
that defines the confines of a physical machine. Thus, the gateway
108 may be located at the first location 102 as a result of being
installed on the physical machine represented by the location.
[0033] The method 200 further includes determining utilization of
physical elements in the virtualized network topology (act 206).
For example, a determination can be made about the percentage of
processor cycles being used, the amount of memory being used,
network bandwidth being used, etc.
[0034] Based on the physical element properties, gateway placement,
and utilization of physical elements in the virtualized network
topology, the method 200 further includes determining an improved
virtualized network topology to improve use of physical elements in
the virtualized network topology. For example, in FIG. 1, the
improved datacenters 100' and 100'' illustrate improved virtualized
network topologies to improve use of physical elements in the
virtualized network topology represented by the datacenter 100.
[0035] The method 200 may further include, using the determined
improved virtualized network topology, reconfiguring the
virtualized network topology to move one or more virtual gateways
from the first physical element of the virtualized network topology
to a second physical element of the virtualized network topology.
For example, as illustrated in FIG. 1, the gateway 108 is moved
from hardware at the first location 102 to hardware at the second
location 104.
[0036] In some such embodiments, reconfiguring the virtualized
network topology to move one or more virtual gateways from the
first physical element of the virtualized network topology to a
second physical element of the virtualized network topology
includes: creating a replica of a gateway; deploying the replica of
the gateway at the second physical element of the virtualized
network topology; routing virtualized network traffic flow to the
replica of the gateway; and deleting gateway configuration
information associated with the first physical element for the
gateway. FIG. 1 illustrates an example of this where the replica
108' is deployed at the second location 104. The replica 108 can
then be removed from the first location 102.
[0037] Embodiments of the method may further include moving one or
more virtual machines in the virtualized network topology to the
second physical element. For example, as illustrated in FIG. 1,
Virtual machines 106-1 and 106-2 can be moved to physical hardware
at the second location 104.
[0038] The method 200 may further include identifying additional
physical resources needed to implement the improved virtualized
network topology, and indicating those resources to a user to allow
the user to add additional resources to implement the improved
virtualized network topology. For example, rather than moving
gateways or virtual machines, embodiments may provide an indication
to a user of what hardware could be added to a topology so that the
topology could be improved. For example, the VMM 110 may provide an
alert to a user that more memory could be added at a physical
machine, that networking hardware could be updated, etc.
Alternatively or additionally, the method 200 may further include
identifying under-utilized physical resources in the virtualized
network topology and providing an indication of the under-utilized
physical resources. For example, embodiment may report resource
constraints or overprovisioning in a particular dimension (Network,
CPU or Storage) if one or more dimension blocks additional virtual
machine deployment in that part of datacenter while other
dimensions have utilization below certain thresholds in other
dimensions.
[0039] Further, the methods may be practiced by a computer system
including one or more processors and computer readable media such
as computer memory. In particular, the computer memory may store
computer-executable instructions that when executed by one or more
processors cause various functions to be performed, such as the
acts recited in the embodiments.
[0040] Embodiments of the present invention may comprise or utilize
a special purpose or general-purpose computer including computer
hardware, as discussed in greater detail below. Embodiments within
the scope of the present invention also include physical and other
computer-readable media for carrying or storing computer-executable
instructions and/or data structures. Such computer-readable media
can be any available media that can be accessed by a general
purpose or special purpose computer system. Computer-readable media
that store computer-executable instructions are physical storage
media. Computer-readable media that carry computer-executable
instructions are transmission media. Thus, by way of example, and
not limitation, embodiments of the invention can comprise at least
two distinctly different kinds of computer-readable media: physical
computer readable storage media and transmission computer readable
media.
[0041] Physical computer readable storage media includes RAM, ROM,
EEPROM, CD-ROM or other optical disk storage (such as CDs, DVDs,
etc), magnetic disk storage or other magnetic storage devices, and
the like which can be used to store desired program code means in
the form of computer-executable instructions or data structures and
which can be accessed by a general purpose or special purpose
computer.
[0042] A "network" is defined as one or more data links that enable
the transport of electronic data between computer systems and/or
modules and/or other electronic devices. When information is
transferred or provided over a network or another communications
connection (either hardwired, wireless, or a combination of
hardwired or wireless) to a computer, the computer properly views
the connection as a transmission medium. Transmissions media can
include a network and/or data links which can be used to carry or
desired program code means in the form of computer-executable
instructions or data structures and which can be accessed by a
general purpose or special purpose computer.
[0043] Further, upon reaching various computer system components,
program code means in the form of computer-executable instructions
or data structures can be transferred automatically from
transmission computer readable media to physical computer readable
storage media (or vice versa). For example, computer-executable
instructions or data structures received over a network or data
link can be buffered in RAM within a network interface module
(e.g., a "NIC"), and then eventually transferred to computer system
RAM and/or to less volatile computer readable physical storage
media at a computer system. Thus, computer readable physical
storage media can be included in computer system components that
also (or even primarily) utilize transmission media.
[0044] Computer-executable instructions comprise, for example,
instructions and data which cause a general purpose computer,
special purpose computer, or special purpose processing device to
perform a certain function or group of functions. The
computer-executable instructions may be, for example, binaries,
intermediate format instructions such as assembly language, or even
source code. Although the subject matter has been described in
language specific to structural features and/or methodological
acts, it is to be understood that the subject matter defined in the
appended claims is not necessarily limited to the described
features or acts described above. Rather, the described features
and acts are disclosed as example forms of implementing the
claims.
[0045] Those skilled in the art will appreciate that the invention
may be practiced in network computing environments with many types
of computer system configurations, including, personal computers,
desktop computers, laptop computers, message processors, hand-held
devices, multi-processor systems, microprocessor-based or
programmable consumer electronics, network PCs, minicomputers,
mainframe computers, mobile telephones, PDAs, pagers, routers,
switches, and the like. The invention may also be practiced in
distributed system environments where local and remote computer
systems, which are linked (either by hardwired data links, wireless
data links, or by a combination of hardwired and wireless data
links) through a network, both perform tasks. In a distributed
system environment, program modules may be located in both local
and remote memory storage devices.
[0046] Alternatively, or in addition, the functionally described
herein can be performed, at least in part, by one or more hardware
logic components. For example, and without limitation, illustrative
types of hardware logic components that can be used include
Field-programmable Gate Arrays (FPGAs), Program-specific Integrated
Circuits (ASICs), Program-specific Standard Products (ASSPs),
System-on-a-chip systems (SOCs), Complex Programmable Logic Devices
(CPLDs), etc.
[0047] The present invention may be embodied in other specific
forms without departing from its spirit or characteristics. The
described embodiments are to be considered in all respects only as
illustrative and not restrictive. The scope of the invention is,
therefore, indicated by the appended claims rather than by the
foregoing description. All changes which come within the meaning
and range of equivalency of the claims are to be embraced within
their scope.
* * * * *