Demonstrate traffic-aware dynamic container migration between edge cloud nodes using a license plate recognition application, observing how migrating a running container reduces application latency under simulated load or mobility conditions.
Containers run as userspace processes on top of a shared kernel and outperform virtual machines in both bandwidth and CPU overhead. This property makes them well-suited for mobile edge cloud scenarios where workloads need to follow a user as they move between access points, or where a heavily-loaded node should hand off its containers to a lightly-loaded neighbor.
This tutorial walks through the container migration workflow on the COSMOS testbed. A license plate recognition container is started on a source node and then migrated live to a destination node using the conmig.sh script. The node information and migration results are observed from the sandbox console.
The underlying research is described in:
Maheshwari, Sumit, Shalini Choudhury, Ivan Seskar, and Dipankar Raychaudhuri. "Traffic-aware dynamic container migration for real-time support in mobile edge clouds." In 2018 IEEE International Conference on Advanced Networks and Telecommunications Systems (ANTS), pp. 1–6. IEEE, 2018.
and in the ShareOn paper (see References).
After completing this tutorial you will be able to:
omf load.| Difficulty | Intermediate |
| Estimated time | 45 min |
| Domain / sandbox | sb1.cosmos-lab.org |
| Topic group | Cloud & Edge Computing |
| Last verified | Not re-tested (migrated 2026-06-20) |
Background knowledge
Account & access
Devices / nodes
| Resource | Role | Qty | Notes |
|---|---|---|---|
| srv1-lg1 | Source edge node (container origin) | 1 | |
| srv2-lg1 | Destination edge node (migration target) | 1 | |
| Console node | Orchestration / script execution | 1 | Sandbox console; no image load required |
Note: The source states "three nodes are required" but the setup steps reference only two compute nodes (
srv1-lg1,srv2-lg1) plus the console.
Disk images
| Image | Load onto | Provides |
|---|---|---|
| conmig5.ndz | srv1-lg1, srv2-lg1 | Container runtime, license plate recognition application, migration tooling |
Software components
| Component | Version | Source |
|---|---|---|
Container migration image (conmig5.ndz) |
5 (latest released) | Preloaded via omf load |
Migration script (conmig.sh) |
TODO: verify | Downloaded from wiki.cosmos-lab.org during setup (see Setup step 6) |
| License plate recognition application | TODO: verify | Preinstalled in conmig5.ndz |
| ShareOn full codebase (optional) | TODO: verify | GitHub — sumitece87/shareon |
Spectrum / RF / special
Not applicable.
The container is migrated from the source node (srv1-lg1) to the destination node (srv2-lg1). The sandbox console coordinates the experiment and collects results. Both nodes are reachable from the console via SSH.


Reserve the resources and log into the console (the -X flag enables X11 tunnelling if needed):
ssh -X <username>@console.sb1.cosmos-lab.org
Make sure the resources are off before imaging:
omf tell -a offh -t system:topo:allres
Load the container migration image onto both compute nodes (this may take a few minutes):
omf load -i conmig5.ndz -t srv1-lg1,srv2-lg1
Turn the nodes on:
omf tell -a on -t system:topo:images
Verify both nodes are reachable:
ping srv1-lg1
ping srv2-lg1
On the console, create a working directory and download the migration script:
mkdir migration
cd migration
wget https://wiki.cosmos-lab.org/raw-attachment/wiki/Tutorials/EdgeComputing/ServiceMigration/conmig.sh --no-check-certificate
Open a separate SSH session (with X11 forwarding) to each node from the console:
ssh -X root@srv1-lg1
ssh -X root@srv2-lg1
The files required for the experiment are preloaded in conmig5.ndz. The full ShareOn codebase (including the license plate recognition application) is also available at:
# Optional: clone the full ShareOn source
git clone https://github.com/sumitece87/shareon
Back on the console, inside the migration directory, make the script executable:
chmod +x *.sh
From the migration directory on the console, execute the migration script to observe container packing and live migration:
./conmig.sh


The script starts the license plate recognition container on srv1-lg1 (source), then migrates it to srv2-lg1 (destination).
SSH into each node to inspect the application results before and after migration:
ssh -X root@srv1-lg1
# inspect application output / container status on source
ssh -X root@srv2-lg1
# inspect application output / container status after migration
The license plate recognition application processes images loaded onto the node and its output should be observable at the destination after migration completes.
ping from the console after imaging../conmig.sh completes without error and prints migration progress.srv2-lg1 (the migration destination) after the script finishes.omf tell -a offh -t system:topo:allres
No omf save is needed unless you modified the image.
| Symptom | Likely cause | Fix |
|---|---|---|
ping srv1-lg1 or ping srv2-lg1 fails after power-on |
Nodes still booting | Wait 60–90 s and retry; use omf stat to confirm node status |
omf load times out |
Node did not power off cleanly | Run omf tell -a offh -t srv1-lg1,srv2-lg1 and retry omf load |
wget conmig.sh fails (certificate error) |
TLS verification mismatch | The --no-check-certificate flag is already included in the command above |
| Migration script errors on container checkpoint/restore | Kernel capability missing in image | Verify conmig5.ndz is the correct image version; contact the COSMOS support team |
| Application output not visible on destination | Migration did not complete | Check console output from ./conmig.sh for error lines; confirm the destination node is reachable |
Author(s): COSMOS team (original: Sumit Maheshwari, WINLAB, Rutgers University) · Last verified: Not re-tested (migrated 2026-06-20) · Tested image/release: conmig5.ndz · Tags: edge-computing, containers, migration, mobile-edge-cloud