Sunday, January 16, 2011

What about the VMBus? (Hyper-V Architecture part 1)

Very often, people ask questions about the vCPU, and Virtual Networks in the Hyper-V forum.
And when it comes to vCPU, I often refer to Brian Ehlert‘s great contribution here: http://social.technet.microsoft.com/wiki/contents/articles/hyper-v-concepts-vcpu.aspx where he covers many questions and answers.
But to understand Hyper-V in general, I think it‘s important to know the architecture.

Hyper-V is a microkernelized hypervisor (not a monolithic where the various hardware device drivers are part of the hypervisor) where only the functions that are absolutely required to share the hardware among the virtual machines are contained in the hypervisor.
The reason why Hyper-V supports all the various OS and HW device, is that the parent partition runs Windows Server OS.
Hyper-V requires a parent, a root partition running Windows Server 2008 R2 x64 (Hyper-V 2008 R2 is not a Windows Server, but runs a Windows kernel). The virtualization ‘stack’ runs in the parent partition and has the required direct access to all the hardware devices in order to share them among the child partitions (VMs). When you install the Hyper-V role in Windows Server 2008 R2, you cause the hypervisor to be installed between the physical hardware and the Windows kernel at system boot time. This turns the Windows installation into this special guest – the parent. The parent is still the boss when it comes to access to the hardware, but are responsible to provide additional services to the other partitions (child partitions/VMs).

How does the parent and child partitions communicate?

The VMbus is a communication mechanism (high-speed memory) used for interpartition communication and device enumeration on systems with multiple active virtualized partitions. If you do not install the Hyper-V role, the VMBus is not used for anything. But when the Hyper-V role is installed, the VMBus are responsible for communication between parent/child with the IC installed.

Remember that child partitions do not have direct access to the physical hardware on the host. They are only presented with virtual views (synthetic devices). The synthetic devices take advantages when IC is installed for storage, networking, graphics and input subsystem. The IC is a very special virtualization-aware implementation, which utilizes the VMBus directly, and bypasses any device emulation layer.

VMs make requests to the virtual devices and these requests are redirected via the VMBus to the devices in the parent partition, which handles the actual requests. It`s important to have supported VMs with the IC installed to have this access to the HW through the VMBus. The parent partition use VPS (Virtual Service Provider) and the VMs use VSC (Virtual Service Client) when communicating through VMBus.

No comments: