As of August 2015, Hyper-V machines come in the form of Generation 1 and Generation 2 (Hyper-V shipped with Windows Server 2012 R2). Generation 2 brings some advantages over Generation 1 such as standard (synthetic) NIC PXE booting capabilities, UEFI firmware support and booting from a SCSI attached VHD. These are some things a Generation 1 VM cannot do.
Generation 1 VMs have been in use since Windows Server 2008 when Hyper-V was first introduced to the world. This version of VM comes with the option of two NICs in the form of Synthetic and Legacy. If you are using a Generation 1 VM and need to PXE boot, you need to use a Legacy NIC or the VM will fail to PXE boot.
Let me explain the differnce between the Synthetic and Legacy NICs and the variations between them within Generation 1 and 2 VMs:
- Synthetic Generation 1 – The more advanced Generation 1 NIC provided by Hyper-V which supports faster speeds however does not support PXE boot.
- Legacy Generation 1 – Only available in Generation 1 Virtual Machines. This NIC is an emuation of an old physical NIC that does support PXE boot. Geared towards older legacy Operating Systems for compatilibility. Supports speeds of up to 100Mbps. Shown below as the bronze NIC.
- Synthetic Generation 2 – Has all the advantages provided by the Generation 1 Synthetic/Standard NIC however also has built-in PXE boot capability.
Confused yet? Lets move on.
When using Hyper-V VMs and Citrix PVS DHCP/PXE for TFTP you will have something to think about regarding the NICs you are going to use for getting that Worker VM booted.
If using a 2012 R2 Hypervisor, Generation 2 machines now have the ‘synthetic’ NICs that can PXE boot and gone is the need to use the old legacy network adapter. You can’t even add the legacy NIC to your VMs if they are Generation 2. Be aware that guest operating systems must be running at least Windows Server 2012 or 64-bit versions of Windows 8 and higher to take advantage of and use Generation 2 VMs since Generation 2 fully runs from UEFI and not BIOS like Generation 1 does. If you do happen to have vDisks running these recent Operating Systems and your Hypervisors are 2012 R2 you might be thinking you can use Generation 2 VMs with Synthetic PXE NIC and be good to go. Yes, only if you are using PVS 7.7+
If you have PVS 7.6 or below you have no choice but to use Generation 1 VMs to PXE boot. Since you need to use the Legacy NIC you only get a maximum speed of 100Mbps bandwidth available for streaming since this is the maximum throughput a Legacy NIC will provide.
Do you need more than 100Mbps for vDisk streaming?
Well, some say that 100Mbps can be enough but the way I see it is if you have the option to use the newer form of NIC then I don’t see any reason not to use Synthetic NICs for streaming.
So you can use Generation 1 Synthetic NICs for vDisk streaming?
Well, yes, but not for the boot stage. You can simply use a Legacy NIC for booting, and the Synthetic NIC for everything else.
So when using Generation 1 VMs, this is where a workaround comes in to play. To increase the bandwidth for your Generation 1 streaming NIC, you can actually stream from a Synthetic NIC, but only if the Synthetic and Legacy NIC are on the same subnet. PVS automatically switches from Legacy to Synthetic after the VM has PXE booted and received streaming of a vDisk. This means that each Generation 1 VM will have two NICs attached (Legacy & Synthetic) for vDisk streaming. The VM boots using the Legacy NIC and once booted switches streaming to the Synthetic NIC. The Legacy NIC is then given an APIPA address of 169.254.x.x and is no longer used until it needs to PXE boot again on restart.
As shown below, you can see the Legacy NIC with the APIPA address and the Synthetic NIC now partaking in vDisk streaming with more activity recordings. This is on a Generation 1 PVS Worker VM that has successfully PXE booted and received it’s vDisk streaming. The Synthetic NIC also shows as having 10Gbps throughput (real value determined by your own network infrastructure!).