Paravirtualized Network Drivers for Windows
Introduction
In order to improve network performance, special paravirtualized network drivers can be installed in Windows guests: to use them, you have to obtain those drivers and then install them on the VM guest os.
See Windows_VirtIO_Drivers to get info about
- downloading VirtIO drivers
- changelog and guest OS compatibility
- other kind of guest devices supported
Download
Download the latest drivers (ISO) as suggested by the page Windows_VirtIO_Drivers to your desktop.
Then upload the ISO to your Proxmox VE server:
- logon to the Proxmox VE web interface
- select a ISO-enabled storage (see Storage_Model#Storage_type_Content)
- switch to "content" tab
- just use the "upload" button on the menu bar.
Installation
Choose the right driver
In the iso file provided by Fedora Project drivers for different Windows versions are available, in several folders.
The folder names can be a bit confusing, since they refer to the Microsoft legacy naming (i.e. lh=longhorn, that is Vista): you can refer to the schema below (showing also block/baloon drivers folder names):
OS | Numeric version | dir for Storage / Balloon | dir for Network |
---|---|---|---|
W2008 R2 / Windows 7 | 6.1 | Win7 (32/64) | Win7 (32/64) |
W2008 / Vista | 6.0 | Wlh (32/64) | Vista (32/64) |
W2003 | 5.2 | Wnet (32/64) | XP (32/64) |
XP | 5.1 - 32bit, 5.2 - 64bit | WXp (32 only) | XP (32/64) |
NB:
- Windows XP drivers are known to work also on Windows 2003 Server
- Win7 drivers can be used for Windows 2008r2
Prepare KVM guest on Proxmox VE
- Shutdown your KVM Virtual Machine and change the used Network Card to "virtio".
- Select the previously uploaded ISO image as CDROM
- Start your Virtual Machine
Installation of paravirtualized driver within Windows
The Windows device manager should now detect a new network device. Just point the driver wizard to the CD-ROM containing the drivers. The drivers are not signed, choose install anyway and you are done.
If you get any conflicting IP errors or just want to clean up the old card, enable the devmgr_show_nonpresent_devices option on the server.
My Computer -> Properties -> Advanced -> Env Variables –> System Var -> New
Name: devmgr_show_nonpresent_devices Value: 1
OK/Close all windows.
My Computer -> Properties -> Hardware -> Dev Mgr -> View -> Show hidden dev
Now locate & remove old NIC
Performance Improvements
The KVM Project has established a 'best practice' with regard to acheiving optimal performance in Windows guests using the virtio driver.
Permanent changes to the Windows registry are required.
The procedure is published here: http://www.linux-kvm.org/page/WindowsGuestDrivers/kvmnet/registry.
Alternative: e1000
Although not paravirtualized, Windows is known to work well with the emulated Intel e1000 network card.
Just remember that
- the built in e1000 drivers in Win7/Win2008 are fine but
- the built in e1000 drivers in WinXP/Win2003 are not working!
- you need to install the usual drivers from Intel (see Intel® Ethernet Connections CD (176 MB) or Intel® Drivers Setup File (20 MB)).
- A walkthrough on installing e1000 drivers in a Windows XP KVM is available here. But the link for drivers download provided in that walkthrough was broken, use above Intel Drivers File Setup instead.