About Network Virtualization using Generic Routing Encapsulation (NVGRE)

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).

Diagram comparing original packet and GRE-encapsulated packet. Both have MAC, IP header, TCP header, and TCP user data. GRE-encapsulated packet also has outer MAC, outer IP header, and GRE.

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)

NDIS 6.85 introduces support for NVGRE with UDP segmentation offload (USO).

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:

Offloading Checksum Tasks

Offloading the Segmentation of Large TCP Packets

TCP/IP Task Offload