VirtualBox provides a variety of virtual network adapters that can be "attached" to the host's network in a number of ways. Depending on which types of adapters and attachments are used the network performance will be different. Performance-wise the virtio network adapter is preferable over Intel PRO/1000 emulated adapters, which are preferred over PCNet family of adapters. Both virtio and Intel PRO/1000 adapters enjoy the benefit of segmentation and checksum offloading. Segmentation offloading is essential for high performance as it allows for less context switches, dramatically increasing the sizes of packets that cross VM/host boundary.
Note
Neither virtio nor Intel PRO/1000 drivers for Windows XP support segmentation offloading. Therefore Windows XP guests never reach the same transmission rates as other guest types. Refer to MS Knowledge base article 842264 for additional information.
Three attachment types: internal, bridged and host-only, have nearly identical performance, the internal type being a little bit faster and using less CPU cycles as the packets never reach the host's network stack. The NAT attachment is the slowest (and safest) of all attachment types as it provides network address translation. The generic driver attachment is special and cannot be considered as an alternative to other attachment types.
The number of CPUs assigned to VM does not improve network performance and in some cases may hurt it due to increased concurrency in the guest.
Here is the short summary of things to check in order to improve network performance:
-
Whenever possible use virtio network adapter, otherwise use one of Intel PRO/1000 adapters;
-
Use bridged attachment instead of NAT;
-
Make sure segmentation offloading is enabled in the guest OS. Usually it will be enabled by default. You can check and modify offloading settings using
ethtool
command in Linux guests. -
Perform a full, detailed analysis of network traffic on the VM's network adaptor using a 3rd party tool such as Wireshark. To do this, a promiscuous mode policy needs to be used on the VM's network adaptor. Use of this mode is only possible on networks: NAT Network, Bridged Adapter, Internal Network and Host-only Adapter.
To setup a promiscuous mode policy, either select from the drop down list located in the Network Settings dialog for the network adaptor or use the command line tool
VBoxManage
; for details, refer to Section 8.8, “VBoxManage modifyvm”.Promiscuous mode policies are:
-
deny
(default setting) which hides any traffic not intended for this VM's network adaptor. -
allow-vms
which hides all host traffic from this VM's network adaptor, but allows it to see traffic from/to other VMs. -
allow-all
which removes all restrictions - this VM's network adaptor sees all traffic.
-