Configure Link based IPMP in Solaris

For long we used Tracking IP basd IPMP wherein we track the availability of a gateway on the network using ICMP Echo request. When the gateway IP fails to respond it is considered link is unavailable and NIC fails over to the standby NIC in the IPMP group.

The biggest disadvantage here is that we use 3 IP addresses:
1 for the Virtual IP
1 for the active NIC
1 for the Standby NIC
and ofcourse the overhead of the ICMP echo requests sent every seconds.
This can be overcome using the Link based IPMP configuration where you only need only IP Address and there is no overhead of ICMP messages and the failover delay is lot lesser than that of the tracking method. And the added advantage of a very simple configuration.
To configure Link based IPMP, create the hostname.<int name> files for the Active NIC and the standby NIC. For instance here, we use the bge0 and bge3 NICs as the IPMP pair where bge0 is active and bge3 is standby and hence the files hostname.bge0 and hostname.bge3.
To configure Link based IPMP, create the hostname.<int name> files for the Active NIC and the standby NIC. For instance here, we use the bge0 and bge3 NICs as the IPMP pair where bge0 is active and bge3 is standby and hence the files hostname.bge0 and hostname.bge3.
root@solaris10:/etc # ls -l hostname*
-rw-r–r–   1 root     root          55 May  6 11:23 hostname.bge0
-rw-r–r–   1 root     root          23 May  6 11:23 hostname.bge3
Edit the hostname.bge0 file and enter the following:
root@solaris10:/etc # vi hostname.bge0
solaris10 netmask + broadcast + group sol10-ipmp up
where,
solaris10” is the hostname which should have a corresponding host entry in the /etc/hosts file.
sol10-ipmp is the name of the IPMP group.
Edit the hostname.bge3 and the following
root@solaris10:/etc # vi hostname.bge3
group sol10-ipmp up
Here as you can see the standby NIC only has IPMP group configuration. This is all is needed to setup Link based IPMP. When the server is rebooted this configuration should take effect
To do this on the fly, we can use the ifconfig command:
NIC bge0
root@solaris10:/etc # ifconfig bge0 plumb
root@solaris10:/etc # ifconfig bge0 192.168.0.1 netmask 255.255.255.0 group sol10-ipmp up
NIC bge3
root@solaris10:/etc # ifconfig bge3 plumb
root@solaris10:/etc # ifconfig bge3 group sol10-ipmp up
root@solaris10:/etc # ifconfig -a
lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
bge0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
inet 192.168.0.1 netmask ffffff00 broadcast 192.168.0.255
groupname sol10-ipmp
ether 0:a:1d:ee:ab:cd
bge3: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 5
inet 0.0.0.0 netmask ff000000 broadcast 0.255.255.255
groupname sol10-ipmp
ether 0:a:1d:ee:ab:d2

This should do.

To test failover, you can do the hard way of pulling the cables  or use if_mpadm command as follows:
To failover:
root@solaris10:/etc # if_mpadm -d bge0
To failback
root@solaris10:/etc # if_mpadm -r bge0

7 thoughts on “Configure Link based IPMP in Solaris”

  1. why you don’t test your configuration whith +
    “ifconfig bge0 unplumb” i would like to see what can happen

  2. Hey there.I can not find name of my NiC card and the IP address in Solaris 10 I just intalled and do not want to reinstall it.But I inserted the Solaris 10 dvd trying to locate my nic card which I finally found in /dev/bge0 now I am having hard time to install it with pkgadd -a .Can anyone help me out how to install this bge0

  3. Solomon, Check in dmesg and grep for the device name. You have to assign an ip to the nic card unless of course you are using dhcp. Than an ifconfig -a should do the trick. Check this link which is a basic networking in Solaris 10. Good luck.

  4. @MaVa: unplumb will unconfigure your NIC from your system. IPMP gives us “link/connection redundancy” not “nic redundancy”. Doing an unplumb with destroy the whole IPMP group any way.

  5. Your “hostname.bge3” file is incorrect. It should be “solaris10 sol10-ipmp standby up” for active/standby configuration.

  6. The suggested config is quick and easy; we used it with success. Thank you!
    Recently, by means of snoop I found that Solaris occasionally sends some data packets through the standby interface; netstat -i showed about 0.8%.
    This can cause a hick-up in certain firewalls and load balancers. Normally the hick-up is a little delay, nothing to really worry about.
    Still this can be avoided by adding a standby parameter:
    ifconfig bge3 group sol10-ipmp standby up
    (ifconfig bge3 solaris10 group sol10-ipmp standby up gives an error message!?)
    /etc/hostname.bge3 becomes:
    group sol10-ipmp standby up
    Now nothing (but HW broadcasts) is sent to the standby interface.
    The drawback is that ifconfig -a looks a bit ugly now:

    bge0: flags=1000843 mtu 1500 index 2
    inet 192.168.0.1 netmask ffffff00 broadcast 192.168.0.255
    groupname sol10-ipmp
    ether 0:a:1d:ee:ab:cd
    bge0:1: flags=1000843 mtu 1500 index 2
    inet 0.0.0.0 netmask ff000000 broadcast 0.255.255.255
    bge3: flags=1000842 mtu 0 index 3
    inet 0.0.0.0 netmask ff000000 broadcast 0.255.255.255
    groupname sol10-ipmp
    ether 0:a:1d:ee:ab:d2

Leave a Comment

Your email address will not be published. Required fields are marked *