Hyper-V Network Virtualization NVGRE: No connection between VMs on different Hyper-V Hosts
I have worked on some project with Hyper-V Network Virtualization and NVGRE, and today I have seen an issue with Encapsulated Task Offloading on some HP Broadcom Network adapters.
I have Hyper-V Hosts running with 10GbE Broadcom Network Adapters (HP Ethernet 10Gb 2-port 530FLR-SFP+ Adapter) with driver version 126.96.36.199 (released in 2014). I have created a new VM Network based on Hyper-V Network Virtualization using NVGRE. VM1 is running on Host1 and VM2 is running on Host2. You can ping VM2 from VM1 but there is no other connection possible like SMB, RDP, HTTP or DNS. If you are using a NVGRE Gateway you can no even resolve DNS inside those VMs. If VM1 and VM2 are running on the same Hyper-V host everything between those VMs works fine.
If you are using Server Core, which you should by the way, you can use the following command to check for those settings:
Get-NetAdapterAdvancedProperty -Name <NICNAME>
The Broadcom Network adapters have a feature called Encapsulated Task Offloading which is enabled by default. If you disable Encapsulated Task Offloading everything works fine. You can disable it by using the following PowerShell cmdlet.
Set-NetAdapterEncapsulatedPacketTaskOffload -EncapsulatedPacketTaskOffloadEnabled $false -Name <NICNAME>
After that connection inside the VMs started to work immediately, no reboot needed.