Hardware Dev Center

Network Virtualization using Generic Routing Encapsulation (NVGRE) Task Offload

Hyper-V Network Virtualization supports Network Virtualization using Generic Routing Encapsulation (NVGRE) as the mechanism to virtualize IP addresses. In NVGRE, the virtual machine's packet is encapsulated inside another packet. The header of this new, NVGRE-formatted packet has the appropriate source and destination provider area (PA) IP addresses. In addition, it has a 24-bit Virtual Subnet ID (VSID), which is stored in the GRE header of the new packet.

The following figure shows a GRE-encapsulated packet. On the wire, NVGRE-encapsulated packets look like IP-over-Ethernet packets, except that the payload of the outer IP header is a GRE-encapsulated IP packet (including the Ethernet header).


NDIS 6.30 (available in Windows Server 2012 and later) introduces NVGRE Task Offload, which makes it possible to use NVGRE-formatted packets with:

  • Large Send Offload (LSO)
  • Virtual Machine Queue (VMQ)
  • Transmit (Tx) checksum offload (IPv4, TCP, UDP)
  • Receive (Rx) checksum offload (IPv4, TCP, UDP)
Note  It is possible for a protocol driver to offload "mixed mode" packets, which means packets in which the inner and outer IP header versions are different. For example, a packet could have outer IP header as IPv6 and the inner IP header as IPv4.
Note  It is also possible for a protocol driver to offload an NVGRE-formatted packet that has no inner TCP or UDP header. For example, an IP packet could have an inner payload that is an Internet Control Message Protocol (ICMP) packet.

For more information about NVGRE, see the following Internet Draft:

NVGRE is based on Generic Routing Encapsulation (GRE). For more information about GRE, see the following resources:

This section includes:

Related topics

Offloading Checksum Tasks
Offloading the Segmentation of Large TCP Packets
TCP/IP Task Offload



Send comments about this topic to Microsoft

© 2015 Microsoft