netvsc.txt 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. Hyper-V network driver
  2. ======================
  3. Compatibility
  4. =============
  5. This driver is compatible with Windows Server 2012 R2, 2016 and
  6. Windows 10.
  7. Features
  8. ========
  9. Checksum offload
  10. ----------------
  11. The netvsc driver supports checksum offload as long as the
  12. Hyper-V host version does. Windows Server 2016 and Azure
  13. support checksum offload for TCP and UDP for both IPv4 and
  14. IPv6. Windows Server 2012 only supports checksum offload for TCP.
  15. Receive Side Scaling
  16. --------------------
  17. Hyper-V supports receive side scaling. For TCP & UDP, packets can
  18. be distributed among available queues based on IP address and port
  19. number.
  20. For TCP & UDP, we can switch hash level between L3 and L4 by ethtool
  21. command. TCP/UDP over IPv4 and v6 can be set differently. The default
  22. hash level is L4. We currently only allow switching TX hash level
  23. from within the guests.
  24. On Azure, fragmented UDP packets have high loss rate with L4
  25. hashing. Using L3 hashing is recommended in this case.
  26. For example, for UDP over IPv4 on eth0:
  27. To include UDP port numbers in hashing:
  28. ethtool -N eth0 rx-flow-hash udp4 sdfn
  29. To exclude UDP port numbers in hashing:
  30. ethtool -N eth0 rx-flow-hash udp4 sd
  31. To show UDP hash level:
  32. ethtool -n eth0 rx-flow-hash udp4
  33. Generic Receive Offload, aka GRO
  34. --------------------------------
  35. The driver supports GRO and it is enabled by default. GRO coalesces
  36. like packets and significantly reduces CPU usage under heavy Rx
  37. load.
  38. SR-IOV support
  39. --------------
  40. Hyper-V supports SR-IOV as a hardware acceleration option. If SR-IOV
  41. is enabled in both the vSwitch and the guest configuration, then the
  42. Virtual Function (VF) device is passed to the guest as a PCI
  43. device. In this case, both a synthetic (netvsc) and VF device are
  44. visible in the guest OS and both NIC's have the same MAC address.
  45. The VF is enslaved by netvsc device. The netvsc driver will transparently
  46. switch the data path to the VF when it is available and up.
  47. Network state (addresses, firewall, etc) should be applied only to the
  48. netvsc device; the slave device should not be accessed directly in
  49. most cases. The exceptions are if some special queue discipline or
  50. flow direction is desired, these should be applied directly to the
  51. VF slave device.
  52. Receive Buffer
  53. --------------
  54. Packets are received into a receive area which is created when device
  55. is probed. The receive area is broken into MTU sized chunks and each may
  56. contain one or more packets. The number of receive sections may be changed
  57. via ethtool Rx ring parameters.
  58. There is a similar send buffer which is used to aggregate packets for sending.
  59. The send area is broken into chunks of 6144 bytes, each of section may
  60. contain one or more packets. The send buffer is an optimization, the driver
  61. will use slower method to handle very large packets or if the send buffer
  62. area is exhausted.