Less known Solaris features - IP Multipathing (Part 8): Classic IPMP
IPMP itself is a really old feature. It’s in Solaris for several versions now. Just the implementation I’ve described before is a new one. But in Solaris 10 you don’t have this new IPMP implementation. Solaris 10 still uses the old implementation. I will call the old implementation classic IPMP. The basic mechanism of new and classic IPMP is pretty much the same: Providing failure detection mechanisms and switch something to do a failover thus the data address stays available. But internally it’s a completely different implementation. While the new mechanism is certainly the future of IPMP, I’ m pretty sure you will old mechanism more often in the wild.
This example works with the same configuration, but you need a system with Solaris 10 or an Opensolaris System with a build earlier than 107. I just use Opensolaris on my lab machines, thus i used an virtualized Solaris 10 to explain the configuration of classic IPMP.
I will use the following addresses:
I will demonstrate this on a recent release of Solaris 10:
Link based classic IPMP
An important difference to the new IPMP implementation is the point that you doesn’t create a distinct IPMP interface because the concept of such a thing doesn’t exist in classic IPMP. With link based classic IPMP you just put the interfaces in a group
Let’s have a short look onto the network configuration.
The data address is directly bound to one of the interfaces. It’s important to know,that even when the ifconfig output suggest something different, outbound data flows to the network on both interfaces, not just the one which holds the data address.
Now unplug the cable connecting to e1000g0:
The data address was moved away from e1000g1 and a logical interface was created to hold it instead.
Probe based classic IPMP
The failure detection by IPMP probes is available in classic IPMP as well. Again all the configuration is done via ifconfig
Please note that you have to use the deprecated option to set the DEPRECATED flag on your own. New IPMP do this automagically. Forgetting this option leads to interesting, but not always obvious malfunctions. Let's check the network configuration.
Both interfaces have their test addresses. The data address is configured to an additional logical interface. As it’s the only interface without the -failover statement, this interface is automatically managed by IPMP. Now remove the cable from the e1000g0 networking card.
The virtual interface with the data address has moved from e1000g0 to e1000g1
Making the configuration boot persistent
Making the configuration boot-persistent works works pretty much the same in both implementation. As we used ifconfig commands again, we can use the hostname.* files. We just have to translate the command lines accordingly:
At first we configure the e1000g0 interface by creating the file /etc/hostname.e1000g0 containing a single line.
Afterwards we do the same for e1000g1. We create a file named /etc/hostname.e1000g1 and put the following line (and just this line) in it:
Now reboot the system. After a few moments you can get a shell and check your configuration.
Everything configured as we’ve planned it.
Okay, let’s do the same for the probe-based IPMP. This is the /etc/hostname.e1000g0 file configuring the test address on the physical interface and the data address:
The file /etc/hostname.e1000g1 with the following line will configures the e1000g1 interface of our system at boot:
Okay, reboot your system and you should yield an ifconfig output like this one afterwards.