Finally, I got tired of remembering which network interfaces is configured on my Netra test box. So I do not have to remember which interface to plug cable into I configured IPMP on the box. IPMP provides link redundancy among multiple network interfaces in multipathing group. IPMP is not meant to be full fledged load balancing solution, though it will spread outgoing traffic across the interfaces.
I have put my two hme interfaces into a multipathing group. The group has a failover IP address assigned to it. Initially this address will be assigned to hme0. If hme0 fails, the address will automatically move to the other interface in the failover group.
First I edited /etc/hostname.hme0:
unreal-hme0 netmask + broadcast + deprecated -failover group unrealgrp1 up addif unreal netmask + broadcast + failover up
This configures physical hme0 with IP address of 192.168.11.6, which will not fail over and puts hme0 in unrealgrp1 multipathing group. It will additionally configure a virtual IP address of 192.168.11.5 which will failover when hme0 link goes down. Deprecated means the IP address 192.168.11.5 will not be used as source address for any outgoing packets.
Then I edited /etc/hostname.hme1:
unreal-hme1 netmask + broadcast + deprecated -failover group unrealgrp1 up
Similarly, hme1 will be configured with IP address of 192.168.11.7 and as a member of unrealgrp1 multipathing group. Again, 192.168.11.7 is marked as deprecated so it will not be used for outgoing packets. Finally I made sure my hosts file is correct:
bash-3.00# cat /etc/hosts 127.0.0.1 localhost 192.168.11.5 unreal loghost 192.168.11.6 unreal-hme0 192.168.11.7 unreal-hme1
And here is the result:
bash-3.00# ifconfig -a lo0: flags=2001000849 mtu 8232 index 1 inet 127.0.0.1 netmask ff000000 hme0: flags=9040843 mtu 1500 index 2 inet 192.168.11.6 netmask ffffff00 broadcast 192.168.11.255 groupname unrealgrp1 ether 8:0:20:d9:ac:c hme0:1: flags=1000843 mtu 1500 index 2 inet 192.168.11.5 netmask ffffff00 broadcast 192.168.11.255 hme1: flags=19040803 mtu 1500 index 3 inet 192.168.11.7 netmask ffffff00 broadcast 192.168.11.255 groupname unrealgrp1 ether 8:0:20:d9:ac:d
Essentially IP address 192.168.11.5 “floats” among interfaces. If I were to unplug hme0, 192.168.11.5 would fail over to hme1. Failure is detected on link loss. There are some tunable parameters in /etc/default/mpathd.
This is all I needed. Of course, there is much more to IPMP: you can setup test system, that your system will test for reachability, detection of interfaces missing on boot, etc. Sun has much more info on it here.