{"id":13947,"date":"2013-01-04T13:14:00","date_gmt":"2013-01-04T13:14:00","guid":{"rendered":"https:\/\/aidanfinn.com\/?p=13947"},"modified":"2013-01-04T13:14:00","modified_gmt":"2013-01-04T13:14:00","slug":"a-converged-fabric-design-with-host-and-guest-iscsi-connections","status":"publish","type":"post","link":"https:\/\/aidanfinn.com\/?p=13947","title":{"rendered":"A WS2012 Hyper-V Converged Fabric Design With Host And Guest iSCSI Connections"},"content":{"rendered":"<p>A friend recently asked me a question. He had recently deployed a Windows Server 2012 cluster with converged fabrics. He had limited amounts of NICs that he could install and limited number of switch ports that he could use.&#160; His Hyper-V host cluster is using a 10 GbE connected iSCSI SAN.&#160; He also wants to run guest clusters that are also connected to this storage.&#160; In the past, I would have said: \u201cyou need another pair of NICs on the iSCSI SAN and use a virtual network on each to connect the virtual machines. But now \u2026 we have options!<\/p>\n<p>Here\u2019s what I have come up with:<\/p>\n<p><a href=\"https:\/\/aidanfinn.com\/wp-content\/uploads\/2013\/01\/image1.png\"><img loading=\"lazy\" decoding=\"async\" title=\"image\" style=\"border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; border-left: 0px; display: block; padding-right: 0px; margin-right: auto\" border=\"0\" alt=\"image\" src=\"https:\/\/aidanfinn.com\/wp-content\/uploads\/2013\/01\/image_thumb1.png\" width=\"504\" height=\"402\" \/><\/a><\/p>\n<p>iSCSI storage typically has these two requirements:<\/p>\n<ul>\n<li>Two NICs to connect to the SAN switches, each on a different subnet.<\/li>\n<li>Each NIC is on a different subnet<\/li>\n<\/ul>\n<p>In the diagram focus on the iSCSI piece.&#160; That\u2019s the NIC team on the left.<\/p>\n<p><strong><u>The Physical NICs and Switches<\/u><\/strong><\/p>\n<p>As usual with an iSCSI SAN, there are two dedicated switches for the storage connections.&#160; That\u2019s a normal (not always) support requirement by SAN manufacturers.&#160; This is why we don\u2019t have complete convergence to a single NIC team, like you see in most examples.&#160; <\/p>\n<p>The host will have 2 iSCSI NICs (10 GbE).&#160; The connected switch ports are trunked, and both of the SAN VLANs (subnets) are available via the trunk.<\/p>\n<p><strong><u>The NIC Team and Virtual Switch<\/u><\/strong><\/p>\n<p>A NIC team is created.&#160; The team is configured with Hyper-V Port load distribution (load balancing), meaning that a single virtual NIC cannot exceed the bandwidth of a single physical NIC in the team.&#160; I prefer LACP (teaming mode) teams because they are dynamic (and require minimal physical switch configuration).&#160; This type of switch dependent mode requires switch stacking.&#160; If that\u2019s not your configuration then you should use Switch Independent (requires no switch configuration) instead of LACP.<\/p>\n<p>The resulting team interface will appear in Network Connections (Control Panel).&#160; Use this interface to connect a new external virtual switch that will be dedicated to iSCSI traffic.&#160; Don\u2019t create the virtual switch until you decide how you will implement QoS.<\/p>\n<p><strong><u>The Management OS (Host)<\/u><\/strong><\/p>\n<p>The host does not have 2 NICs dedicated to it\u2019s own iSCSI needs. Instead, it will share the bandwidth of the NIC team with guests (VMs) running on the host.&#160; That sharing will be controlled using Quality of Service (QoS) minimum bandwidth rules (later in the post).<\/p>\n<p>The host will need two NICs of some kind, each one on a different iSCSI subnet.&#160; To do this:<\/p>\n<ol>\n<li>Create 2 management OS virtual NICs<\/li>\n<li>Connect them to the iSCSI virtual switch<\/li>\n<li>Bind each management OS virtual NIC to a different iSCSI SAN VLAN ID<\/li>\n<li>Apply the appropriate IPv4\/v6 configurations to the iSCSI virtual NICs in the management OS Control Panel<\/li>\n<li>Configure iSCSI\/MPIO\/DSM as usual in the management OS, using the virtual NICs<\/li>\n<\/ol>\n<p>Do not configure\/use the physical iSCSI NICs!&#160; Your iSCSI traffic will source in the management OS virtual NICs, flow through the virtual switch, then the team, and then the physical NICs, and then back again.<\/p>\n<p><strong><u>The Virtual Machines<\/u><\/strong><\/p>\n<p>Create a pair of virtual NICs in each virtual machine that requires iSCSI connected storage.<\/p>\n<p><em>Note: Remember that you lose virtualisation features with this type of storage, such as snapshots (yuk anyway!), VSS backup from the host (a very big loss), and Hyper-V Replica.&#160; Consider using virtual storage that you can replicate using Hyper-V Replica.<\/em><\/p>\n<p>The process for the virtual NICs in the guest OS of the virtual machine will be identical to the management OS process.&#160; Connect each iSCSI virtual NIC in the VM to the iSCSI virtual switch (see the diagram).&#160; Configure a VLAN ID for each virtual NIC, connecting 1 to each iSCSI VLAN (subnet) \u2013 this is done in Hyper-V Manager and is controlled by the virtualisation administrators.&#160; In the guest OS:<\/p>\n<ul>\n<li>Configure the IP stack of the virtual NICs, appropriate to their VLANs<\/li>\n<li>Configure iSCSI\/MPIO\/DSM as required by the SAN manufacturer<\/li>\n<\/ul>\n<p>Now you can present LUNs to the VMs.<\/p>\n<p><strong><u>Quality of Service (QoS)<\/u><\/strong><\/p>\n<p>QoS will preserve minimum amounts of bandwidth on the iSCSI NICs for connections.&#160; You\u2019re using a virtual switch so you will <a href=\"https:\/\/aidanfinn.com\/?p=13891\" target=\"_blank\">implement QoS<\/a> in the virtual switch.&#160; Guarantee a certain amount for each of the management OS (host) virtual NICs.&#160; This has to be enough for all the storage requirements of the host (the virtual machines running on that host).&#160; You can choose one of two approaches for the VMs:<\/p>\n<ul>\n<li>Create an explicit policy for each virtual NIC in each virtual machine \u2013 more engineering and maintenance required<\/li>\n<li>Create a single default bucket policy on the virtual switch that applies to all connected virtual NICs that don\u2019t have an explicit QoS policy<\/li>\n<\/ul>\n<p>This virtual switch policy give the host administrator control, regardless of what a guest OS admin does.&#160; Note that you can also apply classification and tagging policies in the guest OS to be applied by the physical network.&#160; There\u2019s no point applying rules in the OS Packet Scheduler because the only traffic on these two NICs should be iSCSI.<\/p>\n<p><em>Note: remember to change the NIC binding order in the host management OS and guest OSs so the iSCSI NICs are bottom of the order.<\/em><\/p>\n<p><strong><u>Support?<\/u><\/strong><\/p>\n<p>I checked with the Microsoft PMs because this configuration is nothing like any of the presented or shared designs.&#160; This design appears to be OK <em>with Microsoft<\/em>.&#160; <\/p>\n<p>For those of you that are concerned about NIC teaming and MPIO: In this design, MPIO has no visibility of the NIC team that resides <em>underneath<\/em> of the virtual switch so there is not a support issue.<\/p>\n<p>Please remember:<\/p>\n<ul>\n<li>Use the latest stable drivers and firmwares<\/li>\n<li>Apply any shared hotfixes (not just Automatic Updates via WSUS, etc) if they are published<\/li>\n<li>Do your own pre-production tests<\/li>\n<li>Do a pilot test<\/li>\n<li>Your SAN manufacturer <em>will<\/em> have the last say on support for this design<\/li>\n<\/ul>\n<p><em><strong><u>EDIT1:<\/u><\/strong><\/em><\/p>\n<p>If you wanted, you could use a single iSCSI virtual NIC in the management OS and in the guest OS <em>without <\/em>MPIO.&#160; You have the path fault tolerance that MPIO provides via NIC teaming. Cluster validation would give you a warning (not a fail), and the SAN manufacturer might get their knickers in a twist over the lack of dual subnets and MPIO.<\/p>\n<p>And \u2026 check with your SAN manufacturer for the guidance on the subnets because not all have the same requirements.<\/p>\n<p><div id=\"scid:0767317B-992E-4b12-91E0-4F059A8CECA8:2530b9de-e608-4283-a2b8-d657c15330c7\" class=\"wlWriterEditableSmartContent\" style=\"float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px\">Technorati Tags: <a href=\"http:\/\/technorati.com\/tags\/Hyper-V\" rel=\"tag\">Hyper-V<\/a>,<a href=\"http:\/\/technorati.com\/tags\/Virtualisation\" rel=\"tag\">Virtualisation<\/a>,<a href=\"http:\/\/technorati.com\/tags\/Windows+Server+2012\" rel=\"tag\">Windows Server 2012<\/a>,<a href=\"http:\/\/technorati.com\/tags\/Networking\" rel=\"tag\">Networking<\/a>,<a href=\"http:\/\/technorati.com\/tags\/Storage\" rel=\"tag\">Storage<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A friend recently asked me a question. He had recently deployed a Windows Server 2012 cluster with converged fabrics. He had limited amounts of NICs that he could install and limited number of switch ports that he could use.&#160; His Hyper-V host cluster is using a 10 GbE connected iSCSI SAN.&#160; He also wants to &hellip; <a href=\"https:\/\/aidanfinn.com\/?p=13947\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;A WS2012 Hyper-V Converged Fabric Design With Host And Guest iSCSI Connections&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[20],"tags":[181,80,99,195,118],"class_list":["post-13947","post","type-post","status-publish","format-standard","hentry","category-hyper-v","tag-hyper-v","tag-networking","tag-storage","tag-virtualisation","tag-windows-server-2012"],"aioseo_notices":[],"jetpack_featured_media_url":"","amp_enabled":true,"_links":{"self":[{"href":"https:\/\/aidanfinn.com\/index.php?rest_route=\/wp\/v2\/posts\/13947","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aidanfinn.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aidanfinn.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aidanfinn.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aidanfinn.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=13947"}],"version-history":[{"count":0,"href":"https:\/\/aidanfinn.com\/index.php?rest_route=\/wp\/v2\/posts\/13947\/revisions"}],"wp:attachment":[{"href":"https:\/\/aidanfinn.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=13947"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aidanfinn.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=13947"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aidanfinn.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=13947"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}