Hyper-V Integration Services – Where Are We Today?

Hyper-V Integration Services provide critical functionality to Guests (virtual machines) running on Microsoft’s virtualization platform (Hyper-V). For the most part, virtual machines run in an isolated environment on the Hyper-V host. However, there is a high-speed communications channel between the Guest and the Host that allows the Guest to take advantage of Host-side services. If you who have been working with Hyper-V since its initial release you may recognize this architecture diagram –

As seen in the diagram, the Virtualization Service Client (VSC) running in a Guest communicates with the Virtualization Service Provider (VSP) running in the Host over a communications channel called the Virtual Machine BUS (VMBUS). The Integration Services available to virtual machines today are shown here:

Integration Services are enabled in the Virtual Machine settings in Hyper-V Manager or by using the PowerShell cmdlet Enable-VMIntegrationService. These correspond to services running both in the virtual machine (VSC) itself and in the Host (VSP).

To ensure the communication flow between the Guest and the Host is as efficient as possible, Integration Services may need to be periodically updated. It has always been a Microsoft ‘best practice’ to keep Integration Services updated to ensure the functionality in the Guest is matched with that in the Host. There are several ways to accomplish this including custom scripting, using System Center Configuration Manager (SCCM), using System Center Virtual Machine Manger (SCVMM), and mounting the vmguest.iso file on the Host in the virtual DVD drive in the Guest (Windows only Guests.)

Linux Guests use a separate LIS (Linux Integration Services) package. After installing the latest package, you can verify the version for the communications channel (VMBUS):

You can also list out the Integration Services and other devices connecting over the communications channel:

Note: The versioning shown here for LIS is the result of installing LIS v4.2 in a CentOS 7 virtual machine.

More detailed information related to the capabilities of Linux Integrations Services can be found here.

With the release of Windows Server 2016, updating Integration Services in Windows Guests has changed and will be primarily by way of Windows Update (WU) unless otherwise stated here. Up until very recently, this process had not been working and even now has not been fully implemented for all Windows Guest operating systems. To date (as of the writing of this blog), the Integration Components for Guests running Windows Server 2012 R2 and Windows Server 2008 R2 SP1 are updated using Windows Update. The latest versions of Integration Components for the down-level Server SKUs as well as their corresponding Windows Client SKUs is shown here:

Note: Testing was conducted by deploying virtual machines, in Windows Server 2016 Hyper-V, using ISO media downloaded from a Visual Studio subscription. Each virtual machine was then stepped through the updating process using only Windows Update until it was fully patched. The latest Integration Services for Windows Server 2012 R2 and Windows Server 2008 R2 SP1 are included in KB 4072650.

Integration Services versioning (Windows) information can be obtained using a variety of scripting methods, but a quick way to do it from inside the virtual machine itself is to run one of these commands in PowerShell –

Revisiting the method for updating Integration Services on earlier versions of Hyper-V by mounting the vmguest.iso file from the Host in the virtual machines’ DVD drive, if you open any of the *.xml files in the package, you can ascertain version information –

As of this writing, versioning information is older in a vmguest.iso file as compared to what is registered in virtual machines updated by KB 4072650. This seems to indicate the vmguest.iso file on the Host (prior to Windows Server 2016\Windows 10) is no longer being updated. Instead, virtual machines are updating their Integration Services using Windows Update. Even if you run setup.exe in the ISO package, the result is an output of the version registered in the Guest.

Thanks for your attention and I hope this information was useful to you.

Charles Timon, Jr.
Senior, Premiere Field Engineer
Microsoft Corporation