How To Bring Down A Single NIC In ESX?

I was installing a new ESX Host today, and before putting it into Production, I wanted to test that the Network Failover was working correctly.

Now instead of going over to the server and pulling out network cables, I started to think, there must be a way to do this (like all good administrators do) from the comfort of my desk.

Easiest would be – Log into the switch and shutdown the port. I agree, but what happens when your the Virtualization Team do not control the Physical network (my situation)? That was not an option.

I started to look if I could bring the interface down.

With regular Linux you would – ifdown eth0

[root@esx1 ~]# ifdown eth0  
usage: ifdown <device name>

So that did not work! Pretty obvious why though… There is no eth0 interface.

[root@esx1 ~]# ifconfig  
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0  
          UP LOOPBACK RUNNING  MTU:16436  Metric:1  
          RX packets:784233 errors:0 dropped:0 overruns:0 frame:0  
          TX packets:784233 errors:0 dropped:0 overruns:0 carrier:0  
          collisions:0 txqueuelen:0  
          RX bytes:3017478364 (2877.6 Mb)  ...:3017478364 (2877.6 Mb)

vmnic0    Link encap:Ethernet  HWaddr 00:1A:64:E5:31:38  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1  
          RX packets:6602129 errors:0 dropped:0 overruns:0 frame:0  
          TX packets:237757 errors:0 dropped:0 overruns:0 carrier:0  
          collisions:0 txqueuelen:1000  
          RX bytes:1130250120 (1077.8 Mb) ..es:195027359 (185.9 Mb)  
          Interrupt:113 Memory:92000000-92012100

vmnic1    Link encap:Ethernet  HWaddr 00:1A:64:E5:31:3A  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1  
          RX packets:505 errors:0 dropped:0 overruns:0 frame:0  
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0  
          collisions:0 txqueuelen:1000  
          RX bytes:303685 (296.5 Kb)  TX bytes:0 (0.0 b)  
          Interrupt:201 Memory:94000000-94012100

vswif0    Link encap:Ethernet  HWaddr 00:50:56:4C:43:11  
          inet addr:1.1.1.1  Bcast:1.1.1.255  Mask:255.255.255.0  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1  
          RX packets:2490053 errors:0 dropped:0 overruns:0 frame:0  
          TX packets:260404 errors:0 dropped:0 overruns:0 carrier:0  
          collisions:0 txqueuelen:1000  
          RX bytes:664363188 (633.5 Mb)  TX bytes:196222902 (187.1 Mb)

So I tried..

[root@esx1 ~]# ifdown vmnic0  
usage: ifdown <device name>

And that did not work either.

I did not want to shutdown the whole vSwitch – because then I would lose the connectivity (of course there is the possibility of creating the second Service Console – but this was not the case here)

The only way to do this is to manipulate the NIC’s directly. So what can you do with the physical NIC’s?

[root@esx1 ~]# esxcfg-nics  
esxcfg-nics <options> [nic]  
   -s|--speed <speed>      Set the speed of this NIC to one of 10/100/1000/10000.  
                           Requires a NIC parameter.  
   -d|--duplex <duplex>    Set the duplex of this NIC to one of 'full' or 'half'.  
                           Requires a NIC parameter.  
   -a|--auto               Set speed and duplexity automatically.  Requires a NIC parameter.  
   -l|--list               Print the list of NICs and their settings.  
   -r|--restore            Restore the nics configured speed/duplex settings (INTERNAL ONLY)  
   -h|--help               Display this message.**

So you cannot shut down the device, but you do the next best thing – set it to 10 Half-Duplex.

That will bring the port down.

[root@esx1 ~]#esxcfg-nics -s 10 -d half vmnic2

ESX network adapter list showing vmnic2, vmnic3, vmnic4 at 1000 Full on vSwitch1

ESX network adapter list showing vmnic2, vmnic3, vmnic4 at 1000 Full on vSwitch1

And to bring it back up

[root@esx1 ~]#esxcfg-nics -a vmnic2

Now unless there is a good reason – your ports should always be set to Auto-Negotiate, and in this casem when the nic was reset to auto – then it came back up without any issues.

The failover worked – so my experiment was successful.

ESX network adapter list showing vmnic2, vmnic3, vmnic4 at 1000 Full on vSwitch1

Some might call it being a lazy Bum – I call it being a Good Administrator!!

Hope you enjoyed the ride!