Configuring Jumbo Frames on a Hyper-V/Server Core Virtual NIC

I was recently reading two excellent articles on NIC configuration for server core and virtual NICs.  The reason I happened upon these postings was because I was searching for a way to enable Jumbo Frames.  Unfortunately, I didn’t find anything that specifically addressed doing this work on vitrualized NICs in Hyper-V Server, which is slightly different than physical NICs. 

Using Michael Platt’s article, I discovered that it did not take into account multiple NICs with the same device name.  What I really needed was a way to reference the “Friendly Name” (the one you set in the Hyper-V Virtual Network Manager).  After doing a search of the registry, I found that the friendly names of the virtual NICs are stored in 

HKLM\SYSTEM\CurrentControlSet\Enum\Root\VMS_MP\

From there, one can search for the correct NIC as described in the article, using the “Driver” value.

As an aside, you can lookup the GUID for physical drivers by running a search of the friendly name in

HKLM\SYSTEM\CurrentControlSet\Control\Network\

The containing key will match the NetCfgInstanceId of the NIC you want to modify. 

Using these methods, you can be sure you’re configuring the correct NIC within the registry.

Advertisements

One Comment

  1. Posted September 23, 2010 at 9:55 pm | Permalink | Reply

    To go along with this post, I’ve created a VBScript that will enable Jumbo Frames on Hyper-V virtual NICs. Note that this functionality is only supported in the R2 version (Server Core or Hyper-V Server). When running the script, enter

    cscript nic_friendly_name

    where the nic_friendly_name is the name you set for the virtual NIC in Hyper-V Virtual Network manager. If the name has spaces in it, be sure to enclose the name in quotes.


    Option Explicit

    Const HKLM = &H80000002
    Dim strFound, strComputer, strTargetName, regObj, strKeyPath, arrKeyNames, I
    Dim strKeySubPath, strFriendlyName, strDriver, strTargetPath

    strFound = false
    strComputer = "."
    strTargetName = WScript.Arguments(0)

    Set regObj = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &_
    strComputer & "\root\default:StdRegProv")
    strKeyPath = "SYSTEM\CurrentControlSet\Enum\Root\VMS_MP\"
    regObj.EnumKey HKLM, strKeyPath, arrKeyNames

    For I = 0 to UBound(arrKeyNames)
    strKeySubPath = strKeyPath & arrKeyNames(I)
    regObj.GetStringValue HKLM, strKeySubPath, "FriendlyName", strFriendlyName
    If strFriendlyName = strTargetName Then
    WScript.Echo "Found " & strTargetName
    strFound = true
    regObj.GetStringValue HKLM, strKeySubPath, "Driver", strDriver
    strTargetPath = "SYSTEM\CurrentControlSet\Control\Class\" & strDriver
    regObj.SetStringValue HKLM, strTargetPath, "*JumboPacket", "9014"
    WScript.eCho "Changed HKLM\" & strTargetPath & " to 9014"
    End If
    Next

    If strFound = false Then
    WScript.Echo "Target not found; no changes made"
    End If

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: