Blog Post

Virtualization
5 MIN READ

Hyper-V Powering Windows Features

nickeaton's avatar
nickeaton
Former Employee
Dec 12, 2019

December 2019

Hyper-V is Microsoft’s hardware virtualization technology that initially released with Windows Server 2008 to support server virtualization and has since become a core component of many Microsoft products and features. These features range from enhancing security to empowering developers to enabling the most compatible gaming console. Recent additions to this list include Windows Sandbox, Windows Defender Application Guard, System Guard and Advanced Threat Detection, Hyper-V Isolated-Containers, Windows Hypervisor Platform and Windows Subsystem for Linux 2. Additionally, applications using Hyper-V, such as Kubernetes for Windows and Docker Desktop, are also being introduced and improved.

 

As the scope of Windows virtualization has expanded to become an integral part of the operating system, many new OS capabilities have taken a dependency on Hyper-V. Consequently, this created compatibility issues with many popular third-party products that provide their own virtualization solutions, forcing users to choose between applications or losing OS functionality. Therefore, Microsoft has partnered extensively with key software vendors such as VMware, VirtualBox, and BlueStacks to provide updated solutions that directly leverage Microsoft virtualization technologies, eliminating the need for customers to make this trade-off.

 

Windows Sandbox

Windows Sandbox is an isolated, temporary, desktop environment where you can run untrusted software without the fear of lasting impact to your PC.  Any software installed in Windows Sandbox stays only in the sandbox and cannot affect your host. Once Windows Sandbox is closed, the entire state, including files, registry changes and the installed software, are permanently deleted. Windows Sandbox is built using the same technology we developed to securely operate multi-tenant Azure services like Azure Functions and provides integration with Windows 10 and support for UI based applications.

 

Windows Defender Application Guard

Windows Defender Application Guard (WDAG) is a Windows 10 security feature introduced in the Fall Creators Update (Version 1709 aka RS3) that protects against targeted threats using Microsoft’s Hyper-V virtualization technology. WDAG augments Windows virtualization based security capabilities to prevent zero-day kernel vulnerabilities from compromising the host operating system. WDAG also enables enterprise users of Microsoft Edge and Internet Explorer (IE) protection from zero-day kernel vulnerabilities by isolating a user’s untrusted browser sessions from the host operating system. Security conscious enterprises use WDAG to lock down their enterprise host while allowing their users to browse non-enterprise content.

Application Guard isolates untrusted sites using a new instance of Windows at the hardware layer.

 

Windows Defender System Guard

In order to protect critical resources such as the Windows authentication stack, single sign-on tokens, the Windows Hello biometric stack, and the Virtual Trusted Platform Module, a system's firmware and hardware must be trustworthy. Windows Defender System Guard reorganizes the existing Windows 10 system integrity features under one roof and sets up the next set of investments in Windows security. It's designed to make these security guarantees:

  • To protect and maintain the integrity of the system as it starts up
  • To validate that system integrity has truly been maintained through local and remote attestation

 

Windows Defender Advanced Threat Detection

Detecting and stopping attacks that tamper with kernel-mode agents at the hypervisor level is a critical component of the unified endpoint protection platform in Microsoft Defender Advanced Threat Protection (Microsoft Defender ATP). It’s not without challenges, but the deep integration of Windows Defender Antivirus with hardware-based isolation capabilities allows the detection of artifacts of such attacks.

 

Hyper-V Isolated Containers

Hyper-V plays an important role in the container development experience on Windows 10. Since Windows containers require a tight coupling between its OS version and the host that it runs on, Hyper-V is used to encapsulate containers on Windows 10 in a transparent, lightweight virtual machine. Colloquially, we call these "Hyper-V Isolated Containers". These containers are run in VMs that have been specifically optimized for speed and efficiency when it comes to host resource usage. Hyper-V Isolated Containers most notably allow developers to develop for multiple Linux distros and Windows at the same time and are managed just like any container developer would expect as they integrate with all the same tooling (e.g. Docker).

 

Windows Hypervisor Platform

The Windows Hypervisor Platform (WHP) adds an extended user-mode API for third-party virtualization stacks and applications to create and manage partitions at the hypervisor level, configure memory mappings for the partition, and create and control execution of virtual processors. The primary value here is that third-party virtualization software (such as VMware) can co-exist with Hyper-V and other Hyper-V based features. Virtualization-Based Security (VBS) is a recent technology that has enabled this co-existence.

WHP provides an API similar to that of Linux's KVM and macOS's Hypervisor Framework, and is currently leveraged on projects by QEMU and VMware.

 

This diagram provides a high-level overview of a third-party architecture.

 

Windows Subsystem for Linux 2

WSL 2 is the newest version of the architecture that powers the Windows Subsystem for Linux to run ELF64 Linux binaries on Windows. Its feature updates include increased file system performance as well as added full system call compatibility. This new architecture changes how these Linux binaries interact with Windows and your computer’s hardware, but still provides the same user experience as in WSL 1 (the current widely available version). The main difference being that WSL 2 uses a new architecture, which is primarily running a true Linux kernel inside a virtual machine. Individual Linux distros can be run either as a WSL 1 distro, or as a WSL 2 distro, can be upgraded or downgraded at any time, and can run WSL 1 and WSL 2 distros side by side.

 

Kubernetes Support for Windows

Kubernetes started officially supporting Windows Server in production with the release of Kubernetes version 1.14 (in March 2019). Windows-based applications constitute a large portion of the workloads in many organizations. Windows containers provide a modern way for these Windows applications to use DevOps processes and cloud native patterns. Kubernetes has become the de facto standard for container orchestration; hence this support enables a vast ecosystem of Windows applications to not only leverage the power of Kubernetes, but also to leverage the robust and growing ecosystem surrounding it. Organizations with investments in both Windows-based applications and Linux-based applications no longer need to look for separate orchestrators to manage their workloads, leading to increased operational efficiencies across their deployments. The engineering that supported this release relied upon open source and community led approaches that originally brought Windows Server containers to Windows Server 2016.

 

These components and tools have allowed Microsoft’s Hyper-V technology to introduce new ways of enabling customer experiences. Windows Sandbox, Windows Defender Application Guard, System Guard and Advanced Threat Detection, Hyper-V Isolated-Containers, Windows Hypervisor Platform and Windows Subsystem for Linux 2 are all new Hyper-V components that ensure the security and flexibility customers should expect from Windows. The coordination of applications using Hyper-V, such as Kubernetes for Windows and Docker Desktop also represent Microsoft’s dedication to customer needs, which will continue to stand for our main sentiment going forward.

Updated Dec 12, 2019
Version 2.0

37 Comments

  • JonathanKay's avatar
    JonathanKay
    Iron Contributor

    eliminating the need for customers to make this trade-off.

    One trade-off never mentioned is that for the situation of when you want to deploy any of this cool new functionality in a VM, you are required to have an Intel CPU.  The uservoice feedback for Nested virtualization for AMD Epyc and Ryzen will hit #1 most voted entry in the General feedback section sometime in 2020, and yet there's been total radio silence on if this will ever happen or even is being worked on.  Meanwhile, more and more Windows functionality requires Hyper-V virtualization.

  • Craig Wilhite Hi,

    I want to use consumer graphic cards from AMD/Nvidia in Hyper-V VMs, to not necessarily need to buy server graphic cards for GPU virtualization in Hyper-V.

     

     

  • andsav's avatar
    andsav
    Brass Contributor
    @Craig Really, all sort of apps. I'm constantly observing low rendering speed in my VM, and the more apps I run, the worse UI performance is. Primarily, I use Visual Studio 2019, which seems to significantly affect all other apps rendering (I even reported an issue about that here https://developercommunity.visualstudio.com/content/problem/799943/visual-studio-noticeably-slows-down-the-whole-syst.html). Even when VS performs well, its not enough for many scenarios like working with UI designers. Some debugging experiences are super slow, like opening a Concurrent Stacks view or TPL Tasks list - it can redraw for tens of seconds in some heavy cases. Also, there are many apps which render far not that fast as on the local host, like Outlook, Teams, Skype, Edge (sometimes super slow) and many others. Even windows explorer often renders very slowly. Web UI stands separately, since it can contain some effects, animations etc, which are bad during viewing as well as developing. The same is for developing desktop apps with rich UI and animations. (And there is no point to even mention working with 3D) How can you estimate your "Fluent UI" if it's jut cant be fluent without real GPU. I should note that I have a pretty powerful PC meaning there is always enough physical memory, CPU and SSD throughput for a VM to be superfast, and it is, except for UI. And it makes no difference if I use regular localhost RDP connection, use the Hyper-V console rdp, if I do tweaks to VNet settings like VNet queue etc. Regarding DDA, I'm considering just what currently exists for windows server - injecting an NMVE SSD (I have two and one is dedicated to the VM and both are installed directly in the PCIe through an adapter), and injecting a dedicated GPU card. I consider the latter as an alternative to GPU paravirtualization, though I would prefer to share my host GPU. However, I can imaging many people who would be really happy to be able to use dedicated GPU in their VM for more GPU-intensive tasks, e.g. machine learning and other computations (though I'm not sure that some kind of artist would work with Photoshop or Maya in a VM), This can be not extra expensive if you have an integrated GPU, which can be left to the host, and a discrete GPU, which can be injected into a VM.
  • andsav Hey, thanks for the feedback. What applications are you interested in running in your dev VM that requires GPU acceleration? Likewise, what types of devices are you interested in using DDA to inject into your VMs on Windows 10 Pro/Enterprise?

  • andsav's avatar
    andsav
    Brass Contributor
    Hi, definitely, all mentioned features are very valuable and appreciated. However, I'm still awaiting for a couple more: 1) Support for GPU paravirtualization (similar to what's implemented for Sandbox) for regular windows virtual machines. You took away support for RemoteFX and gave nothing to replace it with 😞 Now days, VMs are used not only for server scenarios, but also for isolated work (development environment in my case), so great UI experience and performance are very important. 2) Support for DDA (Discrete Device Assignment) on client version of Windows 10 (again, would be very useful for scenarios like described above). Any hope to see any of these implemented in the nearest future?
  • Hyper-V has always been the best choice for me, installing VMware workstation pro 15.5 requires too much compromise in terms of security as it is not compatible with any virtual security features of Windows 10