When conducting network troubleshooting exercises on a daily basis, you start to take some of your simpler and more common tools for granted, until you lose them that is. One of these basic tools for troubleshooting network connectivity issues is the ability to manipulate the advanced parameters on your network card. I ran into this issue while trying to hard code the Speed and Duplex settings of a card in a Windows Server 2008 Server Core machine.
I was recently working with a customer on their Server Core system and he wanted to set these parameters since other servers in his network were set similarly. I understood why he wanted to be able to control these settings on his server. Also, when facing a network connectivity issue, one of the most basic things that you can rule out is any mismatch in the speed and duplex settings between the network card and the switch by hard coding them both to the same configuration. On any other Windows server this is accomplished from the properties for the Network Interface Card (NIC) where you can select the Advanced tab. Figure-1 shows an example of how this looks from the GUI:
This Advanced tab contains all of the Parameters that the NIC manufacturer has available for that card via the drivers associated with it. Now this is all well and good as long as you have a GUI. But, when that interface is removed as is the case with Server Core, you are left wondering, “What now?” To date I have not seen any command line tools created by the network card vendors to take the place of the GUI tools that no longer exist in Server Core.
Luckily, as with most things in the O/S, there are registry entries that are associated with these parameters. In the case of network cards you are going to want to start with this key:
In this registry key you will be able to see all of the interfaces that are detected by the O/S. Now, some of these will be WANminiport adapters, etc, so you will have to find the key associated with the NIC you wish to configure. In Figure-2 you can see that I was able to recognize the description of the adapter as the NIC I was after:
Once you have found the adapter of interest in the registry, drill down to the NDI\Params key. Once there, all of the parameters available on the card should be listed. You can see from Figure-3 that I chose the SpeedDuplex setting and under the Enum portion you can see the list of possible settings to choose from. Therefore, if I want to set my NIC to 100Mb/Full duplex I need to use a value of 4. It is very important to examine each parameter and determine what value you must use to get the expected result. Each vendor seems to use their own system choosing a value.
Now that I have the value that I need for the SpeedDuplex setting, I navigate back up the tree and enter the value into the configuration for the card. Figure-4 shows where I would make the change. In this case I would change the value from 0, as seen in the figure, to a 4:
Now, in my case I wanted to set the SpeedDuplex setting. This method should also be useful for turning off other features on the NIC such as “Large Send Offload” and “Jumbo Frames”.
I hope this article helps someone with their Windows Server 2008 Server Core configurations, but before you use this please consider all of the usual disclaimers about editing the registry and how badly it can screw up your day if you get things wrong.
Until next time.
– Steve Martin