Inter Virtual Machine Communication

Virtual Machine(VM) to Virtual Machine(VM) Communication:

A new Linux socket family called VM sockets (AF_VSOCK address family) enables bi-directional, many-to-one, communication between a hypervisor and its virtual machines, using the classic BSD sockets API. Although VM sockets were originally introduced by VMware, they can be used with QEMU+KVM virtual machines as well.

libvirt is Hypervisor Management API spec/standard that all hypervisors implement.

VirtioVsock is a Host/Guest communication API. VirtioVsock internally makes use of VM sockets. To take advantage of VM sockets (using virtio-vsock), the Linux kernel (on both the hypervisor and guest) and QEMU must be fairly up-to-date. Kernel 4.8+ is required on both machines, and QEMU 2.8+ is required to execute the VM.

All VMs(Guests) on the same machine(host) can use Shared Memory as a VM is basically a process running on the host. All the Virtual Machines(VMs) can be assigned static IPs.

Miscellaneous:

Efficient shared memory message passing for inter-VM communications - https://hal.archives-ouvertes.fr/hal-00368622/document

Challenges for Inter Virtual Machine Communication - https://pdfs.semanticscholar.org/4295/889cc3e8b3f46fa7eb8e34a793433cdd0929.pdf

A Survey on the Security of Virtual Machines - https://www.cse.wustl.edu/~jain/cse571-09/ftp/vmsec/ 

Fido: Fast Inter-Virtual-Machine Communication for Enterprise Appliances - https://www.usenix.org/legacy/event/usenix09/tech/full_papers/burtsev/burtsev_html/index.html

nc-vsock - a netcat-like utility for AF_VSOCK - https://github.com/stefanha/nc-vsock


Virtualization Blog - http://blog.vmsplice.net/

Stefan Hajnoczi, Virtualization expert details:

https://vmsplice.net/~stefan/stefanha-kvm-forum-2015.pdf

Blog: http://blog.vmsplice.net/
Specification: http://goo.gl/mi6LCR
Code:
https://github.com/stefanha/linux => vsock
https://github.com/stefanha/qemu => vsock
Slides available on my website: http://vmsplice.net/