Category Archives: Networking

Linux VMs running Hyper-V lose network connectivity when Live Migrated or Restarted

I ran into a problem not too long ago where a Linux VM running in Hyper-V lost network connectivity when it was restarted, or when it was Live Migrated between hosts in a Hyper-V cluster.

At first I verified all of the normal things, I made sure it was connected to the right Virtual Network, I made sure the Microsoft Network Virtual Switch Protocol was the only protocol enabled on the NIC for that Virtual Network on both Hosts in the cluster. I also made sure that the VM was using a Legacy Network Adapter instead of a Network Adapter.

I logged into the VM itself via the console and ran an ifconfig, the only adapter that showed up was lo (the loopback adapter). I thought this was odd, as I just configured eth0 not too long ago. I verified that the /etc/network/interfaces file had the proper network settings configure for eth0, which it did.

At this point I had to do some research and I found that the newer linux kernels use the MAC address of the NIC instead of the hardware ID of the device to assign a logical eth number to each network card. I checked within the VM’s Settings and sure enough the Legacy Network Adapter on the VM was set to dynamic MAC address instead of Static. I changed the setting to Static, and kept the currently assigned MAC address as it’s static MAC address.

Inside the VM I can an ifconfig -a and saw that interface eth1 was available, but not configured. I edited the /etc/network/interfaces file to say eth1 instead of eth0 and then restarted the networking services by issuing the following command: sudo /etc/init.d/networking restart. Sure enough I was able to start accessing the network.

I did a restart and a Live Migration and was able to continue accessing the network.

Configuring Dell 54xx Series and 62xx Series Switches – Cheat Sheet

In preparation for a few writes up that I’ll be posting up here soon I wanted to go through a some of the more common things you’d probably want to do with the Dell 54xx and 62xx series of switches. Why Dell switches? The foremost answer is cost, for around $1000.00 you can get yourself a nice 48 port managed gigabit switch with a great selection of functionality. Is it better then the equivalent Cisco? Not nessesarily, but it’s also a half of the cost.

One of the reasons I like these so much, is the fact that if you’re putting together a large order with Dell, you can get them to toss these in for hundreds off of the list price, and it’s a single point of support if you need to call dell for any SAN or Networking support.

So, What are some things you’d like to do with these? The more common things that I find myself configuring are:

  • VLANs
  • LAG Groups (Cisco calls these Ether-Channels)
  • Configuring Spanning Tree and Rapid Spanning Tree Protocols
  • Configuring PortFast

Assuming that you’ve already ran through the startup wizard, given the switch a username, password, IP address, Mask, and Gateway…

Configuring VLANs

  1. Telnet into the switch (or use the console)
  2. Type ” config ” to enter config mode
  3. The first order of business when configuring VLANs is to define which VLANs should be active on this switch. Type ” vlan database ” to enter the vlan configuration mode.
  4. Type ” vlan ## ” where ## is any number between 2 and 4094. Repeat this step for each VLAN that you’d like to define on this switch.

Once you’ve created the VLANs you can assign ports to each VLAN in one of two modes, Access or Trunk.

Access ports strip off the VLAN header from the TCP/IP packet and pass that traffic out that switch port without VLAN tags on it. Traffic coming into this switch port without a VLAN tag will have the VLAN tag added to it with the ID that the port is assigned to. The exception to this is VLAN 1 which is always untagged. Access ports are used to connect to Client computers, Printer, “dumb” switches that don’t understand VLANs or anything else that would not know what to do with a VLAN tag. Access ports can only be assigned to one VLAN at a time.

Trunk ports on the other hand can be assigned multiple VLANs at once. The reason for this is to allow you to pass traffic for each VLAN over single link to another switch. Trunk links don’t strip off the VLAN tag from the TCP/IP packets, and instead forward the packet in tact. This allows to receiver of the packet to identify what packets belong on what VLANs, any untagged packets are put onto VLAN 1.

To configure an Access Port:

  1. From the config# prompt type: ” interface ethernet g# ”  where the # the port number of the switch (to configure a range of ports at once type ” interface range ethernet g#-@ ”  where the # is the first port in the range, and @ is the last port in the range)
  2. From the config-if# prompt type: ” switchport mode access ” (this is the default, but also the way you switch back from being a trunk port)
  3. Fromt the config-if# prompt type: ” switchport access vlan # ”  Where # is the VLAN you want to assign to this port. To change back to the default setting type: ” switchport access vlan 1

To configure a Trunk Port:

  1. From the config# prompt type: ” interface ethernet g# ”  where the # the port number of the switch (to configure a range of ports at once type ” interface range ethernet g#-@ ”  where the # is the first port in the range, and @ is the last port in the range)
  2. From the config-if# prompt type: ” switchport mode trunk
  3. From the config-if# prompt type: ” switchport trunk allowed vlan add # ” where # is the VLAN number you want to add to the trunk. Repeat this step for each VLAN you want to add to the trunk. to remove a VLAN from a trunk type: ” switchport trunk allowed vlan remove #
  4. Make sure you configure both sides of a trunk link with the same VLANs or the traffic wont get passed between the switches.

To configure VLANs on LAG Groups (Ether channels) substitute ” interface port-channel # ” for ” interface ethernet g# ” in the above commands.

It may become necessary to change which VLAN is the un-tagged VLAN for a trunk link. If you need to do this you can use this command: ” switchport trunk native vlan XX ” where XX is the VLAN that should have its traffic passed WITHOUT VLAN tags (typically VLAN 1). You’ll have to perform this step on both ports that makeup the trunk link.

Configuring LAG Groups

LAG groups are a collection of links between switches, or server NIC teams where more than 1 ethernet cable can be combined into one logical connection. This allows for 2 gigabit ethernet cabled to make a 2 gigabit logical connection, or 4 cables to make a 4 gigabit logical connection. This is a great way to make a switching backbone, or to create multiple links between switches that can be used for load balancing instead of just redundancy.

  1. Telnet into the switch (or use the console)
  2. Type ” config ” to enter config mode
  3. Type ” interface ethernet g# ” or ” interface range ethernet g#-# ” to select one or a range of interfaces to add to the LAG group.
  4. Type ” channel-group # mode auto ” where # is the number of the LAG group you are adding the switch ports to, normally 1-8.

Verifying a LAG Group

  1. First make sure that the switch on the other end of the LAG group is also configured.
  2. To verify that the LAG is active and working properly type ” exit ” until you’re back at the config# prompt. Type ” show interfaces port-channel
  3. the output will tell you what ports are members of the LAG, and which ones are active.

Configuring Spanning Tree Protocol

Spanning Tree prevent loops in the switching fabric. Which is to say it keeps you from screwing things up (well not you, you never make mistakes, but it keeps co-workers from breaking things, yeah we’ll go with that). If you were to plug a switch port back into the same switch, or if you were to connect two switches together with more than 1 cable (and not create a LAG group) you’d quickly figure out that your switching fabric has become completely saturated with broadcasts, as you switches pass broadcasts back and forth between each other.

Spanning Tree is a global feature that’s turned on at the switch level and not the port level. You turn on Spanning Tree by performing the following:

  1. Telnet into the switch (or use the console)
  2. Type ” config ” to enter config mode
  3. Type ” spanning-tree
  4. That’s it. That’s all there is to it, but spanning tree takes quite awhile for the database to converge, so in more modern switches you can also configure Rapid Spanning Tree protocol which is done by typing in ” spanning-tree mode rstp
  5. If you have an environment that contains switches or devices that don’t understand Rapid Spanning Tree, but do understand Spanning Tree you can run both side by side by entering ” spanning-tree mode mstp ” the Spanning Tree type used will depend on the type being used by the neighboring device.

Configuring PortFast

PortFast is a way of speeding up Spanning Tree on interface ports that are KNOWN to not be connected to anything other than a end device, such as a Printer, Server, Workstation, etc. Spanning Tree takes some time to figure out where all of the loops are in the switching fabric, this isn’t a problem if the switching network has been up and running for awhile, or if a single switch is rebooted, but let’s say your entire switching network lost power all at once and were rebooted, the Spanning Tree protocol could take up to 2 minutes or more to fully converge and during this time no one would be able to send traffic over the switches. PortFast is a way to tell the switches that we KNOW nothing on this port will cause a loop, it’s okay to allow it to pass traffic without Spanning tree being fully converged.

To enable PortFast on an interface:

  1. Telnet into the switch (or use the console)
  2. Type ” config ” to enter config mode
  3. Type ” interface ethernet g# " to enter the config-if# prompt
  4. Type “ spanning-tree portfast ” To disable portfast type ” no spanning-tree portfast