For a VMD infrastructure that supports a single user, it is sensible to think of solving the VM assignment problems by exploiting simultaneously the freedom to change the VMD topology and routes, as well as to move the VMs. However, if the VMD infrastructure is to be shared among multiple users, a two stage approach, engineering a sensible general-purpose VMD topology and then doing dynamic assignment of VMs to that topology, is likely to be more sensible.
One approach is to require that the topology of the VMDs, be
a mesh or a hypercube. This induces a network engineering problem,
that of finding
such that the chosen topology behaves close to
our expectations for its type in terms of the bandwidth and latency of
the edges. For both meshes and hypercubes, this means that each edge
should be equal in terms of bandwidth and latency. Given that the
underlying overlay has such as simple, regular topology, we would
assign groups of VMs that exhibit a particular topology to partitions
of the VMD graph. For example, it is well known that trees and
neighbor patterns can be embedded in
hypercubes [24]. If a parallel
application running across a set of VMs exhibits one of these
patterns, its VMs can be readily (and quickly) assigned to VMDs.