Enabling Jumbo Frames on Hyper-V Switch

So, you have enabled Jumbo Frames on your NIC’s and vNIC’s, but your hosts are not not doing Jumbo Frames?
This is because the Hyper-V switch still has a MTU of 1500 and the good thing is…
There is a way to enable Jumbo Frames on your Hyper-V Switch!

The {4D36E972-E325-11CE-BFC1-08002BE10318} subkey in the registry represents the class of network adapter devices that the system supports.
The full registry path: HKLM:\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}
In the subkey you will find many numeric subkeys, every Virtual NIC has it’s own key.
If you click trough these keys you will see multiple keys with the “driverdesc” shown as “Hyper-V Virtual Ethernet Adapter”

jumbo1

If you change the MTU/Jumbo settings of your Virtual NIC, the change is visible here if you refresh the view.
Virtual NIC’s have a the Characteristics of “a1” (161) but the virtual switch has an other Characteristics property “29” (41).
jumbo2

Change the *JumboPacket setting to “9014”
The setting will be active after a reboot of the server.

I made a little powershell script to change the jumbo settings:

$RegKey ="HKLM:\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}"
Get-ChildItem -Path $RegKey -ErrorAction SilentlyContinue| % {
$path = $_.PSPath
Get-Itemproperty $path | where {$_.driverdesc -eq "Hyper-V Virtual Ethernet Adapter" -and $_.Characteristics -eq "41"} | % {
Set-ItemProperty $path -Name "*JumboPacket" -Value "9014"
}
}

After the reboot you can test jumbo frames using the ping command.

Ping -f -l 8000 192.168.0.2

The “-f” parameter does not allow packets to be fragmented.
The “-l” parameter specifies the size of the packet, in this case we use a large packet (jumbo frame).

If you get reply’s everything works great!

** Change settings and use the script on own risk **

8 thoughts to “Enabling Jumbo Frames on Hyper-V Switch”

  1. Hi,
    Great Post!
    I have one question. What if you consider two virtual switches?
    Does this virtual switch with Characteristics property “29″ (41) refers to all created virtual switches in Hyper-V, or does each vSwitch needs to be individually configured for Jumbo frames?
    I have in my registry just one object with Characteristics=“29″ (41) and driverdesc= “Hyper-V Virtual Ethernet Adapter”, but 2 virtual switches created.

    1. Hi Joe,

      The Hyper-v host has also a “secret” switch on top of your created virtual switches.
      The virtual switch with Characteristics property “29″ (41) represents this switch.

  2. Hi, Darryl,
    Thank you for your answer.
    Considering a scenario with 3 virtual switches where I need to set MTU for Jumbo frames on
    only two of them. How would you do that?

    1. The Hyper-v switch registry setting with Characteristics “41” is a global setting for all the hyper-v switches.
      If you do not want a switch to do jumbo frames, dont enable jumbo frames on the attached NIC (or team)

  3. Hi Darryl,
    Is this still necessary in windows server 2016 (with or without SET) ?

    thanks,
    Dennis

      1. Wait a sec…
        This Jumbo stuff is only valid for Win 2012 R2 ? Not for 2016/2019 ?

        Does this mean those versions handle it automatically ? Or is there just no more performance benefit anymore ?

        Just set up 6 nodes with Jumbo in 2016 🙂

        Thanx
        Richard

        1. Hey Richard,

          Yes this was for 2012 R2, I believe only for the early versions.
          This post is from Apr 19, 2013 🙂

          -Darryl

Leave a Reply

Your email address will not be published. Required fields are marked *