IPMP в OpenSolaris стала лучше. 
Основные отличия от Solaris10 IPMP:
- Появилась новая команда для просмотра статуса IPMP групп и интерфейсов - ipmpstat
ipmpstat -g -показывает статусы ipmp групп
ipmpstat -i -показывает статусы интерфейсов, входящих в ipmp группу
- Появилась возможность задавать свои имена интерфейсам. Во-первых, теперь можно дать интерфейсу осмысленное название (например private1, public0, clusterInt2). Во-вторых, при замене вышедшей из строя карточки на другую (например hme на bge) достаточно задать интерфейсу нужное имя и он автоматически подцепится IPMP.
- При создании IPMP группы создается соответствующий ip интерфейс, и ip адреса (data address) навешиваются именно на этот интерфейс а не на интерфейсы (undrelying interface), входящие в группу как это было раньше. Для создания такого интерфейса следует использовать новый синтаксис (explicit IPMP interface creation):
# ifconfig ipmp-interface ipmp [group group-name]
Старый синтаксис (implicit IPMP interface creation) поддерживается для обратной совместимости, но не рекомендуется.
Рассмотрим пример создания IPMP группы. Группу будем создавать с использованием интерфейсов e1000g0 и e1000g1:
1) переименуем интерфейсы e1000g0 и e1000g1
#ifconfig e1000g0 unplumb
#ifconfig e1000g1 unplumb
#dladm rename-link e1000g0 sub0
#dladm rename-link e1000g1 sub1
#ifconfig sub0 plumb
#ifconfig sub1 plumb
# ifconfig -a
lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
sub0: flags=1000842<BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 8
inet 0.0.0.0 netmask 0
ether 8:0:27:31:9b:e4
sub1: flags=1000842<BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 9
inet 0.0.0.0 netmask 0
ether 8:0:27:f7:78:d3
2) создадим ipmp интерфейс, и добавим в группу sub0 и sub1.
# ifconfig itops0 ipmp
# ifconfig sub0 group itops0 up
# ifconfig sub1 group itops0 standby up
# ifconfig -a
lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
sub0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 8
inet 0.0.0.0 netmask ff000000
groupname itops0
ether 8:0:27:31:9b:e4
sub1: flags=61000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4,STANDBY,INACTIVE> mtu 1500 index 9
inet 0.0.0.0 netmask ff000000
groupname itops0
ether 8:0:27:f7:78:d3
itops0: flags=8001000842<BROADCAST,RUNNING,MULTICAST,IPv4,IPMP> mtu 1500 index 10
inet 0.0.0.0 netmask 0
groupname itops0
Интерфейс sub1 добавлен в качестве standby интерфейса (т.е. будет задействован только в случае недоступности sub0). Это сделано исключительно в демострационных целях. В действительности больший смысл имеет конфигурация, в которой все интерфейсы активны, так как она позволяет автоматически распределять нагрузку.
3) зададим ip адрес для созданной группы (data address):
# ifconfig itops0 192.168.2.83/24 up
# ipmpstat -g
GROUP GROUPNAME STATE FDT INTERFACES
itops0 itops0 ok -- sub0 (sub1)
# ipmpstat -i
INTERFACE ACTIVE GROUP FLAGS LINK PROBE STATE
sub1 no itops0 is----- up disabled ok
sub0 yes itops0 --mb--- up disabled ok
В данной конфигурации ipmp судит о состоянии интерфейсов только по наличию линка (link-based test). Однако это вовсе не означает доступность интерфейса. Probe-based тесты подразумевает обмен icmp пакетами с определенными хостами. Однако для такой проверки физическому интерфейсу необходим ip адрес. Такой адресс называется test address и он не должен использоваться приложениями для обмена данных.
4) Добавим test address для sub0, чтобы включить probe-based тест. Мануалы настоятельно рекомендуют ставить опцию -failover ДО ip адреса и опции up.
# ifconfig sub0 -failover 192.168.2.85/24
# ipmpstat -g
GROUP GROUPNAME STATE FDT INTERFACES
itops0 itops0 ok 10.00s sub0 (sub1)
# ipmpstat -i
INTERFACE ACTIVE GROUP FLAGS LINK PROBE STATE
sub1 no itops0 is----- up disabled ok
sub0 yes itops0 --mb--- up ok ok
Ключ -t показывает текущие таргеты для probe тестов, а -p покажет статистику тестовых пакетов:
# ipmpstat -t
INTERFACE MODE TESTADDR TARGETS
sub1 disabled -- --
sub0 multicast 192.168.2.85 192.168.2.22 192.168.2.9 192.168.2.24 192.168.2.17 192.168.2.12
# ipmpstat -p
TIME INTERFACE PROBE NETRTT RTT RTTAVG TARGET
0.65s sub0 171 3.89ms 24.51ms 5.22ms 192.168.2.24
2.49s sub0 172 1.41ms 2.08ms 2.51ms 192.168.2.17
3.48s sub0 173 1.63ms 2.30ms 2.74ms 192.168.2.12
4.90s sub0 174 1.54ms 2.28ms 2.44ms 192.168.2.22
^C
Так же в ipmp реализован аналог балансировки нагрузки (load spreading). Исходящий трафик автоматически распределяется между активными интерфейсами на основе адреса получателя (per-destination basis by the IPmodule). Балансировка входящего трафика осуществляется косвенно, путем изменения адреса отправителя (source address selection algorithm). Кроме того, можно комбинировать link aggregation и ipmp.