Introduction: You might encounter BSOD while streaming PVS targets when using some combination of hardware and software under certain circumstances. This usually occurs when the BNIstack driver fails to work correctly with the Ethernet driver causing Windows kernel to crash resulting BSOD.
The infrastructure used for this exercise:
PVS version: Provisioning Services 6.1,
Hypervisor: XenServer 6.0.2,
PVS target: Windows 2008 R2 target installed with XenApp 6.5
Suggestion#1 – Before beginning
Install the latest Microsoft hotfixes related to network stack on the Windows target devices before installing PVS target device software.
Windows 7 and Windows 2008 R2 operating systems
Windows 7 SP1 and Windows 2008 R2 SP1 operating systems
Windows Vista and Windows 2008 operating systems
Suggestion#2 – Installation of Master Target Device Software
Software for master target device is available at several places. For example, It comes bundled with XenApp 6.5 installer. You also get an option to install the PVS target software at the time of installing XenApp. I suggest avoiding this. Always use software that comes with PVS installation ISO.
Ensure you install the latest version of the XenTools or VMware tools.
Few important things during installation:
- Master target device software MUST be the last system software that is installed on the image. This means that you should install it after your Anti-Virus, Xentools, VMware tools, security patches etc…otherwise anything that alters the network stack will break PVS.
- A note about Anti Virus and security software: Make sure that you know what you are installing. Anything that is kernel based or touching the network stack is going to give you head aches. As a best practice, only after you complete all the security hardening, you should install PVS target software. This will make sure that network stack is now known to PVS and will remain unaltered. Please follow CTX124185 for Anti-Virus installation.
Also keep a track of the hotfixes for PVS 6.1. There are a bunch of them and you should only install the hotfix when you encounter an issue and it matches exactly with the hotfix symptoms.
Suggestion#3 – Single NIC targets instead of multi-homed ones
Traditionally, PVS best practices mandate having two NICs for PVS targets. Maybe this is not necessary any more especially for smaller implementations which are lesser than 1000 VMs.
I think having just one NIC simplifies the installation, setup and most importantly causes fewer headaches as the BNIstack driver can just be attached one NIC and few routing decisions for the network stack.
For more information, look here. http://blogs.citrix.com/2012/05/01/pvs-stream-traffic-isolation/
Suggestion#4 – Removing Ghost NICs from the master image
For reasons like plugging and unplugging different networks, running dim.exe or some other reason, you may find some Ghost NICs listed under your hardware inventory which may cause your PVS to break. This happens because during the device boot process, PVS server may bind to one of these Ghost NICs and that will cause BSOD.
To find Ghost NICs and remove them, please refer to below article.
Suggestion#5 – Registry hack to delay the PVS driver binding to Ethernet NIC
Use this suggestion only if all the above have been implemented and you still get BSOD. Ignore otherwise.
If you are using an operating system older than Windows 2008 R2, you may want to delay the bind call made by the PVS device software to the NIC.
When the OS tries to boot, the PVS device software needs to bind to NIC to start the PVS streams. If the NIC has not initialized yet, it may lead to a BSOD. So a delay is set at the PVS device software so that the binding is delayed.
Refer to the below KB.
Disclaimer: This article is purely based on my experiences and insights. My employer Citrix Systems has neither reviewed nor endorsed anything that is mentioned above.