<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>John Howard - Senior Program Manager in the Hyper-V team at Microsoft</title><link>http://blogs.technet.com/b/jhoward/</link><description>Senior Program Manager, Hyper-V team, Windows Core Operating System Division.</description><dc:language>en-GB</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>NIC Teaming in Windows Server "8" Beta whitepaper now available</title><link>http://blogs.technet.com/b/jhoward/archive/2012/04/05/nic-teaming-in-windows-server-quot-8-quot-beta-whitepaper-now-available.aspx</link><pubDate>Thu, 05 Apr 2012 21:42:12 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3490619</guid><dc:creator>John Howard -MSFT</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/jhoward/rsscomments.aspx?WeblogPostID=3490619</wfw:commentRss><comments>http://blogs.technet.com/b/jhoward/archive/2012/04/05/nic-teaming-in-windows-server-quot-8-quot-beta-whitepaper-now-available.aspx#comments</comments><description>&lt;p&gt;For those of you interested in learning more about the new inbox capability for NIC Teaming (aka LBFO or Load Balancing/Failover) in Windows Server "8" Beta, there's an excellent whitepaper which has just been published. It covers pretty much everything you need to know from the feature overview, the different modes it can operate in, load distribution algorithms and considerations, the user interface, PowerShell cmdlets to configure it, how to use it with Hyper-V (and SR-IOV), plus more.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Here's the &lt;a title="download link" href="http://download.microsoft.com/download/E/1/3/E13C9AD6-B4D6-4041-97E0-6BDC48273BC7/Windows Server 8 Beta NIC Teaming (LBFO) Deployment and Management.docx" target="_blank"&gt;download link&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Cheers&lt;br /&gt;John.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3490619" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Beta+Products/">Beta Products</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Downloads/">Downloads</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Hyper_2D00_V/">Hyper-V</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Windows/">Windows</category></item><item><title>Everything you wanted to know about SR-IOV in Hyper-V Part 8</title><link>http://blogs.technet.com/b/jhoward/archive/2012/03/21/everything-you-wanted-to-know-about-sr-iov-in-hyper-v-part-8.aspx</link><pubDate>Wed, 21 Mar 2012 17:00:41 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3487950</guid><dc:creator>John Howard -MSFT</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/jhoward/rsscomments.aspx?WeblogPostID=3487950</wfw:commentRss><comments>http://blogs.technet.com/b/jhoward/archive/2012/03/21/everything-you-wanted-to-know-about-sr-iov-in-hyper-v-part-8.aspx#comments</comments><description>&lt;p&gt;This part of the series is all about determining why SR-IOV may not be operational. As you will discover, there are several reasons, some of them obvious if you’ve followed all the parts so far, some more subtle. By the end of this part, you will be an expert! &lt;/p&gt;  &lt;p&gt;Assuming you have a switch in SR-IOV mode, and have enabled SR-IOV on a virtual network adapter, the most obvious place you will notice that SR-IOV isn’t working is in Hyper-V Manager after selecting the networking tab for a running virtual machine. (I love this panel – my favourite bit of Hyper-V Manager that I worked on for the Windows “8” release!)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/8030.IOV_2D00_Part8_2D00_Image1_2D00_Marked_5F00_3AC42CF9.jpg"&gt;&lt;img title="IOV-Part8-Image1-Marked" style="display: inline; background-image: none;" border="0" alt="IOV-Part8-Image1-Marked" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/6470.IOV_2D00_Part8_2D00_Image1_2D00_Marked_5F00_thumb_5F00_0C6AA74C.jpg" width="513" height="198" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I’ve already outlined dependencies from past posts. But let’s assume you haven’t heeded them and have done this on an older machine which isn’t SLAT capable, doesn’t have BIOS support for SR-IOV and doesn’t even have an SR-IOV capable network adapter, as for the following screenshot. The first clues will come from the &lt;font face="Courier New"&gt;Get-VMHost&lt;/font&gt; PowerShell cmdlet. In this case, &lt;font face="Courier New"&gt;IovSupportReasons&lt;/font&gt; property returned from the cmdlet is pretty verbose in outlining a number of issues.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/8424.IOV_2D00_Part8_2D00_Image2_2D00_Marked_5F00_7302A411.jpg"&gt;&lt;img title="IOV-Part8-Image2-Marked" style="display: inline; background-image: none;" border="0" alt="IOV-Part8-Image2-Marked" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/8030.IOV_2D00_Part8_2D00_Image2_2D00_Marked_5F00_thumb_5F00_0068B718.jpg" width="512" height="108" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Essentially you’re never going to get SR-IOV working on the above machine. So let’s move on…&lt;/p&gt;  &lt;p&gt;The follow example is a machine which has chipset support, but the BIOS doesnt have support for SR-IOV. This is probably the most common error you will find on servers currently shipping, or if you were to install Windows Server “8” beta on a desktop class machine. The error specifically is the first entry which says “To use this SR-IOV on this system, the system BIOS must be updated to allow Windows to control PCI Express. Contact your system manufacturer for an update.”&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/2063.IOV_2D00_Part8_2D00_Image3_2D00_Marked_5F00_520F316A.jpg"&gt;&lt;img title="IOV-Part8-Image3-Marked" style="display: inline; background-image: none;" border="0" alt="IOV-Part8-Image3-Marked" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/0005.IOV_2D00_Part8_2D00_Image3_2D00_Marked_5F00_thumb_5F00_0A4DA883.jpg" width="520" height="131" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Next, let’s assume that the machine has chipset support, the BIOS has SR-IOV support, and you’re using a NIC which is capable of SR-IOV, but it still isn’t working. In this case, &lt;font face="Courier New"&gt;Get-VMHost&lt;/font&gt; may return the following:&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/6378.IOV_2D00_Part8_2D00_Image4_2D00_Marked_5F00_1100B206.jpg"&gt;&lt;img title="IOV-Part8-Image4-Marked" style="display: inline; background-image: none;" border="0" alt="IOV-Part8-Image4-Marked" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/2642.IOV_2D00_Part8_2D00_Image4_2D00_Marked_5F00_thumb_5F00_5E9CDE86.jpg" width="514" height="93" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;In addition, after a virtual network adapter is started (by changing the state of a virtual machine to running, or by toggling the &lt;font face="Courier New"&gt;IOVWeight&lt;/font&gt; property on a running virtual network adapter to a positive value in the range 1..100) the following may be logged in the event log indicating that the user of SR-IOV has been disabled by policy on this system.&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/7853.IOV_2D00_Part8_2D00_Image5_2D00_Marked_5F00_02560621.jpg"&gt;&lt;img title="IOV-Part8-Image5-Marked" style="display: inline; background-image: none;" border="0" alt="IOV-Part8-Image5-Marked" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/5775.IOV_2D00_Part8_2D00_Image5_2D00_Marked_5F00_thumb_5F00_01E9D32C.jpg" width="518" height="257" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;This reason for this takes a little explaining. Even if the system manufacturer has made the necessary changes in their BIOS for the base functionality Windows requires to support SR-IOV, some chipset implementations have flaws in them. In some cases, system manufacturers may be able to work around the problem by a fix in firmware. This is not universally true, and it may be a case that it requires a revision to silicon that cannot be fixed by firmware alone (in other words, a revised motherboard). The result of the chipset flaws are such that it is possible for a guest operating system which has a VF assigned to cause the physical system to operate with reduced performance, or in the worst case cause it to crash.&lt;/p&gt;  &lt;p&gt;If you are prepared to assign VFs only to “trusted” workloads in lieu of an updated BIOS with a workaround (assuming it is possible on your hardware), the following registry key can be added on the parent partition. IOVEnableOverride. Type DWORD. Value 1. Under HKLM\Software\Microsoft\Windows NT\CurrentVersion\Virtualization. The system should also be restarted after setting this key. (Technically you could restart the VMMS service and save/restore each running VM which has an &lt;font face="Courier New"&gt;IOVWeight&lt;/font&gt; set as well.)&lt;/p&gt;  &lt;p&gt;On a restart, the following event will be logged on each startup. As long as you are comfortable and understand the potential risk involved, SR-IOV should now work on a system with this registry key set. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/3225.IOV_2D00_Part8_2D00_Image6_2D00_Marked_5F00_368A2F67.jpg"&gt;&lt;img title="IOV-Part8-Image6-Marked" style="display: inline; background-image: none;" border="0" alt="IOV-Part8-Image6-Marked" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/4718.IOV_2D00_Part8_2D00_Image6_2D00_Marked_5F00_thumb_5F00_6F34D974.jpg" width="521" height="342" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If your system manufacturer can work around the chipset flaw, and has provided a BIOS which incorporates a workaround, the registry key is not required, the event above will not be logged, and VFs can be securely assigned to virtual machine. In these cases, if a virtual machine with a virtual function assigned can trigger the conditions which would otherwise cause the symptoms previously described, Hyper-V will automatically remove the VF from the VM and let it continue running using software based networking. However, it should be noted that if there is a VM which is able to trigger one of the conditions, there is an extremely likely probability that the guest operating system is compromised and likely to crash very soon after. However, the remainder of the system including other running VMs will not be affected.&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;The next useful cmdlet is &lt;font face="Courier New"&gt;Get-NetAdapterSriov&lt;/font&gt;. This cmdlet gives a lot of useful information about the physical network adapter, assuming it supports SR-IOV.&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/0412.IOV_2D00_Part8_2D00_Image7_2D00_Marked_5F00_75E7E2F7.jpg"&gt;&lt;img title="IOV-Part8-Image7-Marked" style="display: inline; background-image: none;" border="0" alt="IOV-Part8-Image7-Marked" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/0027.IOV_2D00_Part8_2D00_Image7_2D00_Marked_5F00_thumb_5F00_757BB002.jpg" width="522" height="116" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;It’s pretty telling that nothing was returned. A clear indication that there are no SR-IOV capable network adapters. Let’s instead run this on a machine which does have an SR-IOV capable network adapter.&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/8831.IOV_2D00_Part8_2D00_Image8_2D00_Marked_5F00_47222A55.jpg"&gt;&lt;img title="IOV-Part8-Image8-Marked" style="display: inline; background-image: none;" border="0" alt="IOV-Part8-Image8-Marked" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/0005.IOV_2D00_Part8_2D00_Image8_2D00_Marked_5F00_thumb_5F00_7F60A16D.jpg" width="528" height="314" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The fact that something was returned indicates the network adapter is SR-IOV capable. Furthermore, looking at &lt;font face="Courier New"&gt;NumVFs&lt;/font&gt;, we can see that this adapter is working correctly and has available resources.&lt;/p&gt;  &lt;p&gt;If you’ve created a virtual switch, the third useful cmdlet is &lt;font face="Courier New"&gt;Get-VMSwitch&lt;/font&gt;. Remember that to enable SR-IOV, the switch must be created in SR-IOV mode to start with. When SR-IOV is not available on the physical NIC, there are a number of properties which indicate why. &lt;font face="Courier New"&gt;IovVirtualFunctionCount&lt;/font&gt; and &lt;font face="Courier New"&gt;IovQueuePairCount&lt;/font&gt; will be zero. &lt;font face="Courier New"&gt;IovSupport&lt;/font&gt; will be false, and &lt;font face="Courier New"&gt;IovSupportReasons&lt;/font&gt; will list the reasons why. &lt;/p&gt;  &lt;p&gt;First an example where the machine itself does not support SR-IOV, and the switch is bound to a network adapter which doesn’t support SR-IOV either.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/7848.IOV_2D00_Part8_2D00_Image9_2D00_Marked_5F00_2CE1C131.jpg"&gt;&lt;img title="IOV-Part8-Image9-Marked" style="display: inline; background-image: none;" border="0" alt="IOV-Part8-Image9-Marked" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/7455.IOV_2D00_Part8_2D00_Image9_2D00_Marked_5F00_thumb_5F00_5A62E0F4.jpg" width="537" height="282" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Here’s an example where the machine does support SR-IOV, but the physical network adapter does not. &lt;font face="Courier New"&gt;IovSupportReasons &lt;/font&gt;is clear as to the cause of the problem, regardless of whether the virtual switch is created with SR-IOV enabled or not.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/7433.IOV_2D00_Part8_2D00_Image10_2D00_Marked_5F00_45052B8C.jpg"&gt;&lt;img title="IOV-Part8-Image10-Marked" style="display: inline; background-image: none;" border="0" alt="IOV-Part8-Image10-Marked" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/8015.IOV_2D00_Part8_2D00_Image10_2D00_Marked_5F00_thumb_5F00_396F6E4D.jpg" width="542" height="246" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;And another example where the machine supports SR-IOV, as does the physical network adapter, but the switch was not created in SR-IOV mode. This one is a bit more subtle to spot as &lt;font face="Courier New"&gt;IovSupport&lt;/font&gt; and &lt;font face="Courier New"&gt;IovSupportReasons&lt;/font&gt; indicate everything is OK. The property &lt;font face="Courier New"&gt;IovEnabled&lt;/font&gt; is False, hence &lt;font face="Courier New"&gt;IovVirtualFunctionCount&lt;/font&gt; is zero even though the physical NIC has resources potentially available.&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/7357.IOV_2D00_Part8_2D00_Image11_2D00_Marked_5F00_2411B8E5.jpg"&gt;&lt;img title="IOV-Part8-Image11-Marked" style="display: inline; background-image: none;" border="0" alt="IOV-Part8-Image11-Marked" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/1565.IOV_2D00_Part8_2D00_Image11_2D00_Marked_5F00_thumb_5F00_2A588F73.jpg" width="540" height="227" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;On a “good” (well configured) machine, you will get very different results in these properties. Notice how there is a positive integer in &lt;font face="Courier New"&gt;IovVirtualFunctionCount&lt;/font&gt;, &lt;font face="Courier New"&gt;IovSupport&lt;/font&gt; is True, and &lt;font face="Courier New"&gt;IovSupportReasons&lt;/font&gt; has a single value in the array, &lt;font face="Courier New"&gt;“OK”&lt;/font&gt;.&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/4377.IOV_2D00_Part8_2D00_Image12_2D00_Marked_5F00_310B98F6.jpg"&gt;&lt;img title="IOV-Part8-Image12-Marked" style="display: inline; background-image: none;" border="0" alt="IOV-Part8-Image12-Marked" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/5861.IOV_2D00_Part8_2D00_Image12_2D00_Marked_5F00_thumb_5F00_17A395BC.jpg" width="544" height="231" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The last cmdlet is &lt;font face="Courier New"&gt;Get-VMNetworkAdapter&lt;/font&gt;. This should be run against a running VMs network adapter. Here again is an example from a physical machine which does not support SR-IOV, and does not have an SR-IOV capable network adapter. Even though the &lt;font face="Courier New"&gt;IovWeight&lt;/font&gt; property is non-zero, note that &lt;font face="Courier New"&gt;IovQueuePairsAssigned&lt;/font&gt; and &lt;font face="Courier New"&gt;IovUsage&lt;/font&gt; are zero, and &lt;font face="Courier New"&gt;Status&lt;/font&gt; and &lt;font face="Courier New"&gt;StatusDescription&lt;/font&gt; contain a slew of reasons why the network adapter is degraded.&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&amp;#160;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/6763.IOV_2D00_Part8_2D00_Image13_2D00_Marked_5F00_5B77CA13.jpg"&gt;&lt;img title="IOV-Part8-Image13-Marked" style="display: inline; background-image: none;" border="0" alt="IOV-Part8-Image13-Marked" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/8507.IOV_2D00_Part8_2D00_Image13_2D00_Marked_5F00_thumb_5F00_21F4BA1C.jpg" width="540" height="404" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Here’s the same on a “good” machine for comparison. Notice that &lt;font face="Courier New"&gt;IovUsage&lt;/font&gt; is 1.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/1157.IOV_2D00_Part8_2D00_Image14_2D00_Marked_5F00_165EFCDD.jpg"&gt;&lt;img title="IOV-Part8-Image14-Marked" style="display: inline; background-image: none;" border="0" alt="IOV-Part8-Image14-Marked" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/6443.IOV_2D00_Part8_2D00_Image14_2D00_Marked_5F00_thumb_5F00_3C54AD33.jpg" width="548" height="373" /&gt;&lt;/a&gt;    &lt;br /&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The above has covered the common cases, but there are slightly more subtle ones, those around when port policies have been applied. See if you can spot what’s wrong in the following output. In this case, the machine is fully capable of SR-IOV, the virtual switch is in SR-IOV mode, and the &lt;font face="Courier New"&gt;IovWeight&lt;/font&gt; has been set on the network adapter correctly. It’s none of the reasons described so far.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/8816.IOV_2D00_Part8_2D00_Image15_2D00_Marked_5F00_3FF2C810.jpg"&gt;&lt;img title="IOV-Part8-Image15-Marked" style="display: inline; background-image: none;" border="0" alt="IOV-Part8-Image15-Marked" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/3223.IOV_2D00_Part8_2D00_Image15_2D00_Marked_5F00_thumb_5F00_1441FE14.jpg" width="550" height="393" /&gt;&lt;/a&gt;    &lt;br /&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Unfortunately, the &lt;font face="Courier New"&gt;StatusDescription&lt;/font&gt; isn’t overly helpful in indicating the precise reason. In fact, for several technical reasons, this is something which is incredibly difficult to accurately provide, so is unlikely to change before final release. Instead, we need to look at the policies which have been applied. In this particular case, I enabled &lt;font face="Courier New"&gt;RouterGuard&lt;/font&gt; on the VM. When we apply policy which can only be enforced by the virtual switch, and not the physical NIC, we automatically disable the use of SR-IOV on the VM so that the policy can be applied. Turning off any such policies (assuming they are compatible with the networking configuration requirements of the VM) will enable SR-IOV to start operating again.&lt;/p&gt;  &lt;p&gt;Now I did mention it in an earlier post, but if you are still struggling to get SR-IOV enabled and you believe you have everything you should need (chipset, latest BIOS, BIOS settings, NIC, virtual switch in SR-IOV mode), there is one other thing that is definitely worth checking. Some BIOS’s have more than one firmware setting to enable SR-IOV. If in doubt, always go back to your system manufacturers documentation to make sure you have the settings configured correctly. And remember, if you do change BIOS settings, you may need to hard power cycle the machine, not just a soft restart.&lt;/p&gt;  &lt;p&gt;There are two other reasons worth mentioning. One is if you are using client Hyper-V. As this is a server only feature, the user interface for SR-IOV does not exist in Hyper-V Manager on client. (Note that the SR-IOV options will appear though if you are using Hyper-V Manager on a client connecting to a remote Windows “8” server.)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/1145.IOV_2D00_Part8_2D00_Image16_2D00_Marked_5F00_6D07B4DE.jpg"&gt;&lt;img title="IOV-Part8-Image16-Marked" style="display: inline; background-image: none;" border="0" alt="IOV-Part8-Image16-Marked" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/1638.IOV_2D00_Part8_2D00_Image16_2D00_Marked_5F00_thumb_5F00_3AA3E15F.jpg" width="437" height="356" /&gt;&lt;/a&gt;    &lt;br /&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/2630.IOV_2D00_Part8_2D00_Image17_2D00_Marked_5F00_1369982A.jpg"&gt;&lt;img title="IOV-Part8-Image17-Marked" style="display: inline; background-image: none;" border="0" alt="IOV-Part8-Image17-Marked" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/8507.IOV_2D00_Part8_2D00_Image17_2D00_Marked_5F00_thumb_5F00_44F505BF.jpg" width="516" height="514" /&gt;&lt;/a&gt;    &lt;br /&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;If you were to run &lt;font face="Courier New"&gt;get-vmhost&lt;/font&gt; on a client, it will indicate that SR-IOV is not supported.     &lt;br /&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/2046.IOV_2D00_Part8_2D00_Image18_2D00_Marked_5F00_19443BC3.jpg"&gt;&lt;img title="IOV-Part8-Image18-Marked" style="display: inline; background-image: none;" border="0" alt="IOV-Part8-Image18-Marked" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/5344.IOV_2D00_Part8_2D00_Image18_2D00_Marked_5F00_thumb_5F00_1CE256A0.jpg" width="530" height="236" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;And similarly for a virtual switch (sadly my laptop doesn’t have a 10G network adapter that supports SR-IOV either – next upgrade &lt;img class="wlEmoticon wlEmoticon-smile" style="style" alt="Smile" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/3201.wlEmoticon_2D00_smile_5F00_23956023.png" /&gt;)    &lt;br /&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/3288.IOV_2D00_Part8_2D00_Image19_2D00_Marked_5F00_186BD5D9.jpg"&gt;&lt;img title="IOV-Part8-Image19-Marked" style="display: inline; background-image: none;" border="0" alt="IOV-Part8-Image19-Marked" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/0167.IOV_2D00_Part8_2D00_Image19_2D00_Marked_5F00_thumb_5F00_51167FE6.jpg" width="539" height="55" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So that’s pretty much it in terms of diagnosing why SR-IOV may not be operating. If you understood all the above, you are now a fully-fledged superhero and have earned your cape with honours!&lt;/p&gt;  &lt;p&gt;Probably one more part to come in this series, the “kitchen sink” part, as in everything not already mentioned. That will hopefully be early next week after I find time to write it.&lt;/p&gt;  &lt;p&gt;Cheers,    &lt;br /&gt;John.     &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3487950" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Beta+Products/">Beta Products</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Hyper_2D00_V/">Hyper-V</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Windows+_2200_8_2200_/">Windows "8"</category></item><item><title>Everything you wanted to know about SR-IOV in Hyper-V Part 7</title><link>http://blogs.technet.com/b/jhoward/archive/2012/03/20/everything-you-wanted-to-know-about-sr-iov-in-hyper-v-part-7.aspx</link><pubDate>Tue, 20 Mar 2012 19:02:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3487752</guid><dc:creator>John Howard -MSFT</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/jhoward/rsscomments.aspx?WeblogPostID=3487752</wfw:commentRss><comments>http://blogs.technet.com/b/jhoward/archive/2012/03/20/everything-you-wanted-to-know-about-sr-iov-in-hyper-v-part-7.aspx#comments</comments><description>&lt;p&gt;Only a few more topics in this series remain uncovered. This part of the series looks at resiliency with SR-IOV. By resiliency, I mean, of course, NIC teaming, otherwise known as Load Balancing/Failover (LBFO), the ability to aggregate network links or fail over should a link fail. I won&amp;rsquo;t get into the details of configuring NIC teaming which is inbox in Windows Server &amp;ldquo;8&amp;rdquo;, just how it relates to the use of SR-IOV.&lt;/p&gt;
&lt;p&gt;When a NIC team is created on top of two or more SR-IOV capable physical network adapters, the SR-IOV capability is not propagated upwards. Hence, the two features are not compatible in the parent partition.&lt;/p&gt;
&lt;p&gt;The solution for virtual machine networking redundancy with SR-IOV and Windows Server &amp;ldquo;8&amp;rdquo; guest operating systems, is to do teaming inside the virtual machine guest operating system itself. To configure this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Each physical NIC should have a virtual switch bound to it in the parent partition, each with SR-IOV enabled&lt;/li&gt;
&lt;li&gt;The VM is configured with two network adapters, each connected to one of the virtual switches.&lt;/li&gt;
&lt;li&gt;In the parent partition, the virtual machines network adapters &lt;strong&gt;&lt;span style="text-decoration: underline;"&gt;MUST&lt;/span&gt;&lt;/strong&gt; be configured to allow teaming (meaning each network adapter can spoof the MAC address of the other) by running the following PowerShell command:&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-family: Courier New;" face="Courier New"&gt;Get-VMNetworkAdapter &amp;ndash;VMName &amp;ldquo;VMName&amp;rdquo; | Set-VMNetworkAdapter &amp;ndash;AllowTeaming On&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Configure the IOVWeight on the virtual network adapters as covered in a previous part of this series&lt;/li&gt;
&lt;li&gt;Configure teaming in the guest operating system in switch independent, address hash distribution mode.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The following is a screenshot from inside a virtual machine configured in this way, with one of the physical links failed (by disabling one of the NICs using ncpa.cpl in the parent partition).&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/8713.IOV_2D00_Part7_2D00_Image_2D00_Marked_5F00_070C4543.jpg"&gt;&lt;img width="499" height="225" title="IOV-Part7-Image-Marked" style="display: inline; background-image: none;" alt="IOV-Part7-Image-Marked" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/7658.IOV_2D00_Part7_2D00_Image_2D00_Marked_5F00_thumb_5F00_31E4A955.jpg" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;It is possible to create a team in the guest operating system where, in the parent partition, one virtual switch is in SR-IOV mode and the other not (or bound to a network adapter which does not support SR-IOV). This is fully supported, but you should bear in mind that it may introduce side effects. LBFO is not aware of what is backing the NICs in the team, hence not aware that one path is SR-IOV enabled (potentially with a VF), and the other path not. In this situation, while a VM still has redundancy against link failure, you may want to configure the virtual NICs for Active/Standby operation inside the VM.&lt;/p&gt;
&lt;p&gt;While a team interface can be created on up to 32 NICs, inside a virtual machine, the (unenforced) support limit is for 2 NICs.&lt;/p&gt;
&lt;p&gt;Note that the &lt;a href="http://blogs.msdn.com/b/virtual_pc_guy/archive/2012/03/19/new-networking-tab-on-hyper-v-manager-in-windows-8.aspx" target="_blank"&gt;networking tab&lt;/a&gt; in Hyper-V&amp;nbsp; will not show the IP address(es) of the virtual network adapters when a team has been created inside a VM. This is because the virtual network adapters do not have an IP address. It&amp;rsquo;s the team interface inside the VM which has an IP address.&lt;/p&gt;
&lt;p&gt;The following screenshot was taken with the physical NIC bound to virtual switch &amp;ldquo;TeamDemoB&amp;rdquo; disabled.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/4118.IOV_2D00_Part7_2D00_Image2_2D00_Marked_5F00_66850590.jpg"&gt;&lt;img width="493" height="108" title="IOV-Part7-Image2-Marked" style="display: inline; background-image: none;" alt="IOV-Part7-Image2-Marked" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/6574.IOV_2D00_Part7_2D00_Image2_2D00_Marked_5F00_thumb_5F00_4A7446A5.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Hyper-V Manager is correctly showing the status of the second virtual network adapter as &amp;ldquo;OK&amp;rdquo; from the Hyper-V perspective. This is because it still has connectivity to other virtual machines connected to &amp;ldquo;TeamDemoB&amp;rdquo;. In other words, Hyper-V Manager does not ripple through the underlying physical link status. &lt;br /&gt;&amp;nbsp; &lt;br /&gt;In the &lt;a title="next part" href="http://blogs.technet.com/b/jhoward/archive/2012/03/21/everything-you-wanted-to-know-about-sr-iov-in-hyper-v-part-8.aspx"&gt;next part&lt;/a&gt; of this series, I&amp;rsquo;ll give you the tools needed to make you an SR-IOV debugging superhero.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Cheers, &lt;br /&gt;John.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3487752" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Beta+Products/">Beta Products</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Hyper_2D00_V/">Hyper-V</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Windows+_2600_quot_3B00_8_2600_quot_3B00_/">Windows &amp;quot;8&amp;quot;</category></item><item><title>Everything you wanted to know about SR-IOV in Hyper-V Part 6</title><link>http://blogs.technet.com/b/jhoward/archive/2012/03/19/everything-you-wanted-to-know-about-sr-iov-in-hyper-v-part-6.aspx</link><pubDate>Mon, 19 Mar 2012 13:51:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3487432</guid><dc:creator>John Howard -MSFT</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/jhoward/rsscomments.aspx?WeblogPostID=3487432</wfw:commentRss><comments>http://blogs.technet.com/b/jhoward/archive/2012/03/19/everything-you-wanted-to-know-about-sr-iov-in-hyper-v-part-6.aspx#comments</comments><description>&lt;p&gt;Summarising the series so far, we&amp;rsquo;ve answered &amp;ldquo;Why SR-IOV?&amp;rdquo;, looked at hardware and firmware dependencies, and &lt;a title="run through" href="http://blogs.technet.com/b/jhoward/archive/2012/03/16/everything-you-wanted-to-know-about-sr-iov-in-hyper-v-part-5.aspx"&gt;run through&lt;/a&gt; the user interface and PowerShell cmdlets to configure SR-IOV. Next on the agenda is how SR-IOV and Live Migration co-operate. In addition, there&amp;rsquo;s a video showing covering the configuration aspects of SR-IOV from the previous part which also shows Live Migration in action.&lt;/p&gt;
&lt;p&gt;A goal very early on in Windows &amp;ldquo;8&amp;rdquo; planning was that we should consider features which are incompatible with mobility scenarios such as Live Migration. (Actually SR-IOV has been in the pipeline for considerably longer than that as you can probably tell from the deck back at WinHEC 2008 I linked to previously, and even talked about at &lt;a href="http://blogs.technet.com/b/virtualization/archive/2006/06/14/winhec-2006-slides.aspx" target="_blank"&gt;WinHEC 2006&lt;/a&gt;.)&lt;/p&gt;
&lt;p&gt;That goal poses somewhat of a problem when hardware is assigned to a virtual machine. Let&amp;rsquo;s ignore SR-IOV for a moment and take a step back a few years into the initial development and prototyping of the feature. You may be familiar with the term &amp;ldquo;Discrete Device Assignment&amp;rdquo;. This is where a fully-fledged PCI Express device is assigned to a virtual machine. Discrete assignment, from a software engineering perspective can be viewed in some ways as a stepping stone towards SR-IOV support. However, discrete assignment is fraught with issues in several areas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Security&lt;/li&gt;
&lt;li&gt;Usability &amp;amp; Mobility&lt;/li&gt;
&lt;li&gt;Scalability&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;From a security perspective, a virtual machine with significant uncontrolled access to hardware is too risky to entertain in a shipping product, while still providing a production support statement. It would be extremely difficult to secure the VM to the extent that it was unable to cause side effects to other partitions, thus breaking a critical security tenet.&lt;/p&gt;
&lt;p&gt;From a scalability perspective, it is difficult to describe assigning a device taking an entire PCI Express slot into a single virtual machine as scalable. It would be very expensive to scale to tens or hundreds of VMs in this manner. If indeed, you could find a server with that many PCI Express slots.&lt;/p&gt;
&lt;p&gt;From a usability perspective, it is difficult to describe this as a common user scenario. Granted, there are niche exceptions which do have some merit, but several things would be lost in the process. The most important of these is Live Migration support, shortly followed by state changes (apart from running or shutdown), then snapshots. Probably more as well. The reason is that is extremely difficult to save the state of a piece of arbitrary hardware inside a running VM, and subsequently restore it to a running state on a different platform. Further, even if we could temporarily halt the VM with hardware state intact (as would be necessary during Live Migration black-out), without an absolutely identical configuration on the target at all levels (not just hardware) the chances of successful restoration are non-existent.&lt;/p&gt;
&lt;p&gt;Hence, we considered discrete assignment not very useful except to an extremely niche segment of our user base who aren&amp;rsquo;t concerned about security, scalability or mobility. Instead, we focused on something that addresses all of these concerns, namely SR-IOV. Security is built in at all levels. Only a single PCI Express slot is needed to support many virtual machines. And we support mobility (live and quick migration), state changes and snapshots.&lt;/p&gt;
&lt;p&gt;So you may be wondering how SR-IOV overcomes the statement I made about it &amp;ldquo;being difficult to save the state of a piece of hardware inside a running VM, and subsequently restore it to a running state on a different platform&amp;rdquo;, yet still be able to achieve all these goals. After all, a VF is true hardware and it running in the VM.&lt;/p&gt;
&lt;p&gt;As simple as it is, the answer probably isn&amp;rsquo;t immediately obvious. The answer is that we don&amp;rsquo;t save the hardware state at all, and don&amp;rsquo;t even attempt to tackle the problem. And yet we are able to migrate to a platform which could have a completely different physical NIC, the same type of NIC at a different firmware release level, or even a platform which doesn&amp;rsquo;t have SR-IOV support. And through all of these scenarios, keep networking fully functional in the VM. Confused yet?&lt;/p&gt;
&lt;p&gt;One more minor backtrack. You may have noticed I&amp;rsquo;ve said a couple of times that a VF &amp;ldquo;backs&amp;rdquo; a software based network adapter. By this I mean that the VM always has a software based network adapter, but when a VF is available, we &amp;ldquo;failover&amp;rdquo; automatically to the hardware path for I/O. The software path is always present, only the VF is transient. So now it should be a little more obvious. Whenever we go through a state transition that would require hardware state to be saved, we remove any VFs from the VM beforehand, falling back to software based networking. (I say VFs in plural as a VM can have multiple software network adapters, up to eight, hence up to eight VFs assigned.) Once the VF is removed, we can perform any operation necessary on the VM as it is a complete software based container at that point. Once the operation has been completed, assuming hardware resources are available and other dependencies met, we will give a VF back to the VM. This completely solves the problem.&lt;/p&gt;
&lt;p&gt;Those paying attention may have noticed I said that &amp;ldquo;we remove any VFs from the VM beforehand&amp;rdquo; and are wondering whether there are implications if the guest operating system isn&amp;rsquo;t co-operative. The short answer is no, our state model covers this scenario, although it is certainly easier when the guest operating system co-operates in VF deallocation.&lt;/p&gt;
&lt;p&gt;Note also I used the word &amp;ldquo;failover&amp;rdquo; in quotation marks. I could have said &amp;ldquo;team&amp;rdquo;, but that implies a little more functionality than &amp;ldquo;failover&amp;rdquo;. Truthfully, we haven&amp;rsquo;t come up with a good term yet, but the point is that this &amp;ldquo;failover&amp;rdquo; is nothing to do with NIC teaming, also now native in Windows Server &amp;ldquo;8&amp;rdquo;. It simply means that we use a VF automatically if it is present, or software based networking if it is not, and during the transition either way, there will be no loss of network packets. As we will see shortly, NIC teaming and SR-IOV can co-exist as well in a virtual machine.&lt;/p&gt;
&lt;p&gt;At this point, the adage about a picture speaking a thousand is apt. Rather than attempt a series of badly drawn block diagrams, here&amp;rsquo;s a video showing SR-IOV configuration and Live Migration. There are so many other new features in Hyper-V also shown in this video which aren&amp;rsquo;t immediately obvious, I&amp;rsquo;m struggling to contain myself, but do manage to limit myself at least to talking just about SR-IOV in the recording. Maybe you will notice the use of an SMB file share for the VM, the use of VHDX, Live Migration without a cluster, and of course PowerShell support.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:63624c1f-61f8-4c5d-a2a8-2ad05e2336b6" style="margin: 0px; padding: 0px; float: none; display: inline;"&gt;
&lt;div&gt;&lt;object width="448" height="252"&gt;&lt;param name="movie" value="http://www.youtube.com/v/QZ-0sNj3pxk?hl=en&amp;amp;hd=1" /&gt;&lt;embed width="448" height="252" src="http://www.youtube.com/v/QZ-0sNj3pxk?hl=en&amp;amp;hd=1" type="application/x-shockwave-flash" /&gt;&lt;/object&gt;&lt;/div&gt;
&lt;div style="width: 448px; clear: both; font-size: .8em;"&gt;Windows Server &amp;ldquo;8&amp;rdquo; Beta. Demonstration of SR-IOV in Hyper-V and Live Migration&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;More to follow in the &lt;a title="next part" href="http://blogs.technet.com/b/jhoward/archive/2012/03/20/everything-you-wanted-to-know-about-sr-iov-in-hyper-v-part-7.aspx"&gt;next part&lt;/a&gt;. &lt;br /&gt; &lt;br /&gt;Cheers, &lt;br /&gt;John.&lt;/p&gt;
&lt;p&gt;-&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3487432" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Beta+Products/">Beta Products</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Hyper_2D00_V/">Hyper-V</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Windows+_2600_quot_3B00_8_2600_quot_3B00_/">Windows &amp;quot;8&amp;quot;</category></item><item><title>Everything you wanted to know about SR-IOV in Hyper-V Part 5</title><link>http://blogs.technet.com/b/jhoward/archive/2012/03/16/everything-you-wanted-to-know-about-sr-iov-in-hyper-v-part-5.aspx</link><pubDate>Fri, 16 Mar 2012 16:15:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3487110</guid><dc:creator>John Howard -MSFT</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/jhoward/rsscomments.aspx?WeblogPostID=3487110</wfw:commentRss><comments>http://blogs.technet.com/b/jhoward/archive/2012/03/16/everything-you-wanted-to-know-about-sr-iov-in-hyper-v-part-5.aspx#comments</comments><description>&lt;p&gt;In parts &lt;a href="http://blogs.technet.com/b/jhoward/archive/2012/03/12/everything-you-wanted-to-know-about-sr-iov-in-hyper-v-part-1.aspx" target="_blank"&gt;1&lt;/a&gt; through &lt;a href="http://blogs.technet.com/b/jhoward/archive/2012/03/15/everything-you-wanted-to-know-about-sr-iov-in-hyper-v-part-4.aspx" target="_blank"&gt;4&lt;/a&gt;, I covered the external dependencies and the &amp;ldquo;why&amp;rdquo; of SR-IOV. So it&amp;rsquo;s about time I showed you how to setup SR-IOV and what it looks like in a little more detail from a configuration perspective, both through the user interface in Hyper-V Manager, and from PowerShell.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;In part one, I showed a block diagram of how out the indirect I/O model works for virtual machine networking. Here&amp;rsquo;s a similar block-diagram showing, at an extremely high level, how this changes with SR-IOV. For simplicity, I am showing a single VM with a single VF.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/6153.Hyper_2D00_V_2D00_Simple_2D00_Architecture_2D00_With_2D00_SR_2D00_IOV_5F00_4D8A9D1F.jpg"&gt;&lt;img width="504" height="375" title="Hyper-V Simple Architecture With SR-IOV" style="display: inline; background-image: none;" alt="Hyper-V Simple Architecture With SR-IOV" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/4722.Hyper_2D00_V_2D00_Simple_2D00_Architecture_2D00_With_2D00_SR_2D00_IOV_5F00_thumb_5F00_1EC4E47D.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A few key points I want to bring out from this diagram:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I&amp;rsquo;m not an artist!&lt;/li&gt;
&lt;li&gt;The Virtual Switch in the parent partition is in &amp;ldquo;SR-IOV" mode&amp;rdquo;&lt;/li&gt;
&lt;li&gt;The I/O data path from the VF does not go across VMBus or through the Windows Hypervisor. It is a direct hardware path from the VF in the VM to the NIC&lt;/li&gt;
&lt;li&gt;The control path for the VF is through VMBus (back to the PF driver in the parent partition)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The first step when allowing a virtual machine to have connectivity to a physical network is to create an external virtual switch using Virtual Switch Manager in Hyper-V Manager. The additional step that is necessary when using SR-IOV is to ensure the checkbox is checked when the virtual switch is being created. It is not possible to change a &amp;ldquo;non SR-IOV mode&amp;rdquo; external virtual switch into an &amp;ldquo;SR-IOV mode&amp;rdquo; switch. The choice must be made a switch creation time.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/4426.IOV_2D00_Part5_2D00_Image2_2D00_Marked_5F00_375481CD.jpg"&gt;&lt;img width="495" height="468" title="IOV-Part5-Image2-Marked" style="display: inline; background-image: none;" alt="IOV-Part5-Image2-Marked" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/3326.IOV_2D00_Part5_2D00_Image2_2D00_Marked_5F00_thumb_5F00_569728A0.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This can also be done through PowerShell using &lt;span style="font-family: Courier New;" face="Courier New"&gt;New-VMSwitch&lt;/span&gt;. &lt;span style="font-family: Courier New;" face="Courier New"&gt;New-VMSwitch&lt;/span&gt; requires a parameter to specify the physical network adapter which is going to be used. The physical network adapters can be identified using &lt;span style="font-family: Courier New;" face="Courier New"&gt;Get-NetAdapter&lt;/span&gt;. In the following screenshot, I have a machine which has multiple physical NICs, one which is an onboard NIC, not capable of SR-IOV, and two dual-port PCI Express 10G NICs which are capable of supporting SR-IOV. Note that I have given some of the adapters &amp;ldquo;friendly names&amp;rdquo; using the network control panel (ncpa.cpl).&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/0601.IOV_2D00_Part5_2D00_Image3_2D00_Marked_5F00_4F0BB933.jpg"&gt;&lt;img width="494" height="88" title="IOV-Part5-Image3-Marked" style="display: inline; background-image: none;" alt="IOV-Part5-Image3-Marked" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/2350.IOV_2D00_Part5_2D00_Image3_2D00_Marked_5F00_thumb_5F00_639108B1.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;The following two screenshots show the different ways to use &lt;span style="font-family: Courier New;" face="Courier New"&gt;New-VMSwitch&lt;/span&gt; to create a virtual switch bound to SR-IOV capable network adapters from the previous screenshot. Note the use of the &lt;span style="font-family: Courier New;" face="Courier New"&gt;-EnableIov&lt;/span&gt; parameter &lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/5700.IOV_2D00_Part5_2D00_Image4_2D00_Raw_5F00_4E335349.jpg"&gt;&lt;img width="498" height="66" title="IOV-Part5-Image4-Raw" style="display: inline; background-image: none;" alt="IOV-Part5-Image4-Raw" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/8130.IOV_2D00_Part5_2D00_Image4_2D00_Raw_5F00_thumb_5F00_62B8A2C7.jpg" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/4478.IOV_2D00_Part5_2D00_Image5_2D00_Marked_5F00_624C6FD2.jpg"&gt;&lt;img width="496" height="57" title="IOV-Part5-Image5-Marked" style="display: inline; background-image: none;" alt="IOV-Part5-Image5-Marked" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/5700.IOV_2D00_Part5_2D00_Image5_2D00_Marked_5F00_thumb_5F00_33F2EA25.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s look at the properties we expose on the &lt;span style="font-family: Courier New;" face="Courier New"&gt;VMNetworkAdapter&lt;/span&gt; object in more detail. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/7534.IOV_2D00_Part5_2D00_Image6_2D00_Marked_5F00_3386B730.jpg"&gt;&lt;img width="501" height="114" title="IOV-Part5-Image6-Marked" style="display: inline; background-image: none;" alt="IOV-Part5-Image6-Marked" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/4401.IOV_2D00_Part5_2D00_Image6_2D00_Marked_5F00_thumb_5F00_6BC52E48.jpg" border="0" /&gt;&lt;/a&gt;&amp;nbsp; &lt;br /&gt;&lt;strong&gt;IovEnabled&lt;/strong&gt;: True if the switch is created in SR-IOV mode, False otherwise&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IovVirtualFunctionCount&lt;/strong&gt;: The number of VFs that are available for use by virtual machines. This will vary by vendor. Note that each software based NIC can be backed by a VF, and each VM can have up to 8 software based NICs.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IovVirtualFunctionsInUse&lt;/strong&gt;: The number of VFs currently being used by running VMs. In the screenshot, the number is 1 as I have a single running VM with a single software based NIC in SR-IOV mode.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IovQueuePairCount&lt;/strong&gt;: The number of queue pairs available as hardware resources on the physical NIC.&amp;nbsp; This will vary by vendor. There will be as many queue pairs available as there are VFs, although some vendors may have more queue pairs available than there are VFs. I recommend you generally think of a VF as the entity being assigned to a virtual machines network adapter rather than one or more queue pairs. However, a VF requires at least one queue pair to operate. If the NIC vendor supports additional features such as RSS in a VM backed by a VF, more than one queue pair may be required for a VF. For more information, you should consult NIC vendor guidance.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IovQueuePairsInUse&lt;/strong&gt;: The number of hardware queue pairs currently allocated to VFs assigned to running VMs.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IovSupport/IovSupportReasons&lt;/strong&gt;: Array of numeric codes and descriptions regarding the status of the network adapter. More information on these properties will be covered in the &amp;ldquo;debugging why SR-IOV doesn&amp;rsquo;t work&amp;rdquo; part of this series.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Once a virtual switch has been created, the next step is to configure a virtual machine. SR-IOV in Windows Server &amp;ldquo;8&amp;rdquo; is supported on x64 editions of Windows &amp;ldquo;8&amp;rdquo; as a guest operating system (as in Windows &amp;ldquo;8&amp;rdquo; Server, and Windows &amp;ldquo;8&amp;rdquo; client x64, but not x86 client). We have rearranged the settings for a virtual machine to introduce sub-nodes under a network adapter, one of which is the hardware acceleration node. At the bottom is a checkbox to enable SR-IOV.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt; &lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/2235.IOV_2D00_Part5_2D00_Image7_2D00_Marked_5F00_4733A0C4.jpg"&gt;&lt;img width="485" height="457" title="IOV-Part5-Image7-Marked" style="display: inline; background-image: none;" alt="IOV-Part5-Image7-Marked" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/0268.IOV_2D00_Part5_2D00_Image7_2D00_Marked_5F00_thumb_5F00_58A4019C.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;br /&gt;Under the covers, this checkbox is setting a property, &lt;span style="font-family: Courier New;" face="Courier New"&gt;IovWeight&lt;/span&gt;. This is identical in functionality to &lt;span style="font-family: Courier New;" face="Courier New"&gt;VMQWeight&lt;/span&gt; in Windows Server 2008 R2, and expresses a desire for a hardware offload, not a guarantee. A positive number between 1 and 100 is &amp;ldquo;on&amp;rdquo;, and 0 is &amp;ldquo;off&amp;rdquo;. We do not, in Windows Server &amp;ldquo;8&amp;rdquo; use a relative weighting system.&amp;nbsp; All numbers between 1 and 100 mean the same. This design allows us to add &amp;lsquo;weighting&amp;rsquo; functionality in the future without needing to change APIs.&lt;/p&gt;
&lt;p&gt;As for switch creation, enabling SR-IOV on a virtual machines virtual network adapter can be done through Powershell using &lt;span style="font-family: Courier New;" face="Courier New"&gt;Set-VMNetworkAdapter&lt;/span&gt; by setting the &lt;span style="font-family: Courier New;" face="Courier New"&gt;IovWeight&lt;/span&gt; property as per the following screenshot.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/3718.IOV_2D00_Part5_2D00_Image8_2D00_Marked_5F00_381CC1EA.jpg"&gt;&lt;img width="480" height="103" title="IOV-Part5-Image8-Marked" style="display: inline; background-image: none;" alt="IOV-Part5-Image8-Marked" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/1258.IOV_2D00_Part5_2D00_Image8_2D00_Marked_5F00_thumb_5F00_17958238.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Assuming you have all the requirements met for SR-IOV, you will see the status change on the networking tab in Hyper-V Manager for a selected VM to &amp;ldquo;OK (SR-IOV active)&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/3312.IOV_2D00_Part5_2D00_Image9_2D00_Marked_5F00_693BFC8A.jpg"&gt;&lt;img width="484" height="116" title="IOV-Part5-Image9-Marked" style="display: inline; background-image: none;" alt="IOV-Part5-Image9-Marked" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/6840.IOV_2D00_Part5_2D00_Image9_2D00_Marked_5F00_thumb_5F00_68CFC995.jpg" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s go back to that previous PowerShell output and examine the SR-IOV related properties of the &lt;span style="font-family: Courier New;" face="Courier New"&gt;VMNetworkAdapter&lt;/span&gt; object.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;strong&gt;IovWeight&lt;/strong&gt;: Discussed above&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IovQueuePairsRequested/IovQueuePairsAssigned&lt;/strong&gt;: These are for advanced networking features for a VF. One example is for RSS in a virtual machine (when backed by a VF), and requires that the physical network adapter itself supports RSS on a VF. Note that this is the first time we have been able to achieve RSS in a VM. While this series of posts isn&amp;rsquo;t about RSS, its benefits, or how to configure it, it&amp;rsquo;s worth a little diversion. More information about RSS, first introduced in Windows Server 2008, can be found &lt;a href="http://msdn.microsoft.com/en-us/windows/hardware/gg463253" target="_blank"&gt;here.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;By default, the IovQueuePairsRequested will be set to 1, and it can never be less than 1. If the VF hardware supports RSS and you have a multi-processor VM, you can use this parameter to request additional queue pairs from the set of hardware resources available to allow the VM to scale. It is, however, a request, and the actual number of queue pairs assigned may be less, depending on hardware resources. The number assigned will be in IovQueuePairsAssigned.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IovInterruptModeration&lt;/strong&gt;: Many modern physical NICs have an advanced property to allow the driver to be able to moderate interrupts. As there are now multiple functions (PF and VFs) which process interrupts, this property allows the VF driver to be able to adapt depending on load. The underlying implemented is up to the driver writer. Hence you should refer to the NIC vendor for guidance as to whether this is implemented, or what the recommended setting should be according to workloads running. The possible values are Default; Adaptive; Off; Low; Medium and High. In most cases keeping the default of &amp;ldquo;Default&amp;rdquo; will be sufficient.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IovUsage&lt;/strong&gt;: Will have value 1 if a VF is actively being used by a VM, 0 otherwise.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Status/StatusDescription&lt;/strong&gt;: Array of numeric codes and descriptions regarding the status of the network adapter. These are not exclusive to SR-IOV, although we do populate them when IovWeight is set but not working correctly. More information on these properties will be covered in the &amp;ldquo;debugging why SR-IOV doesn&amp;rsquo;t work&amp;rdquo; part of this series.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;VirtualFunction&lt;/strong&gt;: This provides a lot more information about the VF itself, but to all intents and purposes, you can ignore this property. However, it could be potentially useful to scripters to be able to tie back to the physical interface being used on the system through the ifAlias and ifDesc properties. For those who really want to know the full gory details of this object, here&amp;rsquo;s the full output: &lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/4863.IOV_2D00_Part5_2D00_Image10_2D00_Marked_5F00_686396A0.jpg"&gt;&lt;img width="479" height="241" title="IOV-Part5-Image10-Marked" style="display: inline; background-image: none;" alt="IOV-Part5-Image10-Marked" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/3225.IOV_2D00_Part5_2D00_Image10_2D00_Marked_5F00_thumb_5F00_7C7CB329.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;br /&gt;&lt;strong&gt;VirtualFunctionsAssigned&lt;/strong&gt;: This will be deprecated before final release and can be ignored in Windows Server &amp;ldquo;8&amp;rdquo; Beta. IovUsage is the parameter to use.&lt;/p&gt;
&lt;p&gt;So that pretty much covers the user interface and PowerShell side of SR-IOV configuration. In the &lt;a title="next part" href="http://blogs.technet.com/b/jhoward/archive/2012/03/19/everything-you-wanted-to-know-about-sr-iov-in-hyper-v-part-6.aspx"&gt;next part&lt;/a&gt;, I&amp;rsquo;ll cover Live Migration and show SR-IOV in action with a short video.&lt;/p&gt;
&lt;p&gt;Cheers, &lt;br /&gt;John.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3487110" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Beta+Products/">Beta Products</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Hyper_2D00_V/">Hyper-V</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Windows+_2600_quot_3B00_8_2600_quot_3B00_/">Windows &amp;quot;8&amp;quot;</category></item><item><title>Everything you wanted to know about SR-IOV in Hyper-V Part 4</title><link>http://blogs.technet.com/b/jhoward/archive/2012/03/15/everything-you-wanted-to-know-about-sr-iov-in-hyper-v-part-4.aspx</link><pubDate>Thu, 15 Mar 2012 15:07:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3486894</guid><dc:creator>John Howard -MSFT</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/jhoward/rsscomments.aspx?WeblogPostID=3486894</wfw:commentRss><comments>http://blogs.technet.com/b/jhoward/archive/2012/03/15/everything-you-wanted-to-know-about-sr-iov-in-hyper-v-part-4.aspx#comments</comments><description>&lt;p&gt;So far in this series, we have discussed the &lt;a href="http://blogs.technet.com/b/jhoward/archive/2012/03/12/everything-you-wanted-to-know-about-sr-iov-in-hyper-v-part-1.aspx" target="_blank"&gt;&amp;ldquo;why&amp;rdquo;&lt;/a&gt; question, and identified three dependencies for SR-IOV in Hyper-V in Windows Server &amp;ldquo;8&amp;rdquo; beta:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;System &lt;a href="http://blogs.technet.com/b/jhoward/archive/2012/03/13/everything-you-wanted-to-know-about-sr-iov-in-hyper-v-part-2.aspx" target="_blank"&gt;hardware support&lt;/a&gt; in the form of an IOMMU device&lt;/li&gt;
&lt;li&gt;A PCI Express networking device which has SR-IOV capabilities&lt;/li&gt;
&lt;li&gt;A &lt;a href="http://blogs.technet.com/b/jhoward/archive/2012/03/14/everything-you-wanted-to-know-about-sr-iov-in-hyper-v-part-3.aspx" target="_blank"&gt;driver model&lt;/a&gt; to support both PF and VFs.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This part of the series adds one more major component to that list, and one minor one. The minor one is that the system must support SLAT (Second Level Address Translation). In the server ecosystem, you would be hard pushed to find a system which has an IOMMU chipset which didn&amp;rsquo;t have a SLAT capable processor, so to almost all intents and purposes this is a non-issue.&lt;/p&gt;
&lt;p&gt;The major component missing so far is system firmware, or BIOS. While we have a multi-page document shared with the hardware ecosystem firmware developers describing the necessary changes (and other minor dependencies), the details of that document are beyond what is necessary to understand SR-IOV from an end-user perspective. What you do need to understand though is that without those changes, Hyper-V cannot enable SR-IOV, even if we have chipset support in the form of an IOMMU device actually present.&lt;/p&gt;
&lt;p&gt;There are a couple of things from the necessary firmware changes which permeate into the end user usage of Hyper-V which I will cover in more depth in a &amp;ldquo;debugging why SR-IOV isn&amp;rsquo;t working&amp;rdquo; part of this series. For now I&amp;rsquo;ll just say that one is PCI Express Native Control being transferred to the operating system, and the other is support for a chipset issue workaround.&lt;/p&gt;
&lt;p&gt;We have been working with system vendors for a long time to make sure that systems are available for you to try out SR-IOV on in Windows Server &amp;ldquo;8&amp;rdquo;. We are on the cusp of the next generation of release cycles from system vendors over coming months, and there will be much wider support in those latest generation platforms. However, for now, the numbers of systems which can be used are relatively limited. Certainly do not expect SR-IOV to work on desktop platforms (or laptops) due to the firmware requirements. This is very firmly (pun intended) a server based feature. For up to date details, you should contact your system manufacturer for information for BIOS versions and platform support on existing hardware. There are supported platforms available today from Dell, Fujitsu and HP, and other OEMs have systems in &amp;ldquo;best effort&amp;rdquo; support. Some of this information is listed in the &lt;a href="http://msdn.microsoft.com/en-us/library/hh831668.aspx" target="_blank"&gt;release notes&lt;/a&gt; for Windows Server &amp;ldquo;8&amp;rdquo; beta.&lt;/p&gt;
&lt;p&gt;One thing I would point out though is that some BIOSs we have seen have more than one place where SR-IOV must be enabled. So please do take the time to make sure you follow your system vendors instructions accurately.&lt;/p&gt;
&lt;p&gt;An interesting &lt;a href="http://download.microsoft.com/download/5/e/6/5e66b27b-988b-4f50-af3a-c2ff1e62180f/ent-t590_wh08.pptx" target="_blank"&gt;presentation&lt;/a&gt; 4 years ago at WinHEC 2008 was made by my colleague, Jake Oshins. It has some further references if you are interested in further reading about some of what has been covered so far in this series of posts. Some information has changed, but most still applies.&lt;/p&gt;
&lt;p&gt;So now that we have enumerated all the hardware and software components needed for SR-IOV support which are (largely) outside the control of Microsoft, the&lt;a title=" next part " href="http://blogs.technet.com/b/jhoward/archive/2012/03/16/everything-you-wanted-to-know-about-sr-iov-in-hyper-v-part-5.aspx"&gt; next part&lt;/a&gt; of this series is where we&amp;rsquo;ll start to see SR-IOV in action.&lt;/p&gt;
&lt;p&gt;Cheers, &lt;br /&gt;John.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3486894" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Beta+Products/">Beta Products</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Hyper_2D00_V/">Hyper-V</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Windows+_2600_quot_3B00_8_2600_quot_3B00_/">Windows &amp;quot;8&amp;quot;</category></item><item><title>Everything you wanted to know about SR-IOV in Hyper-V Part 3</title><link>http://blogs.technet.com/b/jhoward/archive/2012/03/14/everything-you-wanted-to-know-about-sr-iov-in-hyper-v-part-3.aspx</link><pubDate>Wed, 14 Mar 2012 15:42:36 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3486657</guid><dc:creator>John Howard -MSFT</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/jhoward/rsscomments.aspx?WeblogPostID=3486657</wfw:commentRss><comments>http://blogs.technet.com/b/jhoward/archive/2012/03/14/everything-you-wanted-to-know-about-sr-iov-in-hyper-v-part-3.aspx#comments</comments><description>&lt;p&gt;So far in this series, we’ve looked at the &lt;a href="http://blogs.technet.com/b/jhoward/archive/2012/03/12/everything-you-wanted-to-know-about-sr-iov-in-hyper-v-part-1.aspx" target="_blank"&gt;“why”&lt;/a&gt; question, and the &lt;a href="http://blogs.technet.com/b/jhoward/archive/2012/03/13/everything-you-wanted-to-know-about-sr-iov-in-hyper-v-part-2.aspx" target="_blank"&gt;hardware&lt;/a&gt; aspects of SR-IOV, and identified that to use SR-IOV in Hyper-V it is necessary to have system hardware support in the form of an IOMMU device, and a PCI Express device which has SR-IOV capabilities. Now it’s time to start taking a look at the software aspects. In this part, I’ll look at device drivers.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;SR-IOV Device Drivers&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I’ve mentioned that a driver model is essential for a total SR-IOV solution. Yet the SR-IOV specifications don’t mention anything about driver models. Hence it has been up to Microsoft to specify the necessary interfaces necessary to support VFs and PFs running together in a virtualised environment. You may be asking why we need to update the driver model for SR-IOV when we already have a well-established driver model for networking, in the form of &lt;a href="http://msdn.microsoft.com/en-us/library/ff564881(v=vs.85).aspx?" target="_blank"&gt;NDIS&lt;/a&gt;. If you think about a “traditional” networking device driver, the driver is only responsible for controlling a single device (in the parent partition, or the only instance of Windows when outside of virtualization). That device, of course, being what in the SR-IOV world is referred to as the PF. &lt;/p&gt;  &lt;p&gt;Prior to Windows “8”, we’ve only had emulated or software based devices in Hyper-V virtual machines, and device vendors haven’t needed to concern themselves too much about what is running inside virtual machines. Hyper-V has dealt with the indirect I/O model itself and provided drivers for those virtual devices. However, an SR-IOV device has VFs as well as PFs.&amp;#160; With SR-IOV, a part of vendor’s hardware is exposed inside the virtual machine. As our networking code doesn’t know how to manipulate that piece of hardware directly, we need to load a vendor supplied driver in the VM. &lt;/p&gt;  &lt;p&gt;However, the VF is not a fully-fledged device or autonomous. It cannot, for hopefully obvious security reasons, make any decisions about policy and control. It can’t instantiate itself, something else has to do that. It can’t cause another VF to be instantiated. It is transient in the overall lifetime of a given virtual machine guest operating system instance. It can only read and write parts of device configuration that the PF lets it manipulate, and it can only see the parts of networking hardware in memory space that are allocated to that VF. &lt;/p&gt;  &lt;p&gt;While VFs are transient, the PF is always available (assuming the PCI Express device is enabled, that is). VFs cannot exist without a PF being present. As the PF runs in a trusted domain (the parent partition), the PF can be the arbiter for all policy decisions, and the control point for VF instantiation and tear-down including hardware resource allocation, working in conjunction with the rest of the Hyper-V virtualization stack.&lt;/p&gt;  &lt;p&gt;There are also situations where the VF driver needs to communicate safely with the PF driver. These are not for the I/O path, but for policy and control logic. Microsoft considers a hardware backchannel less secure than letting Hyper-V modulate that channel of communication. By exposing interfaces in Windows for this functionality, we can validate driver behaviour by providing fuzz and penetration testing as part of driver certification, thereby encouraging vendors to take a long hard look at the security model when exposing hardware directly to a virtual machine. This is a critical tenet in our &lt;a href="http://msdn.microsoft.com/en-us/library/ms995349.aspx" target="_blank"&gt;Trustworthy Computing SDL&lt;/a&gt; that all Windows components go through. &lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;So what interfaces have we identified at a very high level?&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;To allow a PF driver to tell Windows about what SR-IOV capabilities it has&lt;/li&gt;    &lt;li&gt;To allow a PF driver to instantiate and tear-down VFs including provisioning and de-provisioning of hardware queues and filters as required&lt;/li&gt;    &lt;li&gt;To allow a VF driver to send policy and control logic to a PF (and back)&lt;/li&gt;  &lt;/ul&gt;  &lt;p&gt;These are the driver interfaces which are documented in the SR-IOV NDIS functions on &lt;a href="http://msdn.microsoft.com/en-us/library/windows/hardware/hh440242(v=vs.85).aspx" target="_blank"&gt;MSDN&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;One point I want to touch on about the driver model is that we have left it up to device driver writers to decide on how they want to design their drivers. Either a split driver model where there are completely separate drivers for the PF and the VF. Or a combined driver model where there is a single driver for both the PF and the VF. Or indeed to use a virtual bus driver (VBD) if that is what they are familiar with. In other words, although there are new concepts, the step to support SR-IOV is not a huge one from a driver writer’s perspective as it builds on existing models. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;When is PCI Bus not a PCI Bus?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;A strange question perhaps. A traditional PCI Express device is typically enumerated on the PCI bus under a PCI Express Root Port. Here’s a screenshot from device manager using Windows Server “8” Beta in the parent partition, on a machine which has two dual-port SR-IOV capable networking devices. You can see the PF devices under a PCI Express Root Port.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/4578.IOV_2D00_Part3_2D00_Image1_2D00_Marked_5F00_317EEB92.jpg"&gt;&lt;img title="IOV-Part3-Image1-Marked" style="display: inline; background-image: none;" border="0" alt="IOV-Part3-Image1-Marked" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/6237.IOV_2D00_Part3_2D00_Image1_2D00_Marked_5F00_thumb_5F00_0A44A25D.jpg" width="432" height="209" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;And the same with a VBD driver in place from a different machine with a single dual-port SR-IOV capable networking device.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/7612.IOV_2D00_Part3_2D00_Image2_2D00_Marked_5F00_1501F9B2.jpg"&gt;&lt;img title="IOV-Part3-Image2-Marked" style="display: inline; background-image: none;" border="0" alt="IOV-Part3-Image2-Marked" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/6138.IOV_2D00_Part3_2D00_Image2_2D00_Marked_5F00_thumb_5F00_42831975.jpg" width="500" height="242" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If we were to look at a virtual machine with SR-IOV devices assigned, you would see something subtly different in the device tree. This particular virtual machine has two software network adapters, each backed by a virtual function. The virtual functions are exposed on a virtual PCI Bus under VMBus as you can see in the following screen shot. Not an important point from an IT-Pro perspective, but in case you wanted to see the device hierarchy.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/2474.IOV_2D00_Part3_2D00_Image3_2D00_Marked2_5F00_44FEDC85.jpg"&gt;&lt;img title="IOV-Part3-Image3-Marked2" style="display: inline; background-image: none;" border="0" alt="IOV-Part3-Image3-Marked2" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/8156.IOV_2D00_Part3_2D00_Image3_2D00_Marked2_5F00_thumb_5F00_24779CD3.jpg" width="503" height="541" /&gt;&lt;/a&gt;&lt;/p&gt;&amp;#160;&amp;#160;&amp;#160; &lt;p&gt;And again, with a VBD driver in place (with two VFs assigned to this particular VM):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/3326.IOV_2D00_Part3_2D00_Image4_2D00_Marked_5F00_0893D689.jpg"&gt;&lt;img title="IOV-Part3-Image4-Marked" style="display: inline; background-image: none;" border="0" alt="IOV-Part3-Image4-Marked" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/6138.IOV_2D00_Part3_2D00_Image4_2D00_Marked_5F00_thumb_5F00_336C3A9B.jpg" width="497" height="390" /&gt;&lt;/a&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;This part of the blog post series started taking a look at the software side of SR-IOV, particularly from the viewpoint of device vendor driver writers. In summary, in addition to answering the “why” question, so far we’ve identified three dependencies necessary to support SR-IOV in Hyper-V in Windows Server “8” beta and hopefully explained why all of these are essential:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;System hardware support in the form of an IOMMU device&lt;/li&gt;    &lt;li&gt;A PCI Express networking device which has SR-IOV capabilities&lt;/li&gt;    &lt;li&gt;A driver model to support both PF and VFs.&lt;/li&gt;  &lt;/ul&gt;  &lt;p&gt;In the &lt;a href="http://blogs.technet.com/b/jhoward/archive/2012/03/15/everything-you-wanted-to-know-about-sr-iov-in-hyper-v-part-4.aspx" target="_blank"&gt;next part&lt;/a&gt;, I look at the next dependency to add to the list.&lt;/p&gt;  &lt;p&gt;Cheers,    &lt;br /&gt;John.     &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3486657" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Beta+Products/">Beta Products</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Hyper_2D00_V/">Hyper-V</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Windows+_2200_8_2200_/">Windows "8"</category></item><item><title>Everything you wanted to know about SR-IOV in Hyper-V Part 2</title><link>http://blogs.technet.com/b/jhoward/archive/2012/03/13/everything-you-wanted-to-know-about-sr-iov-in-hyper-v-part-2.aspx</link><pubDate>Tue, 13 Mar 2012 16:19:01 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3486437</guid><dc:creator>John Howard -MSFT</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/jhoward/rsscomments.aspx?WeblogPostID=3486437</wfw:commentRss><comments>http://blogs.technet.com/b/jhoward/archive/2012/03/13/everything-you-wanted-to-know-about-sr-iov-in-hyper-v-part-2.aspx#comments</comments><description>&lt;p&gt;In &lt;a href="http://blogs.technet.com/b/jhoward/archive/2012/03/12/everything-you-wanted-to-know-about-sr-iov-in-hyper-v-part-1.aspx" target="_blank"&gt;part 1&lt;/a&gt;, I discussed why Microsoft has been investing in SR-IOV for device I/O from virtual machines. The key points were to reduce latency, increase throughput, lower compute overhead, and for future scalability. Part two takes a look at SR-IOV from a hardware perspective.&lt;/p&gt;  &lt;p&gt;For those who didn’t take up my offer of the light bed time reading of the SR-IOV specs (or don’t have access), let me summarize what SR-IOV is. And to be clear, when I say “SR-IOV”, take it to include closely associated specifications or additions to PCI Express specifications such as &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;ATS (Address Translation Services) – A PCI Express Protocol that allows a device to fetch translations from an IOMMU (Input/Output Memory Management Unit).&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;ARI (Alternate Routing Interpretation) – A PCI Express switch change and device change which allows a device to occupy more than eight RIDs on a single bus      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;ACS (Access Control Services) – A PCI Express switch feature that forces peer-to-peer traffic upstream so that it can be translated by an IOMMU.      &lt;br /&gt;&lt;/li&gt;  &lt;/ul&gt;  &lt;p&gt;First I’m going to say what SR-IOV isn’t. Most importantly it doesn’t refer to anything about I/O classes, and as such doesn’t have a single mention of networking, storage or other I/O classes. It doesn’t describe anything about how software should be designed to use SR-IOV capable hardware. It’s just about hardware. It doesn’t therefore either describe a driver model which is essential for a complete solution, or hardware specific nuances (one of which I mention at the end of this post) relevant to any I/O class. &lt;/p&gt;  &lt;p&gt;The SR-IOV specs do however describe how a hardware device can expose multiple “light-weight” hardware surfaces for use by virtual machines. These are called Virtual Functions, or VFs for short. VFs are associated with a Physical Function (PF). The PF is what the parent partition uses in Hyper-V and is equivalent to the regular BDF (Bus/Device/Function) addressed PCI device you may have heard of before. The PF is responsible for arbitration relating to policy decisions (such as link speed or MAC addresses in use by VMs in the case of networking) and for I/O from the parent partition itself. Although a VF could be used by the parent partition, in Windows Server “8”, VFs are only used by virtual machines. A single PCI Express device can expose multiple PFs (such as a multi-port networking device), each (generally) independent, with their own set of VF resources. There are subtleties on multi-function devices such as ones which support, for example, iSCSI, Ethernet and FCoE, but this is beyond the depth of this series of posts and the approach differs between hardware vendors.&lt;/p&gt;  &lt;p&gt;It is important to note that VFs are hardware resources. Because these are hardware resources, there are constraints on the number of VFs which are available on any particular device. The actual number will differ across vendors and devices. You can expect that as hardware moves forward through newer revisions, the trend will be to offer more VFs per PF. Typically we are seeing devices offering 16, 32 or 64 VFs per PF in 1st generation 10 GigE SR-IOV enabled networking hardware. &lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;VFs alone aren’t sufficient to be able to securely allow a VM direct access to hardware. Traditional PCI Express devices generally “talk” in system physical address space (SPA) terms. As you may be aware, we don’t run guest operating systems in SPA, we run them in guest physical address space, or GPA. So there has to be something which translates (and ideally caches) addresses for DMA transfers. This is DMA remapping. In addition, for security reasons, we require hardware assisted interrupt remapping.&amp;#160; For those who are want to learn more about the hardware side of this, see &lt;a href="http://software.intel.com/en-us/blogs/2009/06/25/understanding-vt-d-intel-virtualization-technology-for-directed-io/" target="_blank"&gt;this page&lt;/a&gt; about VT-d for Intel, or this page for &lt;a href="http://developer.amd.com/documentation/articles/pages/892006101.aspx" target="_blank"&gt;AMD-V&lt;/a&gt; for AMD. There are plenty of specs to read for the inquisitive reader!     &lt;br /&gt;&amp;#160; &lt;br /&gt;From this point on in this series, I’m going to generically use the term IOMMU to refer to hardware capabilities which provide interrupt and DMA remapping.&lt;/p&gt;  &lt;p&gt;To be clear, as I haven’t said it explicitly otherwise, an SR-IOV device with a suitable driver can be used as a regular I/O device outside of virtualisation. It probably wouldn’t take advantage of the additional hardware capabilities without virtualisation present, but it still can be used as a regular I/O device. Further, the device does not require the presence of “IOMMU” hardware to be used in this manner.&lt;/p&gt;  &lt;p&gt;Although I’ve referred to networking a few times so far, I’ve also said SR-IOV from a spec standpoint doesn’t mention anything about an I/O class. When we (the Hyper-V team) looked at where the biggest gains were in using SR-IOV, it was clear to us that the overhead of storage I/O was significantly less than that of networking I/O. Hence for Windows Server “8” we have exclusively worked on SR-IOV for networking as the only supported device class.&lt;/p&gt;  &lt;p&gt;Although it may not be immediately obvious, for a NIC vendor to create an SR-IOV capable PCI Express device, it’s not sufficient to follow the SR-IOV specifications alone. One reason is that the NIC has to do networking to and from multiple sources (PF and VFs), as well as on the wire. To enable Ethernet frames to be routed between two VFs, for example, most parts of an Ethernet switch have to be embedded onto the physical NIC. None of this is present in the SR-IOV specifications.&lt;/p&gt;  &lt;p&gt;So now we’ve covered SR-IOV from the “why” perspective in part 1, and the hardware perspective in this part. &lt;a href="http://blogs.technet.com/b/jhoward/archive/2012/03/14/everything-you-wanted-to-know-about-sr-iov-in-hyper-v-part-3.aspx" target="_blank"&gt;Part 3&lt;/a&gt; will take a look at the software perspective of supporting SR-IOV in Windows Server “8”.&lt;/p&gt;  &lt;p&gt;Cheers    &lt;br /&gt;John.     &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3486437" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Beta+Products/">Beta Products</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Hyper_2D00_V/">Hyper-V</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Windows+_2200_8_2200_/">Windows "8"</category></item><item><title>Everything you wanted to know about SR-IOV in Hyper-V. Part 1</title><link>http://blogs.technet.com/b/jhoward/archive/2012/03/12/everything-you-wanted-to-know-about-sr-iov-in-hyper-v-part-1.aspx</link><pubDate>Mon, 12 Mar 2012 19:07:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3486206</guid><dc:creator>John Howard -MSFT</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/jhoward/rsscomments.aspx?WeblogPostID=3486206</wfw:commentRss><comments>http://blogs.technet.com/b/jhoward/archive/2012/03/12/everything-you-wanted-to-know-about-sr-iov-in-hyper-v-part-1.aspx#comments</comments><description>&lt;p&gt;Now that the veil of silence has been lifted with the &lt;a href="http://blogs.technet.com/b/windowsserver/archive/2012/03/01/windows-server-8-beta-available-now.aspx" target="_blank"&gt;release&lt;/a&gt; of Windows Server &amp;ldquo;8&amp;rdquo; beta , I&amp;rsquo;m able to tell you a little more about what I&amp;rsquo;ve been working on for 5 years now. An inside joke is that it&amp;rsquo;s a feature with two checkboxes in the UI of Hyper-V Manager, so about 2&amp;frac12; years per checkbox! Well clearly it&amp;rsquo;s a little more than that! A lot more, actually!!&lt;/p&gt;
&lt;p&gt;SR-IOV stands for Single-Root Input/Output (I/O) Virtualization. It&amp;rsquo;s is a standard defined by the PCI Special Interest Group. If you work for one of the member companies who have access, and are after some light bedtime reading, the specs are available on their &lt;a href="http://www.pcisig.com/specifications/iov/" target="_blank"&gt;website&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To keep it at a high level (as in all you probably need to know to use the feature), SR-IOV is a standard which describes how a PCI Express device can be constructed so that it works well with modern virtualization solutions. You may be wondering, what does &amp;ldquo;work well&amp;rdquo; mean when we already have a great device I/O sharing model present in Hyper-V in both Windows Server 2008 and Windows Server 2008 R2? Good question. Before I answer that, let&amp;rsquo;s take a diversionary look at a diagram many of you will have seen variations of dozens of times before.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/4087.Hyper_2D00_V_2D00_Simple_2D00_Architecture_5F00_1B9E9BF6.jpg"&gt;&lt;img width="507" height="382" title="Hyper-V Simple Architecture" style="display: inline; background-image: none;" alt="Hyper-V Simple Architecture" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-40-98-metablogapi/7624.Hyper_2D00_V_2D00_Simple_2D00_Architecture_5F00_thumb_5F00_21396A02.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In the above diagram (I&amp;rsquo;m using networking for my example, but the same principles apply to storage), the physical device is &amp;ldquo;owned&amp;rdquo; by the parent partition. The parent is the arbiter for all traffic originating from VMs to the outside world and vice versa. The parent is also responsible for all policy decisions regarding how the device behaves such as link speed in the case of a networking device.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Emulated versus Software Devices&lt;/strong&gt; &lt;br /&gt;Virtual machines &amp;ldquo;see&amp;rdquo; either emulated devices (such as the Intel/DEC 21140), or software based devices (commonly referred to as either &amp;ldquo;synthetic&amp;rdquo; devices, a term I personally try and avoid ever using, or &amp;ldquo;paravirtualised&amp;rdquo; devices) which are designed to work well in a virtualised environment. In both these cases, these devices aren&amp;rsquo;t &amp;ldquo;real&amp;rdquo; devices physically present in the actual hardware you can touch. In fact, in the case of a software based device, it&amp;rsquo;s a completely made up fabricated device. You can&amp;rsquo;t go to your local store and buy one as it doesn&amp;rsquo;t exist in the physical world. Software based devices take advantage of our high-speed inter partition communication mechanism, VMBus, to efficiently pass data between the parent partition and a virtual machine. Software based devices are far more efficient than emulated devices for four main reasons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;First, we don&amp;rsquo;t (generally) need the Hypervisor to be involved in the hot-path for transfer of data. An emulated device requires many Hypervisor intercepts for every single I/O making it very expensive from a performance perspective which is why all of our supported operating systems also include drivers for software devices.&lt;/li&gt;
&lt;li&gt;Second, VMBus uses shared memory buffers and memory descriptors to move data between the parent partition and the virtual machine. Shared memory access across partitions is extremely fast, especially as system architecture and hardware technologies have improved over recent years.&lt;/li&gt;
&lt;li&gt;Third, we don&amp;rsquo;t need to literally emulate a physical device in user mode in the worker process, instruction by instruction, as we do for emulated devices. Software devices do not require emulation.&lt;/li&gt;
&lt;li&gt;Fourth, VMBus interfaces (for at least networking and storage) runs in kernel mode in both the VM and the parent partition. We don&amp;rsquo;t need to transition up to user mode in the parent partition to complete I/Os, consuming additional compute cycles.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;While software based devices work extremely efficiently, they still have an unavoidable overhead to the I/O path. For example, for security reasons, we sometimes (but not always, depending on direction and I/O class) need to copy data buffers between a virtual machine and the parent partition. No software can run with zero overhead no matter how much fine tuning is applied. And believe me, we spend a lot of time tuning Hyper-V for performance. Consequently, software based devices introduce latency, increase overall path length and consume compute cycles.&lt;/p&gt;
&lt;p&gt;Ultimately, the day will come where software alone will not be able to keep up with link speeds. With RDMA, we are already getting close. One very approximate figure, and deliberately so, is looking at how much compute resource is required for Ethernet based network I/O. This depends hugely on processor class and vendor driver, but today a single core could be consumed by between 5 and 7 GB/sec of networking traffic generated by virtual machines using Windows Server 2008 R2 SP1. Furthermore, as line rates increase, 40 Gigabit Ethernet and 100 Gigabit Ethernet already &lt;a href="http://en.wikipedia.org/wiki/100_Gigabit_Ethernet" target="_blank"&gt;standardised&lt;/a&gt;, we have to look at how we can scale Hyper-V I/O effectively in a virtualised datacentre.&lt;/p&gt;
&lt;p&gt;Now I&amp;rsquo;m not saying that SR-IOV is only useful in 40 and 100 Gigabit environments. Absolutely not! But with 10 GigE hardware rapidly being &lt;a href="http://www.ofcnfoec.org/Home/About-OFC-NFOEC/OFC-NFOEC-Blog/January-2012/Lighting-the-Data-Center.aspx" target="_blank"&gt;adopted&lt;/a&gt;, the time is right to look at alternate more efficient mechanisms for device I/O which will continue to scale well in the future.&lt;/p&gt;
&lt;p&gt;To answer therefore what &amp;ldquo;works well&amp;rdquo; means as I mentioned earlier, it means a secure device model which has, relative to software based device sharing I/O, lower latency, higher throughput, lower compute overhead, and scales well in the future. These are all met by SR-IOV.&lt;/p&gt;
&lt;p&gt;So now you understand a little more about why Microsoft has been investing in SR-IOV and Hyper-V in Windows Server &amp;ldquo;8&amp;rdquo;, in the &lt;a title="next part" href="http://blogs.technet.com/b/jhoward/archive/2012/03/13/everything-you-wanted-to-know-about-sr-iov-in-hyper-v-part-2.aspx"&gt;next part&lt;/a&gt;, I&amp;rsquo;ll start getting into the detail.&lt;/p&gt;
&lt;p&gt;Cheers &lt;br /&gt;John.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3486206" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Beta+Products/">Beta Products</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Hyper_2D00_V/">Hyper-V</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Windows+_2600_quot_3B00_8_2600_quot_3B00_/">Windows &amp;quot;8&amp;quot;</category></item><item><title>Hyper-V Manager for Windows 7 Service Pack 1</title><link>http://blogs.technet.com/b/jhoward/archive/2011/04/07/hyper-v-manager-for-windows-7-service-pack-1.aspx</link><pubDate>Fri, 08 Apr 2011 03:30:17 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3419667</guid><dc:creator>John Howard -MSFT</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/jhoward/rsscomments.aspx?WeblogPostID=3419667</wfw:commentRss><comments>http://blogs.technet.com/b/jhoward/archive/2011/04/07/hyper-v-manager-for-windows-7-service-pack-1.aspx#comments</comments><description>&lt;p&gt;The Remote Server Administration Tools (RSAT) for Windows 7 SP1 are now available for download. These include the latest&amp;nbsp;version of Hyper-V Manager which supports both Dynamic Memory (DM) and RemoteFX. &lt;/p&gt;
&lt;p&gt;Here's the link: &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=7d2f6ad7-656b-4313-a005-4e344e43997d"&gt;http://www.microsoft.com/downloads/en/details.aspx?FamilyID=7d2f6ad7-656b-4313-a005-4e344e43997d&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Cheers,&lt;br /&gt;John.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3419667" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Downloads/">Downloads</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Hyper_2D00_V/">Hyper-V</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Windows+7/">Windows 7</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Windows+Server+2008+R2/">Windows Server 2008 R2</category></item><item><title>Hyper-V BPA Update</title><link>http://blogs.technet.com/b/jhoward/archive/2011/02/24/hyper-v-bpa-update.aspx</link><pubDate>Fri, 25 Feb 2011 00:52:12 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3390030</guid><dc:creator>John Howard -MSFT</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/jhoward/rsscomments.aspx?WeblogPostID=3390030</wfw:commentRss><comments>http://blogs.technet.com/b/jhoward/archive/2011/02/24/hyper-v-bpa-update.aspx#comments</comments><description>&lt;p&gt;Today we released an&amp;nbsp;update to the Hyper-V BPA (Best Practice Analyser). This fixes some issues in the previous BPA and also correctly handles the new Dynamic Memory and RemoteFX features in SP1. No new rules have been added. To install the update, you must already have the Hyper-V BPA installed (&lt;a href="http://support.microsoft.com/kb/977238"&gt;http://support.microsoft.com/kb/977238&lt;/a&gt;). Note that both the original BPA and this update apply to Windows Server 2008 R2 and Microsoft Hyper-V Server 2008 R2.&lt;/p&gt;
&lt;p&gt;While I recommend you have SP1 installed, this update also applies to R2 RTM Hyper-V. A quick summary of the fixes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Microsoft Hyper-V Server is no longer flagged as not being a Server Core installation&lt;/li&gt;
&lt;li&gt;Some ECC RAM machines were reported as non-ECC as some non-ECC firmware RAM was being included in the check&lt;/li&gt;
&lt;li&gt;We have not included the File Service role feature in the scan. The reason is that&amp;nbsp;we have observed certain products (Data Protection Manager as an example) legitimately creating shares for adminstrative purposes. The BPA no longer flags the presence of a file share as another role being installed. However, please do NOT use your Hyper-V machine as a general purpose file server!&lt;/li&gt;
&lt;li&gt;If you have SP1 and enable RemoteFX, we won't flag the machine as uncompliant due to another role being installed.&lt;/li&gt;
&lt;li&gt;In the case of Windows 7 VMs only, we have increased the permitted consolidation ratio to 12:1 and updated the BPA accordingly to check for compliance.&lt;/li&gt;
&lt;li&gt;As SP1 changes the minimum supported memory for Windows 7 VMs if DM is enabled, the BPA has been updated accordingly.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://support.microsoft.com/kb/2485986"&gt;http://support.microsoft.com/kb/2485986&lt;/a&gt; is the place for all the information on the changes and the download link.&lt;/p&gt;
&lt;p&gt;Cheers,&lt;br /&gt;John.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3390030" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Downloads/">Downloads</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Hyper_2D00_V/">Hyper-V</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Windows+Server+2008+R2/">Windows Server 2008 R2</category></item><item><title>Explaining the Hyper-V authorization model, part six</title><link>http://blogs.technet.com/b/jhoward/archive/2011/02/14/explaining-the-hyper-v-authorization-model-part-six.aspx</link><pubDate>Mon, 14 Feb 2011 23:00:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3387284</guid><dc:creator>John Howard -MSFT</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/jhoward/rsscomments.aspx?WeblogPostID=3387284</wfw:commentRss><comments>http://blogs.technet.com/b/jhoward/archive/2011/02/14/explaining-the-hyper-v-authorization-model-part-six.aspx#comments</comments><description>&lt;p&gt;Hyper-V uses a role based authorisation model for access checks. This series of articles takes a look at the model; defines the available primitives; and walks through a couple of examples. (Oops, a post I meant to publish back in October last year&lt;img src="http://blogpics.dyndns.org/2009-oct-azman-6.jpg" /&gt;, only just realized I didn't make it live!)&lt;/p&gt;
&lt;p&gt;Quick links: &lt;a href="http://blogs.technet.com/jhoward/archive/2009/08/31/explaining-the-hyper-v-authorization-model-part-one.aspx"&gt;Part1&lt;/a&gt;; &lt;a href="http://blogs.technet.com/jhoward/archive/2009/09/02/explaining-the-hyper-v-authorization-model-part-two.aspx"&gt;Part 2&lt;/a&gt;; &lt;a href="http://blogs.technet.com/jhoward/archive/2009/09/09/explaining-the-hyper-v-authorization-model-part-three.aspx"&gt;Part 3&lt;/a&gt;; &lt;a href="http://blogs.technet.com/jhoward/archive/2009/09/18/explaining-the-hyper-v-authorization-model-part-four.aspx"&gt;Part 4&lt;/a&gt;; &lt;a href="http://blogs.technet.com/jhoward/archive/2009/08/31/explaining-the-hyper-v-authorization-model-part-five.aspx"&gt;Part 5&lt;/a&gt;;&lt;/p&gt;
&lt;p&gt;This part examines a solution I use at home to make sure that critical production VMs can&amp;rsquo;t be &amp;lsquo;snapshotted&amp;rsquo;. This makes use of the new operation (355) in the R2 release. The approach is simply to group VMs into either &amp;ldquo;live&amp;rdquo; or &amp;ldquo;test&amp;rdquo; buckets. All operations are permitted for VMs which are in the test bucket. A subset of operations is permitted for VMs which are in the live bucket.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s a screenshot of Hyper-V Manager running one of my servers: I&amp;rsquo;ve also chosen to name the VMs with a &amp;ldquo;Live:&amp;rdquo; or &amp;ldquo;Test:&amp;rdquo; prefix.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_13010/azman-6-1_2.jpg"&gt;&lt;img height="357" width="411" src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_13010/azman-6-1_thumb.jpg" alt="azman-6-1" border="0" title="azman-6-1" style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" /&gt;&lt;/a&gt;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;The first thing I need to do is manipulate the AZMan store to create a new scope called &amp;ldquo;Test&amp;rdquo;, and within that, create a role Definition &amp;ldquo;Administrator (Test VMs)&amp;rdquo; which is authorized to all operations. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_13010/azman-6-2_2.jpg"&gt;&lt;img height="368" width="403" src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_13010/azman-6-2_thumb.jpg" alt="azman-6-2" border="0" title="azman-6-2" style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" /&gt;&lt;/a&gt;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Within that scope, I create a new role assignment &amp;ldquo;Administrator (Test)&amp;rdquo;, and link it to the &amp;ldquo;Administrator (Test VMs)&amp;rdquo; role definition in the &amp;ldquo;Test&amp;rdquo; scope&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_13010/azman-6-3_2.jpg"&gt;&lt;img height="279" width="404" src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_13010/azman-6-3_thumb.jpg" alt="azman-6-3" border="0" title="azman-6-3" style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" /&gt;&lt;/a&gt;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;I then add user accounts as needed to this role assignment that should have full access to test VMs. &lt;br /&gt;&lt;br /&gt;Next, back to the default scope, and alter the &amp;ldquo;Administrator&amp;rdquo; role definition to remove the &amp;ldquo;Allow Virtual Machine Snapshot&amp;rdquo; operation (hit &amp;lsquo;Remove&amp;rsquo; at the following dialog). In effect, the default scope is going to become the scope where live VMs reside which can&amp;rsquo;t be snapshotted. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_13010/azman-6-4_2.jpg"&gt;&lt;img height="438" width="400" src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_13010/azman-6-4_thumb.jpg" alt="azman-6-4" border="0" title="azman-6-4" style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" /&gt;&lt;/a&gt;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Almost there &amp;ndash; at this stage, all VMs are in the default scope. Let&amp;rsquo;s verify that snapshots can&amp;rsquo;t be taken by trying to snapshot one of the VMs I have. I picked a &amp;ldquo;test&amp;rdquo; one as that&amp;rsquo;s one I want to be able to snapshot in the next step.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_13010/azman-6-5_2.jpg"&gt;&lt;img height="586" width="409" src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_13010/azman-6-5_thumb.jpg" alt="azman-6-5" border="0" title="azman-6-5" style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The last part of the configuration is to move each of the test VMs into the &amp;ldquo;Test&amp;rdquo; scope. I&amp;rsquo;ll use the same SetScope.vbs script from part three of this series. Again, look for the &amp;ldquo;0&amp;rdquo; on the last line of output for success.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_13010/azman-6-6_2.jpg"&gt;&lt;img height="502" width="413" src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_13010/azman-6-6_thumb.jpg" alt="azman-6-6" border="0" title="azman-6-6" style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s try that snapshot operation again on the &amp;ldquo;Test: R2 Core&amp;rdquo; VM again:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_13010/azman-6-7_2.jpg"&gt;&lt;img height="433" width="417" src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_13010/azman-6-7_thumb.jpg" alt="azman-6-7" border="0" title="azman-6-7" style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" /&gt;&lt;/a&gt;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;As you can see, that succeeds. So once all test VMs are moved to the &amp;ldquo;Test&amp;rdquo; scope, I&amp;rsquo;ve achieved the goal: Snapshots cannot be taken of live VMs, but snapshots can be taken of test VMs. &lt;br /&gt;&lt;br /&gt;Cheers, &lt;br /&gt;John.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3387284" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/jhoward/archive/tags/How+to+Articles/">How to Articles</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Information/">Information</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Hyper_2D00_V/">Hyper-V</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Windows+Server+2008+R2/">Windows Server 2008 R2</category></item><item><title>Updated Linux Integration Services are available</title><link>http://blogs.technet.com/b/jhoward/archive/2010/07/29/updated-linux-integration-services-are-available.aspx</link><pubDate>Thu, 29 Jul 2010 21:53:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3347554</guid><dc:creator>John Howard -MSFT</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/jhoward/rsscomments.aspx?WeblogPostID=3347554</wfw:commentRss><comments>http://blogs.technet.com/b/jhoward/archive/2010/07/29/updated-linux-integration-services-are-available.aspx#comments</comments><description>&lt;p&gt;A&amp;nbsp;new version (2.1) of the Linux Integration Services for Hyper-V have just been made available. This new version has some significant improvements. From the driver side, new optimized storage and networking drivers have been introduced (aka &amp;ldquo;Synthetic&amp;rdquo; drivers which utilize VMBus, a key component in the Hyper-V architecture, essential for efficient and fast device I/O without the need for emulation). Supporting VMBus allows us to boot Linux guests faster. Integration components have been added in the form of time synchronization, heartbeat monitoring and shutdown capability.&lt;/p&gt;
&lt;p&gt;And the big one that everyone I talk to has been asking for&amp;hellip;. up to 4-way SMP Linux guests. &lt;/p&gt;
&lt;p&gt;For more information and details about the supported guests, check out the blog post on my &lt;a href="http://blogs.technet.com/b/virtualization/archive/2010/07/29/linux-integration-services-v2-1-now-available.aspx"&gt;team blog site&lt;/a&gt;. You can download the drivers from &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=eee39325-898b-4522-9b4c-f4b5b9b64551"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Cheers, &lt;br /&gt;John. &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3347554" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Downloads/">Downloads</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Hyper_2D00_V/">Hyper-V</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Windows+Server+2008+R2/">Windows Server 2008 R2</category></item><item><title>Avoiding UAC prompt starting Hyper-V Manager</title><link>http://blogs.technet.com/b/jhoward/archive/2010/07/07/avoiding-uac-prompt-starting-hyper-v-manager.aspx</link><pubDate>Wed, 07 Jul 2010 23:13:01 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3342604</guid><dc:creator>John Howard -MSFT</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/jhoward/rsscomments.aspx?WeblogPostID=3342604</wfw:commentRss><comments>http://blogs.technet.com/b/jhoward/archive/2010/07/07/avoiding-uac-prompt-starting-hyper-v-manager.aspx#comments</comments><description>&lt;p&gt;An interesting question was posed to me a couple of days back about why when starting Hyper-V Manager, you get a UAC prompt, yet you don't with most other Microsoft Administrative MMCs. You should note that the workaround in here only applies to Windows 7/Windows Server 2008 R2, and is not a supported workaround.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://technet.microsoft.com/en-us/magazine/2009.07.uac.aspx?rss_fdn=TNTopNewInfo"&gt;This post&lt;/a&gt; has more information about what changed in UAC in Windows 7 &amp;amp; R2. Unfortunately, the simple fact of time and the team learning of the change too late meant that we shipped Hyper-V the same as in Vista/2008 by placing virtmgmt.msc, in \program files\Hyper-V. As that location is not, in Marks terminology, a &amp;quot;secure location&amp;quot;, or at least not one known about by MMC, you get the elevation prompt when starting Hyper-V Manager.&lt;/p&gt;  &lt;p&gt;The workaround is a simple one. &lt;/p&gt;  &lt;p&gt;First, from an elevated command prompt, copy \program files\Hyper-V\virtmgmt.msc to \windows\system32.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-40-98-metablogapi/5314.elevation1_5F00_3483799C.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" class="wlDisabledImage" title="elevation1" border="0" alt="elevation1" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-40-98-metablogapi/7455.elevation1_5F00_thumb_5F00_3F40D0F1.jpg" width="475" height="118" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Next, open the properties for the shortcut to Hyper-V Manager located under Administrative Tools. The target will be &lt;strong&gt;&lt;font color="#4f81bd"&gt;%windir%\system32\mmc.exe &amp;quot;%ProgramFiles%\Hyper-V\virtmgmt.msc&amp;quot;&lt;/font&gt;&lt;/strong&gt;. Update this to &lt;font color="#4f81bd"&gt;&lt;strong&gt;%windir%\system32\mmc.exe %windir%\system32\virtmgmt.msc&lt;/strong&gt;&lt;/font&gt;. Do not change the &amp;quot;Start in&amp;quot; location though.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;From      &lt;br /&gt;&lt;/strong&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-40-98-metablogapi/1581.elevation2_5F00_2CF80A2F.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" class="wlDisabledImage" title="elevation2" border="0" alt="elevation2" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-40-98-metablogapi/5707.elevation2_5F00_thumb_5F00_139006F5.jpg" width="457" height="276" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;To      &lt;br /&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-40-98-metablogapi/5314.elevation3_5F00_333EE0BD.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" class="wlDisabledImage" title="elevation3" border="0" alt="elevation3" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-40-98-metablogapi/3644.elevation3_5F00_thumb_5F00_19D6DD83.jpg" width="462" height="281" /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;Note that double quotes are not necessary. When you hit enter, you will get a UAC prompt to confirm the update.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-40-98-metablogapi/6303.elevation4_5F00_645E1B5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" class="wlDisabledImage" title="elevation4" border="0" alt="elevation4" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-40-98-metablogapi/7444.elevation4_5F00_thumb_5F00_040CF526.jpg" width="387" height="175" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;And that's it - starting Hyper-V Manager should no longer prompt you for elevation.    &lt;br /&gt;Cheers,     &lt;br /&gt;John.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3342604" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/jhoward/archive/tags/How+to+Articles/">How to Articles</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Hyper_2D00_V/">Hyper-V</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Windows+7/">Windows 7</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Windows+Server+2008+R2/">Windows Server 2008 R2</category></item><item><title>Getting event log contents by email on an event log trigger</title><link>http://blogs.technet.com/b/jhoward/archive/2010/06/16/getting-event-log-contents-by-email-on-an-event-log-trigger.aspx</link><pubDate>Thu, 17 Jun 2010 00:22:20 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3338712</guid><dc:creator>John Howard -MSFT</dc:creator><slash:comments>22</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/jhoward/rsscomments.aspx?WeblogPostID=3338712</wfw:commentRss><comments>http://blogs.technet.com/b/jhoward/archive/2010/06/16/getting-event-log-contents-by-email-on-an-event-log-trigger.aspx#comments</comments><description>&lt;p&gt;This one was actually pretty simple to work out, but it did have me flummoxed to start with. Here’s the scenario, I wanted to get an email when an event log entry was triggered. But, I also wanted the contents of the event log entry. I’ve been meaning to document this for ages, but never seem to find the time!   &lt;br /&gt;    &lt;br /&gt;So here’s an example of the in-box functionality vs. a simple bit of bolt-on customization. In this example, I’ll use Event 20274 for RemoteAccess on a Windows Server 2008 R2 box running TMG 2010. This particular event is logged when an inbound VPN connection is established, and the body of the message says who connected, on what port, and what IP address they have been allocated.     &lt;br /&gt;    &lt;br /&gt;First, inbox functionality. Establish the VPN, and find the event in the event log.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-40-98-metablogapi/1222.RAS1.jpg" target="_blank"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="RAS1" border="0" alt="RAS1" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-40-98-metablogapi/5100.RAS1_5F00_thumb.jpg" width="429" height="261" /&gt;&lt;/a&gt;     &lt;br /&gt;    &lt;br /&gt;Down in the bottom right, choose “Attach Task To This Event….”, and walk through the wizard. On the first screen, give it an appropriate name such as “A user connected through VPN”. On the action page, select send an email. On the Send an email page, fill in the appropriate information for From/To/Subject/Text and SMTP Server. What you’ll notice is that there’s nowhere to specify what goes in the body. But you can include a static attachment, but that doesn’t serve our needs&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-40-98-metablogapi/3750.RAS2.jpg" target="_blank"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="RAS2" border="0" alt="RAS2" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-40-98-metablogapi/0638.RAS2_5F00_thumb.jpg" width="433" height="299" /&gt;&lt;/a&gt;     &lt;br /&gt;Finish the wizard, and connect again through VPN to see what email comes through. Not particularly useful. Not yet, anyway.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-40-98-metablogapi/0245.RAS3.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="RAS3" border="0" alt="RAS3" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-40-98-metablogapi/7266.RAS3_5F00_thumb.jpg" width="432" height="332" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Now if you go into task scheduler, and drill down through Task Scheduler Library then to Event Viewer Tasks, you’ll see a new item. If you go into the properties of the task, you’ll see there’s no way to include the text of the event log in the message.   &lt;br /&gt;    &lt;br /&gt;So step back a second, and ask “what’s the easiest way to get the last instance of event 20274 firing in the System event log?”. The answer (or an answer) is wevtutil. Here’s a command that will do that (note all on one line):    &lt;br /&gt;    &lt;br /&gt;&lt;font size="1" face="Courier New"&gt;wevtutil qe System &amp;quot;/q:*[System [(EventID=20274)]]&amp;quot; /f:text /rd:true /c:1     &lt;br /&gt;&lt;/font&gt;    &lt;br /&gt;Running that in a command prompt will yield the following:    &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-40-98-metablogapi/5826.ras4.jpg" target="_blank"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="ras4" border="0" alt="ras4" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-40-98-metablogapi/0638.ras4_5F00_thumb.jpg" width="433" height="154" /&gt;&lt;/a&gt;     &lt;br /&gt;Perfect, so that’s what I want emailed to me. So let’s create a quick batch file which will get the above information and put it in a file. I just called it query.cmd and saved it on my desktop for convenience (again, the wevtutil command is all on one line).&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;del %temp%\query.txt     &lt;br /&gt;wevtutil qe System &amp;quot;/q:*[System [(EventID=20274)]]&amp;quot; /f:text /rd:true /c:1 &amp;gt; %temp%\query.txt      &lt;br /&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;With that done, let’s revisit the properties of the task and look at the Actions tab. Let’s add an item to run this batch file, and put it top of the list.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-40-98-metablogapi/0245.ras5.jpg" target="_blank"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="ras5" border="0" alt="ras5" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-40-98-metablogapi/1738.ras5_5F00_thumb.jpg" width="425" height="322" /&gt;&lt;/a&gt;     &lt;br /&gt;Now we need to look at the properties of the “Send an e-mail” option. Remember there was an “Attachment” setting. Well conveniently, we have a file which contains the information we need, %temp%\query.txt now. Simply put “C:\Users\tmgadmin\AppData\Local\Temp\query.txt” in that box. (Obviously replace the username/location as appropriate). I’m also going to remove the body of the message.    &lt;br /&gt;    &lt;br /&gt;So what does the email look like now if I establish a VPN?    &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-40-98-metablogapi/3301.ras6.jpg" target="_blank"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="ras6" border="0" alt="ras6" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-40-98-metablogapi/4454.ras6_5F00_thumb.jpg" width="402" height="436" /&gt;&lt;/a&gt;     &lt;br /&gt;Exactly what I wanted! Hope that helps someone.     &lt;br /&gt;    &lt;br /&gt;(And before you ask, the only link this post has to Hyper-V is that my TMG and Email servers are Hyper-V VMs). &lt;/p&gt;  &lt;p&gt;Cheers,   &lt;br /&gt;John.    &lt;br /&gt;    &lt;br /&gt;PS – yes, I realize this may not be perfect if two users connect at exactly the same time, or in your use case that multiple events fire at the same time, but I’ll leave that as an exercise for the reader to solve :)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3338712" width="1" height="1"&gt;</description></item><item><title>Announcing NVSPBind</title><link>http://blogs.technet.com/b/jhoward/archive/2010/01/25/announcing-nvspbind.aspx</link><pubDate>Mon, 25 Jan 2010 23:33:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3308294</guid><dc:creator>John Howard -MSFT</dc:creator><slash:comments>17</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/jhoward/rsscomments.aspx?WeblogPostID=3308294</wfw:commentRss><comments>http://blogs.technet.com/b/jhoward/archive/2010/01/25/announcing-nvspbind.aspx#comments</comments><description>&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;A quick post to announce the availability of a new utility written by a colleague of mine in the Hyper-V team, Keith Mange. NVSPBind (Network Virtual Service Provider Bind) overcomes a shortfall that many people hit in server core installations of Windows Server 2008, Windows Server 2008 R2 and Microsoft Hyper-V Server.&lt;/P&gt;
&lt;P&gt;In a full installation of Windows, it is possible to enable or disable protocols from a network adapter using the network connections applet in the control panel (aka ncpl.cpl) by simply checking or unchecking protocols as necessary.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/AnnouncingNVSPBind_DACC/LAN%20Properties_2.jpg" mce_href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/AnnouncingNVSPBind_DACC/LAN%20Properties_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="LAN Properties" border=0 alt="LAN Properties" src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/AnnouncingNVSPBind_DACC/LAN%20Properties_thumb.jpg" width=362 height=453 mce_src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/AnnouncingNVSPBind_DACC/LAN%20Properties_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;This applet isn't available in server core and there is no in-box utility to perform this action. Let's walk through a really simple example and say we want to disable File and Printer Sharing for Microsoft Networks on an adapter.&lt;/P&gt;
&lt;P&gt;The first step is to obtain the GUID which uniquely identifies the adapter. This can be achieved by running nvspbind with no command line parameters. Here's the truncated output from a test machine showing the NIC I'm looking for:&lt;/P&gt;
&lt;P&gt;&lt;FONT size=1 face="Courier New"&gt;{F93672D9-9085-4EEF-9669154AD4391ED7} &lt;BR&gt;"pci\ven_8086&amp;amp;dev_10c9&amp;amp;subsys_a03c8086" &lt;BR&gt;"Intel(R) Gigabit ET Dual Port Server Adapter": &lt;BR&gt;&amp;nbsp;&amp;nbsp; enabled:&amp;nbsp; ms_netbios&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (NetBIOS Interface) &lt;BR&gt;&amp;nbsp;&amp;nbsp; enabled:&amp;nbsp; ms_server&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (File and Printer Sharing for Microsoft Networks) &lt;BR&gt;&amp;nbsp;&amp;nbsp; enabled:&amp;nbsp; ms_pacer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (QoS Packet Scheduler) &lt;BR&gt;&amp;nbsp;&amp;nbsp; disabled: ms_ndiscap&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (NDIS Capture LightWeight Filter) &lt;BR&gt;&amp;nbsp;&amp;nbsp; enabled:&amp;nbsp; ms_wfplwf&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (WFP Lightweight Filter) &lt;BR&gt;&amp;nbsp;&amp;nbsp; enabled:&amp;nbsp; ms_msclient&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (Client for Microsoft Networks) &lt;BR&gt;&amp;nbsp;&amp;nbsp; enabled:&amp;nbsp; ms_tcpip6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (Internet Protocol Version 6 (TCP/IPv6)) &lt;BR&gt;&amp;nbsp;&amp;nbsp; enabled:&amp;nbsp; ms_netbt&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (WINS Client(TCP/IP) Protocol) &lt;BR&gt;&amp;nbsp;&amp;nbsp; enabled:&amp;nbsp; ms_smb&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (Microsoft NetbiosSmb) &lt;BR&gt;&amp;nbsp;&amp;nbsp; enabled:&amp;nbsp; ms_tcpip&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (Internet Protocol Version 4 (TCP/IPv4)) &lt;BR&gt;&amp;nbsp;&amp;nbsp; enabled:&amp;nbsp; ms_lltdio&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (Link-Layer Topology Discovery Mapper I/O Driver) &lt;BR&gt;&amp;nbsp;&amp;nbsp; enabled:&amp;nbsp; ms_rspndr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (Link-Layer Topology Discovery Responder) &lt;BR&gt;&amp;nbsp;&amp;nbsp; enabled:&amp;nbsp; ms_pppoe&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (Point to Point Protocol Over Ethernet) &lt;BR&gt;&amp;nbsp;&amp;nbsp; enabled:&amp;nbsp; ms_ndisuio&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (NDIS Usermode I/O Protocol) &lt;BR&gt;&amp;nbsp;&amp;nbsp; disabled: vms_pp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (Microsoft Virtual Network Switch Protocol) &lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;The GUID is right at the top of the output (starting "{F9367"). The protocol I want to unbind in this example is ms_server (the short name for File and Printer Sharing for Microsoft Networks). &lt;/P&gt;
&lt;P&gt;This is achieved using the -d parameter as follows:&lt;/P&gt;
&lt;P&gt;&lt;FONT size=1 face="Courier New"&gt;C:\&amp;gt;nvspbind -d {F93672D9-9085-4EEF-9669154AD4391ED7} ms_server &lt;BR&gt;Hyper-V Network VSP Bind Application 6.1.7672.0. &lt;BR&gt;Copyright (c) Microsoft Corporation. All rights reserved. &lt;BR&gt;acquiring write lock...success &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=1 face="Courier New"&gt;Adapters: &lt;BR&gt;{F93672D9-9085-4EEF-9669154AD4391ED7} &lt;BR&gt;"pci\ven_8086&amp;amp;dev_10c9&amp;amp;subsys_a03c8086" &lt;BR&gt;"Intel(R) Gigabit ET Dual Port Server Adapter": &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; unbinding ms_server from Intel(R) Gigabit ET Dual Port Server Adapter &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; unbinding ms_server from Intel(R) Gigabit ET Dual Port Server Adapter &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; unbinding ms_server from Intel(R) Gigabit ET Dual Port Server Adapter &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; unbinding ms_server from Intel(R) Gigabit ET Dual Port Server Adapter &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; unbinding ms_server from Intel(R) Gigabit ET Dual Port Server Adapter &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; unbinding ms_server from Intel(R) Gigabit ET Dual Port Server Adapter &lt;BR&gt;applying changes... &lt;BR&gt;cleaning up...releasing write lock...success &lt;BR&gt;finished &lt;BR&gt;C:\&amp;gt; &lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;NVSPBind also has the ability to enable bindings, bind or unbind the Hyper-V network switch protocol from a NIC and repair bindings on a NIC. More information on scenarios and usage is in the package which can be downloaded from &lt;A href="http://code.msdn.microsoft.com/NVSPBind" mce_href="http://code.msdn.microsoft.com/NVSPBind"&gt;http://code.msdn.microsoft.com/NVSPBind&lt;/A&gt;. &lt;BR&gt;&lt;BR&gt;As with all utilities which change network configurations, be extremely careful as you may disrupt or even lose network connectivity if you are managing a machine remotely. It may be handy to have Keith's other utility around just in case. &lt;A href="http://code.msdn.microsoft.com/nvspscrub" mce_href="http://code.msdn.microsoft.com/nvspscrub"&gt;http://code.msdn.microsoft.com/nvspscrub&lt;/A&gt; &lt;BR&gt;&lt;BR&gt;Cheers, &lt;BR&gt;John.&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3308294" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/jhoward/archive/tags/How+to+Articles/">How to Articles</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Downloads/">Downloads</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Windows+Server+2008/">Windows Server 2008</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Hyper_2D00_V/">Hyper-V</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Windows+Server+2008+R2/">Windows Server 2008 R2</category></item><item><title>Explaining the Hyper-V authorization model, part five</title><link>http://blogs.technet.com/b/jhoward/archive/2009/10/09/explaining-the-hyper-v-authorization-model-part-five.aspx</link><pubDate>Fri, 09 Oct 2009 21:51:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3285891</guid><dc:creator>John Howard -MSFT</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/jhoward/rsscomments.aspx?WeblogPostID=3285891</wfw:commentRss><comments>http://blogs.technet.com/b/jhoward/archive/2009/10/09/explaining-the-hyper-v-authorization-model-part-five.aspx#comments</comments><description>&lt;P mce_keep="true"&gt;Hyper-V uses a role based authorisation model for access checks. This series of articles takes a look at the model; defines the available primitives; and walks through a couple of examples. (I actually wrote most of this many months ago – only finally found the time to post it up!).&lt;IMG src="http://blogpics.dyndns.org/2009-oct-azman-5.jpg" mce_src="http://blogpics.dyndns.org/2009-oct-azman-5.jpg"&gt;&lt;/P&gt;
&lt;P&gt;Quick links: &lt;A href="http://blogs.technet.com/jhoward/archive/2009/08/31/explaining-the-hyper-v-authorization-model-part-one.aspx" mce_href="http://blogs.technet.com/jhoward/archive/2009/08/31/explaining-the-hyper-v-authorization-model-part-one.aspx"&gt;Part1&lt;/A&gt;; &lt;A href="http://blogs.technet.com/jhoward/archive/2009/09/02/explaining-the-hyper-v-authorization-model-part-two.aspx" mce_href="http://blogs.technet.com/jhoward/archive/2009/09/02/explaining-the-hyper-v-authorization-model-part-two.aspx"&gt;Part 2&lt;/A&gt;; &lt;A href="http://blogs.technet.com/jhoward/archive/2009/09/09/explaining-the-hyper-v-authorization-model-part-three.aspx" mce_href="http://blogs.technet.com/jhoward/archive/2009/09/09/explaining-the-hyper-v-authorization-model-part-three.aspx"&gt;Part 3&lt;/A&gt;; &lt;A href="http://blogs.technet.com/jhoward/archive/2009/09/18/explaining-the-hyper-v-authorization-model-part-four.aspx" mce_href="http://blogs.technet.com/jhoward/archive/2009/09/18/explaining-the-hyper-v-authorization-model-part-four.aspx"&gt;Part 4&lt;/A&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This post describes a change to the authorisation model in Hyper-V for Windows Server 2008 R2. If you recall from part one, I mentioned that there are 33 operations defined in AZMan for Windows Server 2008, and 34 operations for Windows Server 2008 R2.&lt;/P&gt;
&lt;P&gt;The new operation has ID 355, ‘Allow Virtual Machine Snapshot’.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_12E7B/azman-5-1_2.jpg" mce_href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_12E7B/azman-5-1_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=azman-5-1 border=0 alt=azman-5-1 src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_12E7B/azman-5-1_thumb.jpg" width=404 height=436 mce_src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_12E7B/azman-5-1_thumb.jpg"&gt;&lt;/A&gt;&amp;nbsp; &lt;BR&gt;&lt;BR&gt;Why (to me) is this useful? Have you ever been confronted with a screen such as the following where you want to make Hyper-V Manager the foreground application, but accidentally hit the ‘Snapshot’ action in the MMC? I assure you, I have, several times. &lt;/P&gt;
&lt;P&gt;The problem with accidentally hitting that action is that you could now find your production virtual machine using a differencing disk, with reduced performance (at least in v1 – not the case in R2), or the possibility of physical disk space running out. Further, to merge the changes back to the parent VHD so that a differencing disk is no longer being used, you need to delete the snapshot, shut down the virtual machine, wait for the merge to complete and then restart the VM. This is particularly painful when the VM in question is your ISA server for outbound Internet connectivity, or your Exchange server your clients (wife and children in my case) are using for email? &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_12E7B/azman-5-2_2.jpg" mce_href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_12E7B/azman-5-2_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=azman-5-2 border=0 alt=azman-5-2 src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_12E7B/azman-5-2_thumb.jpg" width=412 height=608 mce_src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_12E7B/azman-5-2_thumb.jpg"&gt;&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In part six, I’ll look at a solution that I personally use at home on my Windows Server 2008 R2 production environment that builds on what’s been learnt so far to ensure that I can’t accidentally snapshot critical production VMs, but am able to snapshot test VMs to my hearts delight. &lt;BR&gt;&lt;BR&gt;Cheers, &lt;BR&gt;John.&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3285891" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/jhoward/archive/tags/How+to+Articles/">How to Articles</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Information/">Information</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Windows+Server+2008/">Windows Server 2008</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Hyper_2D00_V/">Hyper-V</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Windows+Server+2008+R2/">Windows Server 2008 R2</category></item><item><title>Explaining the Hyper-V authorization model, part four</title><link>http://blogs.technet.com/b/jhoward/archive/2009/09/18/explaining-the-hyper-v-authorization-model-part-four.aspx</link><pubDate>Fri, 18 Sep 2009 22:29:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3281995</guid><dc:creator>John Howard -MSFT</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/jhoward/rsscomments.aspx?WeblogPostID=3281995</wfw:commentRss><comments>http://blogs.technet.com/b/jhoward/archive/2009/09/18/explaining-the-hyper-v-authorization-model-part-four.aspx#comments</comments><description>&lt;P&gt;Hyper-V uses a role based authorisation model for access checks. This series of articles takes a look at the model; defines the available primitives; and walks through a couple of examples. (I actually wrote most of this series many months ago – only finally found the time to post it up!).&lt;IMG src="http://blogpics.dyndns.org/2009-sep-azman-4.jpg" mce_src="http://blogpics.dyndns.org/2009-sep-azman-4.jpg"&gt;&lt;/P&gt;
&lt;P&gt;Quick links: &lt;A href="http://blogs.technet.com/jhoward/archive/2009/08/31/explaining-the-hyper-v-authorization-model-part-one.aspx" mce_href="http://blogs.technet.com/jhoward/archive/2009/08/31/explaining-the-hyper-v-authorization-model-part-one.aspx"&gt;Part1&lt;/A&gt;; &lt;A href="http://blogs.technet.com/jhoward/archive/2009/09/02/explaining-the-hyper-v-authorization-model-part-two.aspx" mce_href="http://blogs.technet.com/jhoward/archive/2009/09/02/explaining-the-hyper-v-authorization-model-part-two.aspx"&gt;Part 2&lt;/A&gt;; &lt;A href="http://blogs.technet.com/jhoward/archive/2009/09/09/explaining-the-hyper-v-authorization-model-part-three.aspx" mce_href="http://blogs.technet.com/jhoward/archive/2009/09/09/explaining-the-hyper-v-authorization-model-part-three.aspx"&gt;Part 3&lt;/A&gt;; &lt;A href="http://blogs.technet.com/jhoward/archive/2009/09/18/explaining-the-hyper-v-authorization-model-part-four.aspx" mce_href="http://blogs.technet.com/jhoward/archive/2009/09/18/explaining-the-hyper-v-authorization-model-part-four.aspx"&gt;Part 4&lt;/A&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In parts two and three, I walked through a specific scenario. However, you’re probably asking after having read them how I knew what operations are needed, and when, and in what scope. Well, luckily I can walk across the corridor and speak to our development team. Obviously this isn’t practical for most of you reading this, but there are, of course other ways of discovering which access checks are failing. A great resource recently published on Technet is &lt;A href="http://technet.microsoft.com/en-us/library/dd282980(WS.10).aspx" mce_href="http://technet.microsoft.com/en-us/library/dd282980(WS.10).aspx"&gt;http://technet.microsoft.com/en-us/library/dd282980(WS.10).aspx&lt;/A&gt;. However, there’s a sneakier way….&amp;nbsp; Let’s take a step back through part three, and delete the role assignment and role definition “Service Access” I created to cause a deliberate access check failure.&lt;/P&gt;
&lt;P&gt;Next, I turned on auditing for object access. (I’m ignoring the fact that local policy may be over-ridden by group policy in a domain environment – this walkthrough so far is entirely on a workgroup configuration). Start the Local Security Policy snap-in under Administrative tools, and navigate to Security Settings/Local Policies/Audit Policy and change to auditing Success and Failure.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_12CE5/azman-4-1_2.jpg" target=_blank mce_href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_12CE5/azman-4-1_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=azman-4-1 border=0 alt=azman-4-1 src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_12CE5/azman-4-1_thumb.jpg" width=407 height=219 mce_src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_12CE5/azman-4-1_thumb.jpg"&gt;&lt;/A&gt;&amp;nbsp; &lt;BR&gt;&lt;BR&gt;Once done, log back on as user Joe or John and start Hyper-V Manager to validate the user gets the familiar ‘You do not have the required permission to complete this task.’ message. &lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_12CE5/azman-4-2_2.jpg" target=_blank mce_href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_12CE5/azman-4-2_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=azman-4-2 border=0 alt=azman-4-2 src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_12CE5/azman-4-2_thumb.jpg" width=414 height=178 mce_src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_12CE5/azman-4-2_thumb.jpg"&gt;&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Now log on as a user with local admin rights and start the event viewer.&amp;nbsp; Select the Security log under Windows Logs, and optionally apply a filter for just events 4665-4667 (actually just 4666 is probably enough).&lt;/P&gt;
&lt;P&gt;What you’ll see is the following Audit Failure message for event ID 4666: Joe failed an access check to operation Read Service Configuration (operation ID 100) in scope “blank” (ie the default scope).&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_12CE5/azman-4-3_2.jpg" target=_blank mce_href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_12CE5/azman-4-3_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=azman-4-3 border=0 alt=azman-4-3 src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_12CE5/azman-4-3_thumb.jpg" width=418 height=382 mce_src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_12CE5/azman-4-3_thumb.jpg"&gt;&lt;/A&gt;&amp;nbsp; &lt;BR&gt;&lt;BR&gt;So with that knowledge, it’s easy to debug issues in authorisation models that you develop. &lt;BR&gt;&lt;BR&gt;In the next part of this series, I’ll look through a really useful change in Windows Server 2008 R2 (and Microsoft Hyper-V Server 2008 R2) which leads me in to a walkthrough in part six of an authorisation policy example I use on my home servers. &lt;BR&gt;&lt;BR&gt;Cheers, &lt;BR&gt;John.&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3281995" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/jhoward/archive/tags/How+to+Articles/">How to Articles</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Information/">Information</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Windows+Server+2008/">Windows Server 2008</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Hyper_2D00_V/">Hyper-V</category></item><item><title>Explaining the Hyper-V authorization model, part three </title><link>http://blogs.technet.com/b/jhoward/archive/2009/09/09/explaining-the-hyper-v-authorization-model-part-three.aspx</link><pubDate>Thu, 10 Sep 2009 04:52:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3280244</guid><dc:creator>John Howard -MSFT</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/jhoward/rsscomments.aspx?WeblogPostID=3280244</wfw:commentRss><comments>http://blogs.technet.com/b/jhoward/archive/2009/09/09/explaining-the-hyper-v-authorization-model-part-three.aspx#comments</comments><description>&lt;P&gt;Hyper-V uses a role based authorisation model for access checks. This series of articles takes a look at the model; defines the available primitives; and walks through a couple of examples. (I actually wrote most of this series many months ago – only finally found the time to post it up!).&lt;IMG src="http://blogpics.dyndns.org/2009-sep-azman-3.jpg" mce_src="http://blogpics.dyndns.org/2009-sep-azman-3.jpg"&gt; &lt;BR&gt;&lt;BR&gt;Quick links: &lt;A href="http://blogs.technet.com/jhoward/archive/2009/08/31/explaining-the-hyper-v-authorization-model-part-one.aspx" mce_href="http://blogs.technet.com/jhoward/archive/2009/08/31/explaining-the-hyper-v-authorization-model-part-one.aspx"&gt;Part1&lt;/A&gt;; &lt;A href="http://blogs.technet.com/jhoward/archive/2009/09/02/explaining-the-hyper-v-authorization-model-part-two.aspx" mce_href="http://blogs.technet.com/jhoward/archive/2009/09/02/explaining-the-hyper-v-authorization-model-part-two.aspx"&gt;Part 2&lt;/A&gt;; &lt;A href="http://blogs.technet.com/jhoward/archive/2009/09/09/explaining-the-hyper-v-authorization-model-part-three.aspx" mce_href="http://blogs.technet.com/jhoward/archive/2009/09/09/explaining-the-hyper-v-authorization-model-part-three.aspx"&gt;Part 3&lt;/A&gt;; &lt;A href="http://blogs.technet.com/jhoward/archive/2009/09/18/explaining-the-hyper-v-authorization-model-part-four.aspx" mce_href="http://blogs.technet.com/jhoward/archive/2009/09/18/explaining-the-hyper-v-authorization-model-part-four.aspx"&gt;Part 4&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In &lt;A href="http://blogs.technet.com/jhoward/archive/2009/09/02/explaining-the-hyper-v-authorization-model-part-two.aspx" mce_href="http://blogs.technet.com/jhoward/archive/2009/09/02/explaining-the-hyper-v-authorization-model-part-two.aspx"&gt;part two&lt;/A&gt;, I started creating the scenario of separating the view two users have when opening Hyper-V Manager so that they only see their own VMs. To do that, I created two VM Scopes, one for each user, and moved the users’ VMs to the required VM scopes. I mentioned that some more steps were still required. This part of the series walks through those steps. &lt;BR&gt;&lt;BR&gt;The first part of the additional steps I’ve pretty well covered to death in my remote management of Hyper-V series. As my two users, John and Joe are not local administrators; they need to be granted explicit access to WMI namespaces (and Distributed COM Users if managing remotely). By far the easiest way to achieve this is using &lt;A href="http://code.msdn.microsoft.com/HVRemote" mce_href="http://code.msdn.microsoft.com/HVRemote"&gt;HVRemote&lt;/A&gt;. (Note, I’m assuming you’re following best practice, and using remote management as the server is running Hyper-V Server, the standalone SKU, or a Server Core installation of Windows Server 2008/2008 R2.) &lt;/P&gt;
&lt;P&gt;From an elevated command prompt when logged on as a local administrator, run &lt;BR&gt;&lt;IMG src="http://blogpics.dyndns.org/2009-sep-azman-3.jpg" mce_src="http://blogpics.dyndns.org/2009-sep-azman-3.jpg"&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face="Courier New"&gt;cscript hvremote.wsf /add:john &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;(Use /add:domain\account if the Hyper-V machine is domain joined)&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_1298B/azman-3-1_2.jpg" target=_blank mce_href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_1298B/azman-3-1_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=azman-3-1 border=0 alt=azman-3-1 src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_1298B/azman-3-1_thumb.jpg" width=405 height=365 mce_src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_1298B/azman-3-1_thumb.jpg"&gt;&lt;/A&gt;&amp;nbsp; &lt;BR&gt;&lt;BR&gt;If you look at the output carefully, note the line that says “Adding john to AZMan role Administrator” near the bottom. Apart from a typo I need to correct in a future version, what HVRemote has done is add john to the ‘Administrator’ role assignment in the default scope.&amp;nbsp; This is simply a limitation in HVRemote. At the time of writing, HVRemote cannot cope with VM Scopes.&amp;nbsp; (In fact it is hard coded to always update the role assignment called ‘Administrator’ in the default scope – on my big list and will be covered in the future).&lt;/P&gt;
&lt;P&gt;If John and Joe are now administrators in the default scope, we’ve not performed any separation as administrators in the default scope can view all VMs. There are two ways to resolve this. Either we update policy using Authorisation Manager to undo the generalisation HVRemote has made here, or use a parameter available in HVRemote when adding the account.&lt;/P&gt;
&lt;P&gt;&lt;U&gt;Method 1&lt;/U&gt; Use Authorisation Manager &lt;BR&gt;&lt;BR&gt;Select the Role Assignment ‘Administrator’ in the root scope to find the user which has been added. &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_1298B/azman-3-2_2.jpg" target=_blank mce_href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_1298B/azman-3-2_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=azman-3-2 border=0 alt=azman-3-2 src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_1298B/azman-3-2_thumb.jpg" width=407 height=234 mce_src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_1298B/azman-3-2_thumb.jpg"&gt;&lt;/A&gt;&amp;nbsp; &lt;BR&gt;&lt;BR&gt;Right click on the user and choose delete (or simply hit the delete key) &lt;/P&gt;
&lt;P&gt;&lt;U&gt;Method 2&lt;/U&gt; Use a parameter to hvremote &lt;BR&gt;&lt;BR&gt;*Caveat this may not work in future releases – it does as of version 0.7 though. &lt;BR&gt;&lt;BR&gt;From an elevated command prompt when logged on as a local administrator, run &lt;BR&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face="Courier New"&gt;cscript hvremote.wsf /add:john /noazman&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;(Use /add:domain\account if the Hyper-V machine is domain joined)&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;BR&gt;&lt;A href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_1298B/azman-3-3_2.jpg" target=_blank mce_href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_1298B/azman-3-3_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=azman-3-3 border=0 alt=azman-3-3 src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_1298B/azman-3-3_thumb.jpg" width=394 height=358 mce_src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_1298B/azman-3-3_thumb.jpg"&gt;&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you compare this output to the previous hvremote output, notice there is no role assignment update in AZMan.&lt;/P&gt;
&lt;P&gt;The last part to get our user separation in place require a little thought to get your head around, and a little knowledge of the Hyper-V design.&lt;/P&gt;
&lt;P&gt;We have a service called VMMS (Virtual Machine Management Service).&amp;nbsp; There are two operations in our authorisation model which are required to be able to perform operations on the VMMS. VMMS always performs its access checks for these operations in the default scope.&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;The operations are&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Read Service Configuration, and&lt;/LI&gt;
&lt;LI&gt;Reconfigure Service&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;What this means is that the users I’m separating, John and Joe, must be authorized to these operations in the default scope. It is not sufficient to just have them an ‘administrator’ in the VM Scope. Based on our knowledge from the previous parts, this is easily achieved:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Create a Role Definition ‘Service Access’ containing the two operations in the default scope&lt;/LI&gt;
&lt;LI&gt;Create a Role Assignment ‘Service Access’ linked to the ‘Service Access’ role definition in the default scope&lt;/LI&gt;
&lt;LI&gt;Add John and Joe to the role assignment ‘Service Access’ in the default scope&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;BR&gt;Authorisation manager should look like the following when done:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_1298B/azman-3-4_2.jpg" target=_blank mce_href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_1298B/azman-3-4_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=azman-3-4 border=0 alt=azman-3-4 src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_1298B/azman-3-4_thumb.jpg" width=412 height=296 mce_src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_1298B/azman-3-4_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_1298B/azman-3-5_2.jpg" target=_blank mce_href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_1298B/azman-3-5_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=azman-3-5 border=0 alt=azman-3-5 src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_1298B/azman-3-5_thumb.jpg" width=406 height=368 mce_src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_1298B/azman-3-5_thumb.jpg"&gt;&lt;/A&gt;&amp;nbsp; &lt;BR&gt;&lt;BR&gt;All that remains validate the configuration is to log on as those users and start Hyper-V Manager (or use Hyper-V Manager remotely in the case of a server core or Microsoft Hyper-V Server installation).&lt;/P&gt;
&lt;P&gt;Here, I’m logged on as John&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_1298B/azman-3-6_2.jpg" mce_href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_1298B/azman-3-6_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=azman-3-6 border=0 alt=azman-3-6 src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_1298B/azman-3-6_thumb.jpg" width=404 height=287 mce_src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_1298B/azman-3-6_thumb.jpg"&gt;&lt;/A&gt;&amp;nbsp; &lt;BR&gt;&lt;BR&gt;And here, I’m logged on as Joe&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_1298B/azman-3-7_2.jpg" mce_href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_1298B/azman-3-7_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=azman-3-7 border=0 alt=azman-3-7 src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_1298B/azman-3-7_thumb.jpg" width=410 height=273 mce_src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_1298B/azman-3-7_thumb.jpg"&gt;&lt;/A&gt;&amp;nbsp; &lt;BR&gt;&lt;BR&gt;So that works as expected. With the information so far, I hope I’ve provided everything you need to enable you to build a model which makes sense for your own unique implementation. It’s a question of sitting down and working through how to map your organisational needs into authorisation model primitives.&amp;nbsp; There is no single right answer which fits everyone, so building a mapping is not something I can help you with! &lt;BR&gt;&lt;BR&gt;In the next part of this series, I’ll take a look at how you could debug issues with a custom authorisation model you develop. &lt;BR&gt;&lt;BR&gt;Cheers, &lt;BR&gt;John.&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3280244" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/jhoward/archive/tags/How+to+Articles/">How to Articles</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Information/">Information</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Windows+Server+2008/">Windows Server 2008</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Hyper_2D00_V/">Hyper-V</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Windows+Server+2008+R2/">Windows Server 2008 R2</category></item><item><title>Explaining the Hyper-V authorization model, part two</title><link>http://blogs.technet.com/b/jhoward/archive/2009/09/02/explaining-the-hyper-v-authorization-model-part-two.aspx</link><pubDate>Wed, 02 Sep 2009 21:22:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3278620</guid><dc:creator>John Howard -MSFT</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/jhoward/rsscomments.aspx?WeblogPostID=3278620</wfw:commentRss><comments>http://blogs.technet.com/b/jhoward/archive/2009/09/02/explaining-the-hyper-v-authorization-model-part-two.aspx#comments</comments><description>&lt;P&gt;Hyper-V uses a role based authorisation model for access checks. This series of articles takes a look at the model; defines the available primitives; and walks through a couple of examples. (I actually wrote most of this series many months ago – only finally found the time to post it up!).&lt;IMG src="http://blogpics.dyndns.org/2009-sep-azman-2.jpg" mce_src="http://blogpics.dyndns.org/2009-sep-azman-2.jpg"&gt;&lt;/P&gt;
&lt;P&gt;Quick links: &lt;A href="http://blogs.technet.com/jhoward/archive/2009/08/31/explaining-the-hyper-v-authorization-model-part-one.aspx" mce_href="http://blogs.technet.com/jhoward/archive/2009/08/31/explaining-the-hyper-v-authorization-model-part-one.aspx"&gt;Part1&lt;/A&gt;; &lt;A href="http://blogs.technet.com/jhoward/archive/2009/09/02/explaining-the-hyper-v-authorization-model-part-two.aspx" mce_href="http://blogs.technet.com/jhoward/archive/2009/09/02/explaining-the-hyper-v-authorization-model-part-two.aspx"&gt;Part 2&lt;/A&gt;; &lt;A href="http://blogs.technet.com/jhoward/archive/2009/09/09/explaining-the-hyper-v-authorization-model-part-three.aspx" mce_href="http://blogs.technet.com/jhoward/archive/2009/09/09/explaining-the-hyper-v-authorization-model-part-three.aspx"&gt;Part 3&lt;/A&gt;; &lt;A href="http://blogs.technet.com/jhoward/archive/2009/09/18/explaining-the-hyper-v-authorization-model-part-four.aspx" mce_href="http://blogs.technet.com/jhoward/archive/2009/09/18/explaining-the-hyper-v-authorization-model-part-four.aspx"&gt;Part 4&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/jhoward/archive/2009/08/31/explaining-the-hyper-v-authorization-model-part-one.aspx" mce_href="http://blogs.technet.com/jhoward/archive/2009/08/31/explaining-the-hyper-v-authorization-model-part-one.aspx"&gt;Part one&lt;/A&gt; provided information on the primitives available in the AZMan model and looked at the out-of-box Hyper-V configuration. Building on that information, part two takes a deeper look at scopes. &lt;/P&gt;
&lt;P&gt;In part one, I talked about the top level scope (aka root or default scope) as the place where global policy is defined. I mentioned that you can also define more constrained scopes and place virtual machines in those scopes.&lt;/P&gt;
&lt;P&gt;The first question to answer is “How can you create a ‘Virtual Machine’ scope?”.&amp;nbsp; Scopes exist at an application level. You can either right-click on an application to create a new scope, as shown in the screenshot below, or use a script if you prefer automation (as I do). (If you’re interested in the specifics of API calls, take a look at &lt;A href="http://msdn.microsoft.com/en-us/library/aa375769(VS.85).aspx)" mce_href="http://msdn.microsoft.com/en-us/library/aa375769(VS.85).aspx)"&gt;http://msdn.microsoft.com/en-us/library/aa375769(VS.85).aspx)&lt;/A&gt;.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-1_2.jpg" target=_blank mce_href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-1_2.jpg"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=azman-2-1 border=0 alt=azman-2-1 src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-1_thumb.jpg" width=401 height=391 mce_src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-1_thumb.jpg"&gt;&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Note that the script is the barest minimum – obviously I would recommend you make something more resilient for general use. &lt;BR&gt;Save the following code as “CreateScope.vbs”. &lt;/P&gt;&lt;PRE&gt;&lt;PRE style="BACKGROUND-COLOR: #ffffff; MARGIN: 0em; WIDTH: 100%; FONT-FAMILY: consolas,'Courier New',courier,monospace; FONT-SIZE: 12px"&gt;' Make sure the script &lt;SPAN style="COLOR: #0000ff"&gt;is&lt;/SPAN&gt; passed a scope to create
&lt;/PRE&gt;
&lt;PRE style="BACKGROUND-COLOR: #ffffff; MARGIN: 0em; WIDTH: 100%; FONT-FAMILY: consolas,'Courier New',courier,monospace; FONT-SIZE: 12px"&gt;szScope = wscript.arguments.named("&lt;SPAN style="COLOR: #8b0000"&gt;scope&lt;/SPAN&gt;")
&lt;/PRE&gt;
&lt;PRE style="BACKGROUND-COLOR: #ffffff; MARGIN: 0em; WIDTH: 100%; FONT-FAMILY: consolas,'Courier New',courier,monospace; FONT-SIZE: 12px"&gt;&lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt; szScope = "&lt;SPAN style="COLOR: #8b0000"&gt;&lt;/SPAN&gt;" &lt;SPAN style="COLOR: #0000ff"&gt;then&lt;/SPAN&gt;
&lt;/PRE&gt;
&lt;PRE style="BACKGROUND-COLOR: #ffffff; MARGIN: 0em; WIDTH: 100%; FONT-FAMILY: consolas,'Courier New',courier,monospace; FONT-SIZE: 12px"&gt;    wscript.echo "&lt;SPAN style="COLOR: #8b0000"&gt;CreateScope /scope:&amp;lt;name&amp;gt;&lt;/SPAN&gt;"
&lt;/PRE&gt;
&lt;PRE style="BACKGROUND-COLOR: #ffffff; MARGIN: 0em; WIDTH: 100%; FONT-FAMILY: consolas,'Courier New',courier,monospace; FONT-SIZE: 12px"&gt;    wscript.quit
&lt;/PRE&gt;
&lt;PRE style="BACKGROUND-COLOR: #ffffff; MARGIN: 0em; WIDTH: 100%; FONT-FAMILY: consolas,'Courier New',courier,monospace; FONT-SIZE: 12px"&gt;&lt;SPAN style="COLOR: #0000ff"&gt;end&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt;
&lt;/PRE&gt;
&lt;PRE style="BACKGROUND-COLOR: #ffffff; MARGIN: 0em; WIDTH: 100%; FONT-FAMILY: consolas,'Courier New',courier,monospace; FONT-SIZE: 12px"&gt;' Need to have an object referencing the store
&lt;/PRE&gt;
&lt;PRE style="BACKGROUND-COLOR: #ffffff; MARGIN: 0em; WIDTH: 100%; FONT-FAMILY: consolas,'Courier New',courier,monospace; FONT-SIZE: 12px"&gt;&lt;SPAN style="COLOR: #0000ff"&gt;set&lt;/SPAN&gt; oAuthStore = _
&lt;/PRE&gt;
&lt;PRE style="BACKGROUND-COLOR: #ffffff; MARGIN: 0em; WIDTH: 100%; FONT-FAMILY: consolas,'Courier New',courier,monospace; FONT-SIZE: 12px"&gt;   &lt;SPAN style="COLOR: #0000ff"&gt;CreateObject&lt;/SPAN&gt;("&lt;SPAN style="COLOR: #8b0000"&gt;AZRoles.AZAuthorizationStore&lt;/SPAN&gt;")
&lt;/PRE&gt;
&lt;PRE style="BACKGROUND-COLOR: #ffffff; MARGIN: 0em; WIDTH: 100%; FONT-FAMILY: consolas,'Courier New',courier,monospace; FONT-SIZE: 12px"&gt;' Initialise the store so that we can update it
&lt;/PRE&gt;
&lt;PRE style="BACKGROUND-COLOR: #ffffff; MARGIN: 0em; WIDTH: 100%; FONT-FAMILY: consolas,'Courier New',courier,monospace; FONT-SIZE: 12px"&gt;oAuthStore.Initialize 0, _
&lt;/PRE&gt;
&lt;PRE style="BACKGROUND-COLOR: #ffffff; MARGIN: 0em; WIDTH: 100%; FONT-FAMILY: consolas,'Courier New',courier,monospace; FONT-SIZE: 12px"&gt;   "&lt;SPAN style="COLOR: #8b0000"&gt;msxml://C:\ProgramData\Microsoft\Windows\" &amp;amp; _
&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE style="BACKGROUND-COLOR: #ffffff; MARGIN: 0em; WIDTH: 100%; FONT-FAMILY: consolas,'Courier New',courier,monospace; FONT-SIZE: 12px"&gt;   "&lt;SPAN style="COLOR: #8b0000"&gt;Hyper-V\InitialStore.xml&lt;/SPAN&gt;"
&lt;/PRE&gt;
&lt;PRE style="BACKGROUND-COLOR: #ffffff; MARGIN: 0em; WIDTH: 100%; FONT-FAMILY: consolas,'Courier New',courier,monospace; FONT-SIZE: 12px"&gt;' Open the Hyper-V services &lt;SPAN style="COLOR: #0000ff"&gt;application&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;in&lt;/SPAN&gt; the store
&lt;/PRE&gt;
&lt;PRE style="BACKGROUND-COLOR: #ffffff; MARGIN: 0em; WIDTH: 100%; FONT-FAMILY: consolas,'Courier New',courier,monospace; FONT-SIZE: 12px"&gt;&lt;SPAN style="COLOR: #0000ff"&gt;Set&lt;/SPAN&gt; oApplication = _
&lt;/PRE&gt;
&lt;PRE style="BACKGROUND-COLOR: #ffffff; MARGIN: 0em; WIDTH: 100%; FONT-FAMILY: consolas,'Courier New',courier,monospace; FONT-SIZE: 12px"&gt;    oAuthStore.OpenApplication("&lt;SPAN style="COLOR: #8b0000"&gt;Hyper-V services&lt;/SPAN&gt;")
&lt;/PRE&gt;
&lt;PRE style="BACKGROUND-COLOR: #ffffff; MARGIN: 0em; WIDTH: 100%; FONT-FAMILY: consolas,'Courier New',courier,monospace; FONT-SIZE: 12px"&gt;' Create a new scope
&lt;/PRE&gt;
&lt;PRE style="BACKGROUND-COLOR: #ffffff; MARGIN: 0em; WIDTH: 100%; FONT-FAMILY: consolas,'Courier New',courier,monospace; FONT-SIZE: 12px"&gt;&lt;SPAN style="COLOR: #0000ff"&gt;Set&lt;/SPAN&gt; oNewScope = _
&lt;/PRE&gt;
&lt;PRE style="BACKGROUND-COLOR: #ffffff; MARGIN: 0em; WIDTH: 100%; FONT-FAMILY: consolas,'Courier New',courier,monospace; FONT-SIZE: 12px"&gt;    oApplication.CreateScope2(szScope)
&lt;/PRE&gt;
&lt;PRE style="BACKGROUND-COLOR: #ffffff; MARGIN: 0em; WIDTH: 100%; FONT-FAMILY: consolas,'Courier New',courier,monospace; FONT-SIZE: 12px"&gt;' Submit it to the store
&lt;/PRE&gt;
&lt;PRE style="BACKGROUND-COLOR: #ffffff; MARGIN: 0em; WIDTH: 100%; FONT-FAMILY: consolas,'Courier New',courier,monospace; FONT-SIZE: 12px"&gt;oNewScope.Submit&lt;/PRE&gt;&lt;/PRE&gt;
&lt;P&gt;To create a scope called “My test VM scope”, from an elevated command prompt, type&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face="Courier New"&gt;cscript createscope.vbs /scope:“My test VM scope” &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;A href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-2_2.jpg" mce_href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-2_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=azman-2-2 border=0 alt=azman-2-2 src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-2_thumb.jpg" width=412 height=126 mce_src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-2_thumb.jpg"&gt;&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you already have the Authorisation Manager MMC open after walking through part one, you need to reload the authorisation store by right-clicking on InitialStore.xml in the treeview on the left and selecting Reload. If the Authorisation Manager MMC is not open, open it now and load InitialStore.xml. &lt;/P&gt;
&lt;P&gt;When you expand out the tree, you’ll see that a new scope called “My test VM scope” has been created: &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-3_2.jpg" target=_blank mce_href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-3_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=azman-2-3 border=0 alt=azman-2-3 src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-3_thumb.jpg" width=416 height=225 mce_src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-3_thumb.jpg"&gt;&lt;/A&gt;&amp;nbsp; &lt;BR&gt;&lt;BR&gt;You can also see that a “VM Scope” has the same primitives available under it as the “Default” Scope – Groups, Role Definitions, Task Definitions and Role Assignments.&amp;nbsp; You can use the MMC to create role definitions; assign operations to role definitions; create role assignments; link role assignments to role definitions; and assign accounts to role assignments at both the default scope level and at the VM Scope level. &lt;BR&gt;&lt;/P&gt;
&lt;TABLE border=1 cellSpacing=0 cellPadding=2 width=400&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=400&gt;&lt;EM&gt;Side note: &lt;BR&gt;&lt;BR&gt;Personally, to avoid confusion, I would avoid using role definitions in a VM scope unless you really need to keep a role definition so specific that is has to be tied to a particular VM scope. There is little reason to not create all the role definitions at the default scope level.&amp;nbsp; &lt;/EM&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;&lt;BR&gt;At this point, you probably have a question: “Why would I need a ‘Virtual Machine’ scope?” And a great question it is, too. To answer it, let’s consider the following simple scenario: &lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;BR&gt;You have a shared Hyper-V machine. It is used by two users called “John” and “Joe”.&amp;nbsp; Both John and Joe have a single VM of theirs on that server called “Johns VM” and “Joes VM” respectively. &lt;/P&gt;
&lt;P&gt;You want the system configured so that John cannot even see that Joe is a user or has VMs on that machine, and visa-versa. John must be able to perform all operations on his virtual machine, and Joe must be able to perform all operations on his virtual machine. Neither Joe or John should be administrators on the physical machine. &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Without virtual machine scopes, this is not possible. Let’s work through how you would configure that scenario. I’m going to start with the blank InitialStore.xml again for this. Using CreateScope.vbs, create scopes called “Johns VM Scope” and “Joes VM Scope”. Reload InitialStore.xml in Authorisation Manager. &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-4_2.jpg" target=_blank mce_href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-4_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=azman-2-4 border=0 alt=azman-2-4 src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-4_thumb.jpg" width=393 height=242 mce_src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-4_thumb.jpg"&gt;&lt;/A&gt;&amp;nbsp; &lt;BR&gt;&lt;BR&gt;Within each of these new VM scopes, I’ll now use Authorisation Manager to create a new role assignment called ‘Administrator’ (not to be confused with the default scope role assignment ‘Administrator’ – AZMan permits role assignments with the same name in different scopes), and link it to the default scope ‘Administrator’ role definition.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Right-click “Role Assignments” under the VM scope and choose New Role Assignment…&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-5_2.jpg" mce_href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-5_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=azman-2-5 border=0 alt=azman-2-5 src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-5_thumb.jpg" width=385 height=420 mce_src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-5_thumb.jpg"&gt;&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In the dialog, select the role definition ‘Administrator’ in the default scope(called ‘Where Defined: Application’ in the UI) by checking it, then hit OK. &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-6_2.jpg" mce_href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-6_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=azman-2-6 border=0 alt=azman-2-6 src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-6_thumb.jpg" width=397 height=261 mce_src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-6_thumb.jpg"&gt;&lt;/A&gt;&amp;nbsp; &lt;BR&gt;The tree view should look something like this: &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-7_2.jpg" mce_href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-7_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=azman-2-7 border=0 alt=azman-2-7 src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-7_thumb.jpg" width=208 height=268 mce_src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-7_thumb.jpg"&gt;&lt;/A&gt;&amp;nbsp; &lt;BR&gt;&lt;BR&gt;The next step is to put “John” into the Administrator role assignment in the VM Scope ‘John’s VMs” and to put “Joe” into the Administrators role assignment in the VM Scope ‘Joe’s VMs”. To do this, right-click the newly added role assignment and choose Assign Users and Groups, then From Windows and Active Directory. &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-8_2.jpg" mce_href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-8_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=azman-2-8 border=0 alt=azman-2-8 src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-8_thumb.jpg" width=403 height=137 mce_src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-8_thumb.jpg"&gt;&lt;/A&gt;&amp;nbsp; &lt;BR&gt;&lt;BR&gt;After making the necessary changes, your policy store should look like the following: &lt;BR&gt;&lt;BR&gt;&lt;A href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-9_2.jpg" mce_href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-9_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=azman-2-9 border=0 alt=azman-2-9 src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-9_thumb.jpg" width=410 height=378 mce_src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-9_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Important to remember and note is that neither John or Joe are local administrators on the machine. Let’s take a step forward and assume that John and Joe have already created a virtual machine. In the screenshot below, I’m logged on as the local administrator. Remember that built in administrators are administrators in the default scope in the default policy store, and hence can see both virtual machines. &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-10_2.jpg" mce_href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-10_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=azman-2-10 border=0 alt=azman-2-10 src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-10_thumb.jpg" width=408 height=198 mce_src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-10_thumb.jpg"&gt;&lt;/A&gt;&amp;nbsp; &lt;BR&gt;&lt;BR&gt;The magic sauce needed to make the separation is to move Joes VM into the scope ‘Joes VM Scope’ and move Johns VM into the scope ‘Johns VM Scope’. Now as much as I write my own scripts for just about everything, there are certain times where it makes no sense to reinvent the wheel. If you download &lt;A href="http://blogs.technet.com/alipka/archive/2008/07/02/off-topic-things-and-some-hyper-v-goodies-resources-backup-and-azman-scope-scripts.aspx" mce_href="http://blogs.technet.com/alipka/archive/2008/07/02/off-topic-things-and-some-hyper-v-goodies-resources-backup-and-azman-scope-scripts.aspx"&gt;BackupVMsAndScopeScripts.zip&lt;/A&gt; and expand the files, there is a script called SetScope.vbs &lt;/P&gt;
&lt;P&gt;Run the script: &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT face="Courier New"&gt;cscript setscope.vbs “Johns VM” “Johns VM Scope”&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;and &lt;FONT size=2 face="Courier New"&gt;cscript setscope.vbs “Joes VM” “Joes VM Scope” &lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;FONT size=2 face="Courier New"&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;You’ll get a big spew of output from each command. I’ll leave it an exercise for the reader to modify the script to their needs or develop their own. You want to look at the very last bit of the output which will say “0” if the update succeeded. &lt;/FONT&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-11_2.jpg" mce_href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-11_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=azman-2-11 border=0 alt=azman-2-11 src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-11_thumb.jpg" width=408 height=161 mce_src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_11CB9/azman-2-11_thumb.jpg"&gt;&lt;/A&gt;&amp;nbsp; &lt;BR&gt;&lt;BR&gt;That’s it from a VM configuration standpoint, but there are still some nuances which needs resolving before John and Joe can use Hyper-V Manager to get their custom view of only their VMs.&amp;nbsp; As it’s involves several steps, I’ll cover this in part three. &lt;BR&gt;&lt;BR&gt;Cheers, &lt;BR&gt;John.&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3278620" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/jhoward/archive/tags/How+to+Articles/">How to Articles</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Information/">Information</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Windows+Server+2008/">Windows Server 2008</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Hyper_2D00_V/">Hyper-V</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Windows+Server+2008+R2/">Windows Server 2008 R2</category></item><item><title>Explaining the Hyper-V authorization model, part one</title><link>http://blogs.technet.com/b/jhoward/archive/2009/08/31/explaining-the-hyper-v-authorization-model-part-one.aspx</link><pubDate>Tue, 01 Sep 2009 05:28:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3278384</guid><dc:creator>John Howard -MSFT</dc:creator><slash:comments>8</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/jhoward/rsscomments.aspx?WeblogPostID=3278384</wfw:commentRss><comments>http://blogs.technet.com/b/jhoward/archive/2009/08/31/explaining-the-hyper-v-authorization-model-part-one.aspx#comments</comments><description>&lt;P&gt;Hyper-V uses a role based authorisation model for access checks. This series of articles takes a look at the model; defines the available primitives; and walks through a couple of examples. (I actually wrote most of this series many months ago – only finally found the time to post it up!).&lt;IMG src="http://blogpics.dyndns.org/2009-aug-azman-1.jpg" mce_src="http://blogpics.dyndns.org/2009-aug-azman-1.jpg"&gt;&lt;/P&gt;
&lt;P&gt;Quick links: &lt;A href="http://blogs.technet.com/jhoward/archive/2009/08/31/explaining-the-hyper-v-authorization-model-part-one.aspx" mce_href="http://blogs.technet.com/jhoward/archive/2009/08/31/explaining-the-hyper-v-authorization-model-part-one.aspx"&gt;Part1&lt;/A&gt;; &lt;A href="http://blogs.technet.com/jhoward/archive/2009/09/02/explaining-the-hyper-v-authorization-model-part-two.aspx" mce_href="http://blogs.technet.com/jhoward/archive/2009/09/02/explaining-the-hyper-v-authorization-model-part-two.aspx"&gt;Part 2&lt;/A&gt;; &lt;A href="http://blogs.technet.com/jhoward/archive/2009/09/09/explaining-the-hyper-v-authorization-model-part-three.aspx" mce_href="http://blogs.technet.com/jhoward/archive/2009/09/09/explaining-the-hyper-v-authorization-model-part-three.aspx"&gt;Part 3&lt;/A&gt;; &lt;A href="http://blogs.technet.com/jhoward/archive/2009/09/18/explaining-the-hyper-v-authorization-model-part-four.aspx" mce_href="http://blogs.technet.com/jhoward/archive/2009/09/18/explaining-the-hyper-v-authorization-model-part-four.aspx"&gt;Part 4&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;As the term ‘Role Based Authorisation Model’ implies, Hyper-V has an authorisation layer which performs access checks to grant or deny an account access to operations based on roles the account is a member of. That is not to say everything in Hyper-V has an authorisation protection layer – we also use traditional NT ACL-based security mechanisms. However, this series of articles concentrates just on the authorisation model. &lt;/P&gt;
&lt;P&gt;A term I should introduce at this point is “AZMan”. AZMan is, in short, an engine and toolset for making role based access checks and defining policy. AZMan is a component built into Windows. Hyper-V uses AZMan to control role based authorisation. &lt;/P&gt;
&lt;P&gt;When you install Hyper-V, the system is configured with a policy store, the policy store being nothing more than a file on disk called ‘InitialStore.xml’. InitialStore.xml contains the most simple of authorisation policies: local administrators are authorised to perform all operations protected by a policy check.&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;There are two registry keys Hyper-V uses to define attributes about the policy store. They are both under HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Virtualization.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;StoreLocation &lt;/EM&gt;points to a file called InitialStore in a hidden directory c:\ProgramData. &lt;BR&gt;&lt;EM&gt;ServiceApplication&lt;/EM&gt; defines which application in the policy store is used.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_111C3/azman-1-1_2.jpg" target=_blank mce_href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_111C3/azman-1-1_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=azman-1-1 border=0 alt=azman-1-1 src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_111C3/azman-1-1_thumb.jpg" width=408 height=157 mce_src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_111C3/azman-1-1_thumb.jpg"&gt;&lt;/A&gt;&amp;nbsp; &lt;BR&gt;&lt;BR&gt;Before looking at the contents of InitialStore.xml, let’s define some primitives which Hyper-V uses in AZMan.&lt;/P&gt;
&lt;P&gt;(Note that AZMan is a very flexible model, and Hyper-V does not use all the primitives available in AZMan. Also these articles do not cover more advanced modeling capabilities where you can, to some extent, build nested models).&lt;/P&gt;
&lt;P&gt;&lt;U&gt;Application&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;Policy stores define the authorisation model for zero or more applications. An application is top-level container which contains all the other primitives used by an application. Examples of applications could be ‘My Financials Application’ or (not by any coincidence!) ‘Hyper-V services’.&lt;/P&gt;
&lt;P&gt;&lt;U&gt;Operations&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;Operations are specific items or actions being guarded by an access check in an application. For example, when a user tells a system to “Create a Virtual Machine”, Hyper-V makes an access check. &lt;/P&gt;
&lt;P&gt;&lt;U&gt;Role Definitions&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;As the name implies, this is the definition of a specific role, such as a Hyper-V administrator, or a Hyper-V Network Administrator, or standard user. It is defined by a name and zero or more operations which are permissible in this role definition.&amp;nbsp; So with the examples I just gave, you could choose to setup the store such that an administrator role definition contains all operations, a network administrator role definition contain the operations for altering, creating or deleting virtual networks, and standard users can only connect and interact with virtual machines.&lt;/P&gt;
&lt;P&gt;&lt;U&gt;Role Assignments&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;Role assignments are where users and groups are placed or “assigned” in the model. A role assignment can be stand alone or linked to one or more role definitions. &lt;BR&gt;A standalone role assignment doesn’t make too much sense, as without any role definition links, it is nothing more than an orphaned grouping of accounts. &lt;BR&gt;When you link a role assignment to a role definition, you are saying that the accounts in the role assignment have would pass access checks for the operations defined in the linked role definition.&amp;nbsp; If you link a role assignment to multiple role definitions, accounts in the role assignment would pass access checks for the superset of operations defined by all the linked role definitions. &lt;BR&gt;Role assignments can be created at multiple levels or “scopes”. &lt;/P&gt;
&lt;P&gt;&lt;U&gt;Scopes&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;Scopes are a more advanced feature in the authorisation model. Scopes can be thought of as the “level” where role definitions, role assignments and other AZMan primitives reside. Each AZMan policy store contains a single top level scope. A good way to think of the top level scope is the place where global policy is defined. &lt;/P&gt;
&lt;TABLE border=1 cellSpacing=0 cellPadding=2 width=421&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=419&gt;&lt;EM&gt;Side note &lt;BR&gt;&lt;BR&gt;Internally on the Hyper-V team, this tends to be referred to as the ‘default’ or ‘root’ scope. Whether that is correct or not in AZMan terminology is another question! I believe the correct term is “Application” scope. &lt;/EM&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;You can also create additional “more constrained” scopes, and place virtual machines in them. For the purposes of Hyper-V, it makes sense to think of these as VM specific scopes, or VM Scopes for short. Using VM scopes is a topic I’ll cover in more detail in later parts of this series.&lt;/P&gt;
&lt;P&gt;So with knowledge of those primitives, let’s take a look at the out-of-box policy store. To use the management tools for AZMan requires a full installation of Windows Server rather than server core. (Or you can take a copy of the file across to a separate Vista or Windows 7 installation). As the policy store is in a hidden and ACL’d directory, you need to be a local administrator to open the file.&lt;/P&gt;
&lt;P&gt;Start azman.msc&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_111C3/azman-1-2_2.jpg" target=_blank mce_href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_111C3/azman-1-2_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=azman-1-2 border=0 alt=azman-1-2 src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_111C3/azman-1-2_thumb.jpg" width=404 height=142 mce_src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_111C3/azman-1-2_thumb.jpg"&gt;&lt;/A&gt;&amp;nbsp; &lt;BR&gt;&lt;BR&gt;Right click on Authorisation Manager in the tree view on the left and select Open Authorisation Store. Navigate, or enter the path, to InitialStore.xml (again, note \ProgramData is a hidden directory – you can type it in though).&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_111C3/azman-1-3_2.jpg" mce_href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_111C3/azman-1-3_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=azman-1-3 border=0 alt=azman-1-3 src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_111C3/azman-1-3_thumb.jpg" width=403 height=230 mce_src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_111C3/azman-1-3_thumb.jpg"&gt;&lt;/A&gt;&amp;nbsp; &lt;BR&gt;&lt;BR&gt;Once open, the first thing to notice is that there is a single application defined:&amp;nbsp; ‘Hyper-V services’. &lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_111C3/azman-1-4_2.jpg" target=_blank mce_href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_111C3/azman-1-4_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=azman-1-4 border=0 alt=azman-1-4 src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_111C3/azman-1-4_thumb.jpg" width=408 height=164 mce_src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_111C3/azman-1-4_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;This matches the registry key ‘ServiceApplication’ in the screenshot higher up this article. Next, I’ve expanded out a couple of nodes so that you can see where Role Definitions and Role Assignments fit in to the hierarchy. &lt;/P&gt;
&lt;P&gt;(Note the Hyper-V authorisation model does not use Task Definitions or Authorisation Rules, and I won’t be talking about Groups in this series of articles)&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_111C3/azman-1-5_2.jpg" target=_blank mce_href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_111C3/azman-1-5_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=azman-1-5 border=0 alt=azman-1-5 src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_111C3/azman-1-5_thumb.jpg" width=412 height=193 mce_src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_111C3/azman-1-5_thumb.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;You can see that we have a single role definition ‘Administrator’ and a single role assignment ‘Administrator’ defined. First, examine the ‘Administrator’ role definition by right clicking on it, selecting properties and choosing the Definition tab.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_111C3/azman-1-6_2.jpg" mce_href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_111C3/azman-1-6_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=azman-1-6 border=0 alt=azman-1-6 src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_111C3/azman-1-6_thumb.jpg" width=393 height=429 mce_src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_111C3/azman-1-6_thumb.jpg"&gt;&lt;/A&gt;&amp;nbsp; &lt;BR&gt;This is where we can see which operations are covered by a role definition. There are 33 operations in Hyper-V in Windows Server 2008 and Microsoft Hyper-V Server, and 34 operations in Windows Server 2008 R2 and Microsoft Hyper-V Server R2. &lt;/P&gt;
&lt;P&gt;If you select a role assignment, Authorisation Manager displays a list of accounts who are members of that role assignment – the default being the builtin administrators group.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_111C3/azman-1-7_2.jpg" target=_blank mce_href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_111C3/azman-1-7_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=azman-1-7 border=0 alt=azman-1-7 src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_111C3/azman-1-7_thumb.jpg" width=404 height=189 mce_src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_111C3/azman-1-7_thumb.jpg"&gt;&lt;/A&gt;&amp;nbsp; &lt;BR&gt;As an aside – if you are walking through this and are using a domain joined machine (the above screenshot is from a workgroup machine), the default accounts listed in the “Administrator” Role Assignment will be domainname\administrators. This is actually a bug (as far as I can tell) in the AZMan console. You can verify this by opening InitialStore.xml in an editor:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_111C3/azman-1-8_2.jpg" target=_blank mce_href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_111C3/azman-1-8_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=azman-1-8 border=0 alt=azman-1-8 src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_111C3/azman-1-8_thumb.jpg" width=406 height=54 mce_src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/ExplainingtheHyperVauthorizationmodelpar_111C3/azman-1-8_thumb.jpg"&gt;&lt;/A&gt;&amp;nbsp; &lt;BR&gt;You’ll notice that the SID listed is S-1-5-32-544 which is the SID (Security Identifier) of the builtin\administrators group - &lt;A href="http://support.microsoft.com/kb/163846" mce_href="http://support.microsoft.com/kb/163846"&gt;http://support.microsoft.com/kb/163846&lt;/A&gt; has more information. &lt;BR&gt;&lt;/P&gt;
&lt;P&gt;So that explains how the default policy in Hyper-V is setup such that local administrators have access to all operations. With an understanding of the primitives, it is trivial to extrapolate how to modify the model to grant other accounts full access to Hyper-V without needing to be local administrators on the Hyper-V machine itself – you simply need to add accounts to the ‘Administrator’ role assignment in the default scope. This is exactly what &lt;A href="http://blogs.msdn.com/virtual_pc_guy/archive/2008/01/17/allowing-non-administrators-to-control-hyper-v.aspx" mce_href="http://blogs.msdn.com/virtual_pc_guy/archive/2008/01/17/allowing-non-administrators-to-control-hyper-v.aspx"&gt;Ben&lt;/A&gt; blogged about in January last year. &lt;/P&gt;
&lt;P&gt;In the next part, I’ll take a look at scopes.&lt;/P&gt;
&lt;P&gt;Cheers, &lt;BR&gt;John.&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3278384" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/jhoward/archive/tags/How+to+Articles/">How to Articles</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Information/">Information</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Windows+Server+2008/">Windows Server 2008</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Hyper_2D00_V/">Hyper-V</category></item><item><title>Windows Server 2008 R2 RTM on Technet &amp; MSDN</title><link>http://blogs.technet.com/b/jhoward/archive/2009/08/14/windows-server-2008-r2-rtm-on-technet-msdn.aspx</link><pubDate>Fri, 14 Aug 2009 21:38:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3273622</guid><dc:creator>John Howard -MSFT</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/jhoward/rsscomments.aspx?WeblogPostID=3273622</wfw:commentRss><comments>http://blogs.technet.com/b/jhoward/archive/2009/08/14/windows-server-2008-r2-rtm-on-technet-msdn.aspx#comments</comments><description>&lt;P&gt;After the Windows 7 RTM release was published last week, it was joined by Windows Server 2008 R2 RTM for Technet and MSDN subscribers this morning. Woo hoo!&lt;IMG src="http://blogpics.dyndns.org/2009-aug-r2-technet.jpg" mce_src="http://blogpics.dyndns.org/2009-aug-r2-technet.jpg"&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/WindowsServer2008R2RTMonTechnetMSDN_A3AD/r2-technet.jpg" mce_href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/WindowsServer2008R2RTMonTechnetMSDN_A3AD/r2-technet.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=r2-technet border=0 alt=r2-technet src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/WindowsServer2008R2RTMonTechnetMSDN_A3AD/r2-technet_thumb.jpg" width=324 height=412 mce_src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/WindowsServer2008R2RTMonTechnetMSDN_A3AD/r2-technet_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Have fun with Hyper-V and all the great new features and improvements.&lt;/P&gt;
&lt;P&gt;Cheers, &lt;BR&gt;John.&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3273622" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Downloads/">Downloads</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Hyper_2D00_V/">Hyper-V</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Windows+Server+2008+R2/">Windows Server 2008 R2</category></item><item><title>Windows 7 RSAT final build available for download</title><link>http://blogs.technet.com/b/jhoward/archive/2009/08/11/windows-7-rsat-final-build-available-for-download.aspx</link><pubDate>Wed, 12 Aug 2009 09:25:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3272617</guid><dc:creator>John Howard -MSFT</dc:creator><slash:comments>18</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/jhoward/rsscomments.aspx?WeblogPostID=3272617</wfw:commentRss><comments>http://blogs.technet.com/b/jhoward/archive/2009/08/11/windows-7-rsat-final-build-available-for-download.aspx#comments</comments><description>&lt;P&gt;The Remote Server Administration Tools (RSAT) for Windows 7 RTM have been released to microsoft.com. These include the Hyper-V tools for remote management of Windows Server 2008 R2 and Microsoft Hyper-V Server 2008 R2.&lt;IMG src="http://blogpics.dyndns.org/2009-aug-rsat.jpg" mce_src="http://blogpics.dyndns.org/2009-aug-rsat.jpg"&gt;&lt;/P&gt;
&lt;P&gt;You can download them from &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=7d2f6ad7-656b-4313-a005-4e344e43997d&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=7d2f6ad7-656b-4313-a005-4e344e43997d&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=7d2f6ad7-656b-4313-a005-4e344e43997d&amp;amp;displaylang=en&lt;/A&gt; – remember to download the right architecture (x86 or x64) as necessary.&lt;/P&gt;
&lt;P&gt;Once you install the update, you can enable one or more of the following tools from the Control Panel under Programs, Turn Windows features on or off. &lt;/P&gt;
&lt;P&gt;Server Administration Tools:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Server Manager &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Role Administration Tools:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Active Directory Certificate Services (AD CS) Tools&lt;/LI&gt;
&lt;LI&gt;Active Directory Domain Services (AD DS) Tools&lt;/LI&gt;
&lt;LI&gt;Active Directory Lightweight Directory Services (AD LDS) Tools&lt;/LI&gt;
&lt;LI&gt;DHCP Server Tools&lt;/LI&gt;
&lt;LI&gt;DNS Server Tools&lt;/LI&gt;
&lt;LI&gt;File Services Tools&lt;/LI&gt;
&lt;LI&gt;Hyper-V Tools&lt;/LI&gt;
&lt;LI&gt;Terminal Services Tools &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Feature Administration Tools:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;BitLocker Password Recovery Viewer&lt;/LI&gt;
&lt;LI&gt;Failover Clustering Tools&lt;/LI&gt;
&lt;LI&gt;Group Policy Management Tools&lt;/LI&gt;
&lt;LI&gt;Network Load Balancing Tools&lt;/LI&gt;
&lt;LI&gt;SMTP Server Tools&lt;/LI&gt;
&lt;LI&gt;Storage Explorer Tools&lt;/LI&gt;
&lt;LI&gt;Storage Manager for SANs Tools&lt;/LI&gt;
&lt;LI&gt;Windows System Resource Manager Tools&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Cheers, &lt;BR&gt;John.&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3272617" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Downloads/">Downloads</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Hyper_2D00_V/">Hyper-V</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Windows+7/">Windows 7</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Windows+Server+2008+R2/">Windows Server 2008 R2</category></item><item><title>HVRemote refresh</title><link>http://blogs.technet.com/b/jhoward/archive/2009/08/07/hvremote-refresh.aspx</link><pubDate>Sat, 08 Aug 2009 02:21:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3271645</guid><dc:creator>John Howard -MSFT</dc:creator><slash:comments>8</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/jhoward/rsscomments.aspx?WeblogPostID=3271645</wfw:commentRss><comments>http://blogs.technet.com/b/jhoward/archive/2009/08/07/hvremote-refresh.aspx#comments</comments><description>&lt;P&gt;So after some 22,000 downloads (thank you) in the 8 months since first released, &lt;A href="http://code.msdn.microsoft.com/hvremote" target=_blank mce_href="http://code.msdn.microsoft.com/hvremote"&gt;HVRemote&lt;/A&gt; has undergone a refresh to make it even easier to configure Hyper-V Remote Management and diagnose issues.&lt;IMG src="http://blogpics.dyndns.org/2009-aug-hvremote-refresh.jpg" mce_src="http://blogpics.dyndns.org/2009-aug-hvremote-refresh.jpg"&gt;&lt;/P&gt;
&lt;P&gt;The major change in version 0.7 is the ability to perform some verification of the configuration and provide hints as to what to follow if it detects an error through the use of the new /target option. Below is an example of the new bit of output running hvremote /show /target:servername from a Windows 7 client where everything is working just fine (yes, it is fine for the ping to timeout, that just means it’s blocked by the firewall).&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/HVRemoterefresh_E5E9/client-test.jpg" mce_href="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/HVRemoterefresh_E5E9/client-test.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=client-test border=0 alt=client-test src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/HVRemoterefresh_E5E9/client-test_thumb.jpg" width=441 height=443 mce_src="http://blogs.technet.com/blogfiles/jhoward/WindowsLiveWriter/HVRemoterefresh_E5E9/client-test_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;HVRemote 0.7 fully supports Windows Server 2008 R2, Microsoft Hyper-V 2008 R2 and Windows 7. In addition, the &lt;A href="http://code.msdn.microsoft.com/HVRemote" mce_href="http://code.msdn.microsoft.com/HVRemote"&gt;home page&lt;/A&gt; has undergone a refresh to cover the some of the most commonly asked questions, and the documentation has been brought up to date.&lt;/P&gt;
&lt;P&gt;For a list of other changes, please see the documentation.&lt;/P&gt;
&lt;P&gt;Cheers, &lt;BR&gt;John.&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3271645" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Downloads/">Downloads</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Windows+Server+2008/">Windows Server 2008</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Hyper_2D00_V/">Hyper-V</category></item><item><title>Windows Virtual PC Links</title><link>http://blogs.technet.com/b/jhoward/archive/2009/08/06/windows-virtual-pc-links.aspx</link><pubDate>Fri, 07 Aug 2009 06:45:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3271381</guid><dc:creator>John Howard -MSFT</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/jhoward/rsscomments.aspx?WeblogPostID=3271381</wfw:commentRss><comments>http://blogs.technet.com/b/jhoward/archive/2009/08/06/windows-virtual-pc-links.aspx#comments</comments><description>&lt;P&gt;A quick note to say that Windows Virtual PC has reached RC (release candidate)&amp;nbsp;and is available for &lt;A href="http://www.microsoft.com/windows/virtual-pc/download.aspx" mce_href="http://www.microsoft.com/windows/virtual-pc/download.aspx"&gt;download&lt;/A&gt;. Ben has lots more information &lt;A href="http://blogs.msdn.com/virtual_pc_guy/archive/2009/08/04/windows-virtual-pc-rc-now-available.aspx#comments" mce_href="http://blogs.msdn.com/virtual_pc_guy/archive/2009/08/04/windows-virtual-pc-rc-now-available.aspx#comments"&gt;here&lt;/A&gt;, and I'm really pleased to see that Prasad has started a &lt;A href="http://blogs.technet.com/windows_vpc/archive/2009/08/04/windows-virtual-pc.aspx" mce_href="http://blogs.technet.com/windows_vpc/archive/2009/08/04/windows-virtual-pc.aspx"&gt;WVPC team blog&lt;/A&gt; where you can learn more about its features and capabilities.&lt;IMG src="http://blogpics.dyndns.org/2009-aug-wvpc.jpg" mce_src="http://blogpics.dyndns.org/2009-aug-wvpc.jpg"&gt;&lt;/P&gt;
&lt;P&gt;Cheers,&lt;BR&gt;John.&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3271381" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Beta+Products/">Beta Products</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Downloads/">Downloads</category><category domain="http://blogs.technet.com/b/jhoward/archive/tags/Virtual+PC/">Virtual PC</category></item></channel></rss>
