A network element configured to optimize traffic in a communications network, the network element comprising: a communications interface configured to send data to and receive data from a plurality of Virtual Machines, VMs, communicating over one or more paths through the network, each path comprised of one or more constituent links (L 1 -L 3); and a programmable controller configured to: monitor traffic communicated by the plurality of VMs over the network paths; generate a set of candidate VM sites, each candidate VM site comprising an unused VM site in the network; generate a set of congested VMs from the plurality of VMs in the network, wherein each congested VM is determined to be communicating with at least one other VM over a path having at least one congested link (L 1 -L 3); calculate (56, 58, 60), for each congested VM: a congestion index indicating the number of congested links in the one or more paths communicatively connecting a congested VM to its peer VMs in the network; a correction index indicating the number of congested links that would no longer be congested if the traffic being communicated from the congested VM was removed from the network; and a consumption index indicating a cumulative bandwidth utilization summed for the congested VM over all the links in the paths connecting the congested VM to each of its peer VMs; rank the congested VMs based on one or more of the correction index, the consumption index, and the congestion index; and model a migration of one or more congested VMs to one or more candidate VM sites to: determine a minimum number of congested VMs to migrate to corresponding candidate VM sites to optimize the traffic through the network; and identify which congested VMs to migrate to which candidate VM sites. a communications interface configured to send data to and receive data from a plurality of Virtual Machines, VMs, communicating over one or more paths through the network, each path comprised of one or more constituent links (L 1 -L 3); and a programmable controller configured to: monitor traffic communicated by the plurality of VMs over the network paths; generate a set of candidate VM sites, each candidate VM site comprising an unused VM site in the network; generate a set of congested VMs from the plurality of VMs in the network, wherein each congested VM is determined to be communicating with at least one other VM over a path having at least one congested link (L 1 -L 3); calculate (56, 58, 60), for each congested VM: a congestion index indicating the number of congested links in the one or more paths communicatively connecting a congested VM to its peer VMs in the network; a correction index indicating the number of congested links that would no longer be congested if the traffic being communicated from the congested VM was removed from the network; and a consumption index indicating a cumulative bandwidth utilization summed for the congested VM over all the links in the paths connecting the congested VM to each of its peer VMs; rank the congested VMs based on one or more of the correction index, the consumption index, and the congestion index; and model a migration of one or more congested VMs to one or more candidate VM sites to: determine a minimum number of congested VMs to migrate to corresponding candidate VM sites to optimize the traffic through the network; and identify which congested VMs to migrate to which candidate VM sites. monitor traffic communicated by the plurality of VMs over the network paths; generate a set of candidate VM sites, each candidate VM site comprising an unused VM site in the network; generate a set of congested VMs from the plurality of VMs in the network, wherein each congested VM is determined to be communicating with at least one other VM over a path having at least one congested link (L 1 -L 3); calculate (56, 58, 60), for each congested VM: a congestion index indicating the number of congested links in the one or more paths communicatively connecting a congested VM to its peer VMs in the network; a correction index indicating the number of congested links that would no longer be congested if the traffic being communicated from the congested VM was removed from the network; and a consumption index indicating a cumulative bandwidth utilization summed for the congested VM over all the links in the paths connecting the congested VM to each of its peer VMs; a congestion index indicating the number of congested links in the one or more paths communicatively connecting a congested VM to its peer VMs in the network; a correction index indicating the number of congested links that would no longer be congested if the traffic being communicated from the congested VM was removed from the network; and a consumption index indicating a cumulative bandwidth utilization summed for the congested VM over all the links in the paths connecting the congested VM to each of its peer VMs; rank the congested VMs based on one or more of the correction index, the consumption index, and the congestion index; and model a migration of one or more congested VMs to one or more candidate VM sites to: determine a minimum number of congested VMs to migrate to corresponding candidate VM sites to optimize the traffic through the network; and identify which congested VMs to migrate to which candidate VM sites. determine a minimum number of congested VMs to migrate to corresponding candidate VM sites to optimize the traffic through the network; and identify which congested VMs to migrate to which candidate VM sites.