above have shown that, for a $100$ Mbps bandwidth connection, the average migration time for a base package is $25$ seconds and $160$ seconds for LXC and KVM, respectively, during which time the service is down and may appear as an unresponsive or frozen application.

In our approach, we aim to reduce service downtime (i.e., time of service interruption) and overall migration time (i.e., time from the beginning till the end of the whole migration process) through the use of layers. Abstractly, we can separate the base package (that includes the guest OS, kernel, etc., but with no applications installed) into a layer separate and distinct from its service applications. We call this package the *base layer*. This base layer is generic and all MECs shall have a copy of it. The service applications and their running states are placed within a separate layer called the *instance layer*. Assuming the base layer exists at the destination, when we want to migrate a service, we first suspend the service and then transfer only the instance layer to the destination. A running service can be reconstructed from a combination of the base and instance layers. By removing the need to transfer the 