Towards new migration protocol with unified channels
QEMU live migration moves a running virtual machine from one host to another. While the basic concept of live migration is fairly simple, there is a lot of complexity in the current implementation. Current implementation has evolved over many years with different features added at different times to serve specific migration needs, while migration lost its place as one unit. Consequently, we now have limitations like TCP connections (aka channels) are uni-directional, they come up and shut-down asynchronously while migration is running, multifd migrates only RAM state, Postcopy can not use multifd channels etc.
To make it all work in practice, additional coordination is required between QEMU and management layer like Libvirtd(8). Features (eg postcopy-preempt) available in QEMU may not be usable from virsh(1)/libvirtd(8) side, because they need to be taught to handle these new features.
In this session, we'll look at these implementation details and discuss possible way(s) to improve things through a robust migration protocol which could accommodate all of the current requirements and allow for future enhancements, while keeping the overall architecture simple and intuitive.