Network Virtualization using Generic Routing Encapsulation (NVGRE) off-load is currently supported in Windows Server 2012 R2/2016 with the latest updates for Microsoft.
NVGRE is only supported in VMQ mode and not in SR-IOV mode.
For further information, please refer to the Microsoft’s “Network Virtualization using Generic Routing Encapsulation (NVGRE) Task Offload” document at https://docs.microsoft.com/en-us/windows-hardware/drivers/network/network-virtualization-using-generic-routing-encapsulation--nvgre--task-offload
Enabling/Disabling NVGRE Offloading
To leverage NVGRE to virtualize heavy network IO workloads, the Mellanox ConnectX®-3 Pro network NIC provides hardware support for GRE off-load within the network NICs by default.
To enable/disable NVGRE off-loading:
- Open the Device Manager.
- Go to the Network adapters.
- Right click ‘Properties’ on Mellanox ConnectX®-3 Pro Ethernet Adapter card.
- Go to Advanced tab.
- Choose the ‘Encapsulate Task Offload’ option.
- Set one of the following values:
- Enable - GRE off-loading is Enabled by default
- Disabled - When disabled the Hyper-V host will still be able to transfer NVGRE traffic, but TCP and inner IP checksums will be calculated by software that significant reduces performance.
Configuring the NVGRE using PowerShell
Hyper-V Network Virtualization policies can be centrally configured using PowerShell 3.0 and PowerShell Remoting.
For further information of now to configure NVGRE using PowerShell, please refer to Microsoft’s “Step-by-Step: Hyper-V Network Virtualization” blog at https://blogs.technet.microsoft.com/keithmayer/2012/10/08/step-by-step-hyper-v-network-virtualization-31-days-of-favorite-features-in-winserv-2012-part-8-of-31/
Once the configuration using PowerShell is completed, verifying that packets are indeed encapsulated as configured is possible through any packet capturing utility. If configured correctly, an encapsulated packet should appear as a packet consisting of the following headers:
Outer ETH Header, Outer IP, GRE Header, Inner ETH Header, Original Ethernet Payload.