Ninja migration is a technique that allows interconnect-transparent migration of virtual machines (VMs) between heterogeneous data centers. It aims to migrate a cluster of VMs between an InfiniBand cluster and an Ethernet cluster without restarting applications. Ninja migration leverages knowledge of applications to ensure cooperation between migration and communication layers inside guest operating systems. It was implemented using Open MPI's user-level checkpoint/restart framework for global coordination before and after migration. Experiments showed Ninja migration incurs minimal overhead during normal operations and can migrate VMs between different interconnects with applications continuing to run.