How does the mapping from a virtual network adapter to a physical adapter work?

Adapted from Chapter 7 of the Virtual Server 2005 R2 Resource Kit book from Microsoft Press

So you are trying to figure out how a virtual machine network adapter is mapped to a physical network adapter in the host through a virtual network. Maybe you moved a virtual machine between hosts and it now gives an error about not finding XYZ virtual network and will be binding to the default virtual network.

There are three pieces to this puzzle.

  1. The options.xml configuration file of the Virtual Server host contains the physical network adapters that have the Virtual Machine Network Services (VMNS) bound to them.
  2. The virtual network configuration (.vnc) file has the mapping to the physical adapter
  3. The virtual machine configuration file has the mapping to the virtual networks it is attached.

To trace a virtual machines mappings, open the .vmc file and look for entries for each virtual network adapter that specifies the ID of the virtual_network that the VM it is attached to. You can see by this example, that the id value is 00D67AACDFC2499DBD9222F7A0A29D54. Record this value.

<ethernet_controller id="0">
                <ethernet_card_address type="bytes">0003FF1B6AD5</ethernet_card_address>
                <id type="integer">5</id>
                <virtual_network>
                        <id type="bytes">00D67AACDFC2499DBD9222F7A0A29D54</id>
        <name type="string">Wireless</name>
                </virtual_network>

Now open up the .vnc file for the virtual network that is attached. Search for the ID that you just recorded, then write down the <gateway> value. You will need this to determine which physical adapter it is bound.

<settings>
            <gateway type="integer">22</gateway>
    <id type="bytes">00D67AACDFC2499DBD9222F7A0A29D54</id>

Now open up the options.xml file and search each virtual_gateway entry for a value of id that matches the <gateway> value from the .vnc file.

<virtual_gateway id="7">
        <adapter type="string">\DosDevices\VPCNetS2_{CA746289-F2E6-405A-B7C2-E2595ACA750A}</adapter>
        <id type="integer">22</id>
        <name type="string">Intel(R) PRO/Wireless 3945ABG Network Connection #2</name>
        <type type="integer">2</type>
    </virtual_gateway>

Now look at the name value and you know which physical adapter your virtual machine is attached!