IPMP Configuration – Solaris 10 vs Solaris 11

The Oracle Solaris 11 IP Multipathing (IPMP) feature has a new conceptual model.

  • The IP interfaces are now grouped into a “virtual” group IP interface (e.g. ipmp0) that serves all your data IP addresses while any test addresses (probe-based failure detection) are assigned to the underlaying interfaces (e.g. net0).
  • Furthermore the dladm command is now used for data-link layer administration and provides generic link names (e.g. net0) to the upper network layer.
  • The network layer (IP interface) administration itself is done by the ipadm command that replaces the ifconfig command and /etc/hostname.<intf> files.

Step 1: Use Manual (Fixed) Network Configuration Mode

You can run Oracle Solaris 11 in manual (fixed) and automatic (reactive) network configuration mode, so either the DefaultFixed network configuration profile (NCP) or the Automatic NCP is activated on the system.

IPMP requires the manual (fixed) network configuration mode resp. DefaultFixed NCP to be enabled:

# netadm list
netadm: DefaultFixed NCP is enabled; automatic network management is not available.
‘netadm list’ is only supported when automatic network management is active.

If you don’t see the output “DefaultFixed NCP is enabled”, please switch to DefaultFixed NCP:

# netadm enable -p ncp DefaultFixed
Enabling ncp ‘DefaultFixed’

Step 2: Configure the Link-Layer

The dladm command is used to configure datalinks.

Solaris 11 automatically provides generic link names for all the system’s physical network devices now. This name assignment uses the net# naming convention, where the # is the instance number, for example, net0, net1, net2, and so on.

For using the same physical network devices within your IPMP configuration as before on Solaris 10 you’ll have to find the right datalinks that are associated with those device instances.

# dladm show-phys
LINK MEDIA STATE SPEED DUPLEX DEVICE
net1 Ethernet unknown 0 unknown bge1
net0 Ethernet up 1000 full bge0
net2 Ethernet unknown 1000 full e1000g0
net3 Ethernet unknown 1000 full e1000g1

If you have used the physical links e1000g0 & e1000g1 for your IPMP configuration before, you will have to use the datalink interfaces net2 & net3 now.

NOTE: Datalinks can not only be based on physical links but also on aggregations, VLANs, VNICs, etc.

Datalink interfaces

Physical links (Ethernet, Infiniband, WiFi)
Link aggregations (IEEE 802.3ad aka 802.1AX)
VLANs (IEEE 802.1Q)
VNICs (virtual NICs)
Infiniband IP-over-IB partitions
IP tunnel links

e.g.

# dladm show-link
LINK CLASS MTU STATE OVER
net1 phys 1500 unknown —
net0 phys 1500 up —
net2 phys 1500 up —
net3 phys 1500 up —
vlan100 vlan 1500 up net2
vnic0 vnic 1500 up net3

Step 3: Ensure to Use Unique MAC addresses

It is required to have unique MAC addresses for all interfaces that are used in any IPMP group or that are on the same switched network (no VLANs).

# dladm show-linkprop -p mac-address
LINK PROPERTY PERM VALUE DEFAULT POSSIBLE
net1 mac-address rw 0:9:3d:11:91:1b 0:9:3d:11:91:1b —
net0 mac-address rw 0:9:3d:11:91:1a 0:9:3d:11:91:1a —
net2 mac-address rw 0:15:17:e:b0:2 0:15:17:e:b0:2 —
net3 mac-address rw 0:15:17:e:b0:3 0:15:17:e:b0:3 —

If this isn’t the case, please make sure that ‘local-mac-address?’ is set to ‘true’:

# eeprom local-mac-address?
local-mac-address?=true

If it isn’t set to ‘true’, please change it as follows:

# eeprom local-mac-address?=true

In very rare cases where you can’t configure unique MAC addresses via ‘local-mac-address?’ variable you can set an locally administered MAC address for a specific interface, e.g.

# dladm set-linkprop -p mac-address=<mac-address> <interface>

NOTE: Reboot the system after any changes to verify you have unique mac addresses now.

Step 4: Configure the Network-Layer

The ipadm command is used for IP interface administration and replaces the use of ifconfig and /etc/hostname.<intf> files.

Step 4.1: Create an IPMP interface (group)

Command:

 ipadm create-ipmp <IPMP-interface>

# ipadm create-ipmp ipmp0

Step 4.2: Add IP interfaces to the group

Commands:

ipadm create-ip <IP-interface>
ipadm add-ipmp -i <interface1> [-i interface2 …] <IPMP-interface>
ipadm add-ipmp -i <interface1>,<interface2>,[…] <IPMP-interface>

# ipadm create-ip net2
# ipadm create-ip net3
# ipadm add-ipmp -i net2 -i net3 ipmp0
# ipmpstat -g
GROUP GROUPNAME STATE FDT INTERFACES
ipmp0 ipmp0 ok — net3 net2

Step 4.3: Add Data IP Address(es) to the group

Command:

ipadm create-addr -T static -a <hostname or IP address> <IPMP-interface>/<arbitrary-string>

e.g.

/etc/hosts
10.157.49.86 ipmp0-data1
10.157.49.87 ipmp0-test1
10.157.49.88 ipmp0-test2

/etc/netmasks
10.157.49.0 255.255.255.0

# ipadm create-addr -T static -a ipmp0-data1 ipmp0/data1

# ipmpstat -a
ADDRESS STATE GROUP INBOUND OUTBOUND
ipmp0-data1 up ipmp0 net2 net3 net2

# ipmpstat -an
ADDRESS STATE GROUP INBOUND OUTBOUND
10.157.49.86 up ipmp0 net2 net3 net2

# ipmpstat -i
INTERFACE ACTIVE GROUP FLAGS LINK PROBE STATE
net3 yes ipmp0 ——- up disabled ok
net2 yes ipmp0 –mbM– up disabled ok

# ipadm show-addr
ADDROBJ TYPE STATE ADDR
ipmp0/data1 static ok 10.157.49.86/24

# ipadm show-addrprop ipmp0/data1
ADDROBJ PROPERTY PERM CURRENT PERSISTENT DEFAULT POSSIBLE
ipmp0/data1 broadcast r- 10.157.49.255 — 10.157.49.255 —
ipmp0/data1 deprecated rw off — off on,off
ipmp0/data1 prefixlen rw 24 — 24 1-30,32
ipmp0/data1 private rw off — off on,off
ipmp0/data1 reqhost r- — — — —
ipmp0/data1 transmit rw on — on on,off
ipmp0/data1 zone rw global — global —

# ipadm show-ifprop |grep ipmp0
IFNAME PROPERTY PROTO PERM CURRENT PERSISTENT DEFAULT POSSIBLE
net2 group ip rw ipmp0 ipmp0 — —
net3 group ip rw ipmp0 ipmp0 — —
ipmp0 arp ipv4 rw on — on on,off
ipmp0 forwarding ipv4 rw off — off on,off
ipmp0 metric ipv4 rw 0 — 0 —
ipmp0 mtu ipv4 rw 1500 — 1500 68-1500
ipmp0 exchange_routes ipv4 rw on — on on,off
ipmp0 usesrc ipv4 rw none — none —
ipmp0 group ip rw ipmp0 — ipmp0 —
ipmp0 standby ip rw off — off on,off

# ipadm show-ifprop |/usr/xpg4/bin/grep -e ipmp0 -e net2 -e net3
IFNAME PROPERTY PROTO PERM CURRENT PERSISTENT DEFAULT POSSIBLE
net2 arp ipv4 rw on — on on,off
net2 forwarding ipv4 rw off — off on,off
net2 metric ipv4 rw 0 — 0 —
net2 mtu ipv4 rw 1500 — 1500 68-1500
net2 exchange_routes ipv4 rw on — on on,off
net2 usesrc ipv4 rw none — none —
net2 group ip rw ipmp0 ipmp0 — —
net2 standby ip rw off — off on,off
net3 arp ipv4 rw on — on on,off
net3 forwarding ipv4 rw off — off on,off
net3 metric ipv4 rw 0 — 0 —
net3 mtu ipv4 rw 1500 — 1500 68-1500
net3 exchange_routes ipv4 rw on — on on,off
net3 usesrc ipv4 rw none — none —
net3 group ip rw ipmp0 ipmp0 — —
net3 standby ip rw off — off on,off
ipmp0 arp ipv4 rw on — on on,off
ipmp0 forwarding ipv4 rw off — off on,off
ipmp0 metric ipv4 rw 0 — 0 —
ipmp0 mtu ipv4 rw 1500 — 1500 68-1500
ipmp0 exchange_routes ipv4 rw on — on on,off
ipmp0 usesrc ipv4 rw none — none —
ipmp0 group ip rw ipmp0 — ipmp0 —
ipmp0 standby ip rw off — off on,off

# ifconfig -a
net2: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 45
inet 0.0.0.0 netmask ff000000
groupname ipmp0
ether 0:15:17:e:b0:2
net3: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 46
inet 0.0.0.0 netmask ff000000
groupname ipmp0
ether 0:15:17:e:b0:3
ipmp0: flags=8001000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4,IPMP> mtu 1500 index 44
inet 10.157.49.86 netmask ffffff00 broadcast 10.157.49.255
groupname ipmp0

# cat /etc/ipadm/ipadm.conf

_ifname=ipmp0;_family=2;_class=1;
_ifname=ipmp0;_family=26;_class=1;
_ifname=net2;_family=2;_class=0;
_ifname=net2;_family=26;_class=0;
_ifname=net3;_family=2;_class=0;
_ifname=net3;_family=26;_class=0;
_ifname=ipmp0;_underif=net2;
_ifname=ipmp0;_underif=net3;
_ifname=ipmp0;_aobjname=ipmp0/data1;_ipv4addr=ipmp0-data1,;up=yes;
_protocol=ip;_ifname=net3;standby=off;

Step 4.4 : Configure an IP interface into standby mode

If you want to run your IPMP configuration in an active/standby mode, you will have to set the standby property to the appropriate interface(s).

Command:

ipadm set-ifprop -p standby=on -m ip <interface>

e.g.

# ipadm set-ifprop -p standby=on -m ip net3

# ipadm show-ifprop |grep standby
IFNAME PROPERTY PROTO PERM CURRENT PERSISTENT DEFAULT POSSIBLE
lo0 standby ip rw off — off on,off
net0 standby ip rw off — off on,off
net2 standby ip rw off — off on,off
net3 standby ip rw on on off on,off
ipmp0 standby ip rw off — off on,off

# ipmpstat -i
INTERFACE ACTIVE GROUP FLAGS LINK PROBE STATE
net3 no ipmp0 is—– up disabled ok
net2 yes ipmp0 –mbM– up disabled ok

# ifconfig -a
net2: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 45
inet 0.0.0.0 netmask ff000000
groupname ipmp0
ether 0:15:17:e:b0:2
net3: flags=61000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4,STANDBY,INACTIVE> mtu 1500 index 46
inet 0.0.0.0 netmask ff000000
groupname ipmp0
ether 0:15:17:e:b0:3
ipmp0: flags=8001000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4,IPMP> mtu 1500 index 44
inet 10.157.49.86 netmask ffffff00 broadcast 10.157.49.255
groupname ipmp0

# cat /etc/ipadm/ipadm.conf

_ifname=ipmp0;_family=2;_class=1;
_ifname=ipmp0;_family=26;_class=1;
_ifname=net2;_family=2;_class=0;
_ifname=net2;_family=26;_class=0;
_ifname=net3;_family=2;_class=0;
_ifname=net3;_family=26;_class=0;
_ifname=ipmp0;_underif=net2;
_ifname=ipmp0;_underif=net3;
_ifname=ipmp0;_aobjname=ipmp0/data1;_ipv4addr=ipmp0-data1,;up=yes;
_protocol=ip;_ifname=net3;standby=on;

Step 4.5 : Enable Probe-Based Failure Detection

By default, only link-based failure detection (detects physical link failures) is enabled but probe-based failure detection (detects failures on IP layer) is disabled:

# ipmpstat -p
ipmpstat: probe-based failure detection is disabled

Solaris 11 IPMP provides two different methods for probe-based failure detection, the default method by using test addresses, and the transitive probing method without additional test addresses.

a) Use Transitive Probing

– Enable transitive probing

# svccfg -s svc:/network/ipmp setprop config/transitive-probing=true
# svcadm refresh svc:/network/ipmp:default

NOTE: With probe target(s) defined in the routing table, the in.mpathd sends out ICMP probes from the active interface(s) that can receive inbound IP packets (here: net2). The associated data address is used as the probe’s source address. The alternate interface(s) that cannot receive inbound packets (here: net3) will send transitive probes to the active interface.

# ipmpstat -an
ADDRESS STATE GROUP INBOUND OUTBOUND
10.157.49.86 up ipmp0 net2 net3 net2

# ipmpstat -t
INTERFACE MODE TESTADDR TARGETS
net3 transitive <net3> <net2>
net2 multicast ipmp0-data1 —

# ipmpstat -tn
INTERFACE MODE TESTADDR TARGETS
net3 transitive <net3> <net2>
net2 multicast 10.157.49.86 —

# ipmpstat -p
TIME INTERFACE PROBE NETRTT RTT RTTAVG TARGET
0.86s net3 t58 0.32ms 0.32ms 0.21ms <net2>
1.74s net3 t59 0.17ms 0.18ms 0.20ms <net2>
3.37s net3 t60 0.23ms 0.24ms 0.21ms <net2>
4.83s net3 t61 0.25ms 0.26ms 0.21ms <net2>

– Define specific probe targets [optional]

# route -p add -host 10.157.49.24 10.157.49.24 -static
add host 10.157.49.24: gateway 10.157.49.24

# pkill -HUP in.mpathd

# ipmpstat -t
INTERFACE MODE TESTADDR TARGETS
net3 transitive <net3> <net2>
net2 routes ipmp0-data1 10.157.49.24

# ipmpstat -tn
INTERFACE MODE TESTADDR TARGETS
net3 transitive <net3> <net2>
net2 routes 10.157.49.86 10.157.49.24

# ipmpstat -p
TIME INTERFACE PROBE NETRTT RTT RTTAVG TARGET
0.69s net3 t147 0.35ms 0.36ms 0.23ms <net2>
0.69s net2 i146 0.30ms 0.78ms 0.39ms 10.157.49.24
2.39s net3 t148 0.32ms 0.33ms 0.24ms <net2>
2.39s net2 i147 0.34ms 0.42ms 0.39ms 10.157.49.24

b) Use Test Addresses

– Disable transitive probing

# svccfg -s svc:/network/ipmp setprop config/transitive-probing=false
# svcadm refresh svc:/network/ipmp:default

– Define specific probe targets [optional]

# route -p add -host 10.157.49.24 10.157.49.24 -static
add host 10.157.49.24: gateway 10.157.49.24

# pkill -HUP in.mpathd

– Add test addresses

Command:

ipadm create-addr -T static -a <hostname or IP address> <interface>/<arbitrary-string>

# ipadm create-addr -T static -a ipmp0-test1 net2/test1
# ipadm create-addr -T static -a ipmp0-test2 net3/test2

# ipmpstat -t
INTERFACE MODE TESTADDR TARGETS
net3 routes ipmp0-test2 10.157.49.24
net2 routes ipmp0-test1 10.157.49.24

# ipadm show-addr
ADDROBJ TYPE STATE ADDR
net2/test1 static ok 10.157.49.87/24
net3/test2 static ok 10.157.49.88/24
ipmp0/data1 static ok 10.157.49.86/24

# ifconfig -a
net2: flags=9040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER> mtu 1500 index 45
inet 10.157.49.87 netmask ffffff00 broadcast 10.157.49.255
groupname ipmp0
ether 0:15:17:e:b0:2
net3: flags=9040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER> mtu 1500 index 46
inet 10.157.49.88 netmask ffffff00 broadcast 10.157.49.255
groupname ipmp0
ether 0:15:17:e:b0:3
ipmp0: flags=8001000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4,IPMP> mtu 1500 index 44
inet 10.157.49.86 netmask ffffff00 broadcast 10.157.49.255
groupname ipmp0

# ipmpstat -p
TIME INTERFACE PROBE NETRTT RTT RTTAVG TARGET
0.79s net3 i118 0.32ms 0.57ms 0.35ms 10.157.49.24
0.96s net2 i130 0.23ms 0.26ms 0.29ms 10.157.49.24
2.15s net3 i119 0.33ms 0.37ms 0.35ms 10.157.49.24
2.50s net2 i131 0.20ms 0.22ms 0.28ms 10.157.49.24

Step 4.6 : Add additional Deprecated Data IP Address(es) to the Group

If you need additional data IP addresses you should add them as deprecated IP interfaces. An IP address associated with an deprecated interface will not be used as source address for outbound packets unless either there are no other addresses available on the interface or we respond to incoming requests for that IP address.

# ipadm create-addr -T static -a 10.157.49.89 ipmp0/data2
# ipadm set-addrprop -p deprecated=on ipmp0/data2

# ipadm show-addrprop ipmp0/data2
ADDROBJ PROPERTY PERM CURRENT PERSISTENT DEFAULT POSSIBLE
ipmp0/data2 broadcast r- 10.157.49.255 — 10.157.49.255 —
ipmp0/data2 deprecated rw on on off on,off
ipmp0/data2 prefixlen rw 24 — 24 1-30,32
ipmp0/data2 private rw off — off on,off
ipmp0/data2 reqhost r- — — — —
ipmp0/data2 transmit rw on — on on,off
ipmp0/data2 zone rw global — global —

# ifconfig -a
net2: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 45
inet 0.0.0.0 netmask ff000000
groupname ipmp0
ether 0:15:17:e:b0:2
net3: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 46
inet 0.0.0.0 netmask ff000000
groupname ipmp0
ether 0:15:17:e:b0:3
ipmp0: flags=8001000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4,IPMP> mtu 1500 index 44
inet 10.157.49.86 netmask ffffff00 broadcast 10.157.49.255
groupname ipmp0
ipmp0:1: flags=8001040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,IPMP> mtu 1500 index 44
inet 10.157.49.89 netmask ffffff00 broadcast 10.157.49.255

Let’s look at some Sample Configiruations

NOTE: New ‘ifconfig -a’ outputs provided for better comparison with your previous Solaris 10 IPMP configuration(s).

1. Active/Active (Probe-based failure detection disabled – link-based only)

Groupname: ipmp0
Active interface(s): e1000g0
e1000g1
Standby interface(s): –
Data IP addresse(s): ipmp0-data1 (10.157.49.86/24)

Solaris 10:

/etc/hostname.e1000g0:
ipmp0-data1 netmask + broadcast + group ipmp0 up

/etc/hostname.e1000g1:
group ipmp0 up

Solaris 11:

# dladm show-phys |grep e1000g
net2 Ethernet up 1000 full e1000g0
net3 Ethernet up 1000 full e1000g1

# ipadm create-ipmp ipmp0
# ipadm create-ip net2
# ipadm create-ip net3
# ipadm add-ipmp -i net2 -i net3 ipmp0
# ipadm create-addr -T static -a ipmp0-data1 ipmp0/data1

# ipmpstat -g
GROUP GROUPNAME STATE FDT INTERFACES
ipmp0 ipmp0 ok — net3 net2

# ipmpstat -an
ADDRESS STATE GROUP INBOUND OUTBOUND
10.157.49.86 up ipmp0 net2 net3 net2

# ipmpstat -i
INTERFACE ACTIVE GROUP FLAGS LINK PROBE STATE
net3 yes ipmp0 ——- up disabled ok
net2 yes ipmp0 –mbM– up disabled ok

# ipmpstat -tn
INTERFACE MODE TESTADDR TARGETS
net3 disabled — —
net2 disabled — —

# ifconfig -a
net2: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 45
inet 0.0.0.0 netmask ff000000
groupname ipmp0
ether 0:15:17:e:b0:2
net3: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 46
inet 0.0.0.0 netmask ff000000
groupname ipmp0
ether 0:15:17:e:b0:3
ipmp0: flags=8001000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4,IPMP> mtu 1500 index 44
inet 10.157.49.86 netmask ffffff00 broadcast 10.157.49.255
groupname ipmp0

2. Active/Standby (Probe-based failure detection disabled – link-based only)

Groupname: ipmp0
Active interface(s): e1000g0
Standby interface(s): e1000g1
Data IP addresse(s): ipmp0-data1 (10.157.49.86/24)

Solaris 10:

/etc/hostname.e1000g0:
ipmp0-data1 netmask + broadcast + group ipmp0 up

/etc/hostname.e1000g1:
group ipmp0 standby up

Solaris 11:

# dladm show-phys |grep e1000g
net2 Ethernet up 1000 full e1000g0
net3 Ethernet up 1000 full e1000g1

# ipadm create-ipmp ipmp0
# ipadm create-ip net2
# ipadm create-ip net3
# ipadm add-ipmp -i net2 -i net3 ipmp0
# ipadm create-addr -T static -a ipmp0-data1 ipmp0/data1
# ipadm set-ifprop -p standby=on -m ip net3

# ipmpstat -g
GROUP GROUPNAME STATE FDT INTERFACES
ipmp0 ipmp0 ok — net2 (net3)

# ipmpstat -an
ADDRESS STATE GROUP INBOUND OUTBOUND
10.157.49.86 up ipmp0 net2 net2

# ipmpstat -i
INTERFACE ACTIVE GROUP FLAGS LINK PROBE STATE
net3 no ipmp0 is—– up disabled ok
net2 yes ipmp0 –mbM– up disabled ok

# ipmpstat -tn
INTERFACE MODE TESTADDR TARGETS
net3 disabled — —
net2 disabled — —

# ifconfig -a
net2: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 45
inet 0.0.0.0 netmask ff000000
groupname ipmp0
ether 0:15:17:e:b0:2
net3: flags=61000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4,STANDBY,INACTIVE> mtu 1500 index 46
inet 0.0.0.0 netmask ff000000
groupname ipmp0
ether 0:15:17:e:b0:3
ipmp0: flags=8001000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4,IPMP> mtu 1500 index 44
inet 10.157.49.86 netmask ffffff00 broadcast 10.157.49.255
groupname ipmp0

3. Active/Active (Probe-based failure detection enabled)

Groupname: ipmp0
Active interface(s): e1000g0
e1000g1
Standby interface(s): –
Data IP addresse(s): ipmp0-data1 (10.157.49.86/24)
Test IP addresse(s): ipmp0-test1 (10.157.49.87/24)
ipmp0-test2 (10.157.49.88/24)

Solaris 10:

/etc/hostname.e1000g0:
ipmp0-data1 netmask + broadcast + deprecated -failover group ipmp0 up \
addif ipmp0-test1 netmask + broadcast + up

/etc/hostname.e1000g1:
ipmp0-test2 netmask + broadcast + deprecated -failover group ipmp0 up

Solaris 11:

# dladm show-phys |grep e1000g
net2 Ethernet up 1000 full e1000g0
net3 Ethernet up 1000 full e1000g1

# ipadm create-ipmp ipmp0
# ipadm create-ip net2
# ipadm create-ip net3
# ipadm add-ipmp -i net2 -i net3 ipmp0
# ipadm create-addr -T static -a ipmp0-data1 ipmp0/data1
# ipadm create-addr -T static -a ipmp0-test1 net2/test1
# ipadm create-addr -T static -a ipmp0-test2 net3/test2

# ipmpstat -g
GROUP GROUPNAME STATE FDT INTERFACES
ipmp0 ipmp0 ok 10.00s net3 net2

# ipmpstat -an
ADDRESS STATE GROUP INBOUND OUTBOUND
10.157.49.86 up ipmp0 net2 net3 net2

# ipmpstat -i
INTERFACE ACTIVE GROUP FLAGS LINK PROBE STATE
net3 yes ipmp0 ——- up ok ok
net2 yes ipmp0 –mbM– up ok ok

# ipmpstat -tn
INTERFACE MODE TESTADDR TARGETS
net3 routes 10.157.49.88 10.157.49.24
net2 routes 10.157.49.87 10.157.49.24

# ipadm show-if
IFNAME CLASS STATE ACTIVE OVER
net2 ip ok yes —
net3 ip ok yes —
ipmp0 ipmp ok yes net2 net3

# ipadm show-addr
ADDROBJ TYPE STATE ADDR
net2/test1 static ok 10.157.49.87/24
net3/test2 static ok 10.157.49.88/24
ipmp0/data1 static ok 10.157.49.86/24

# ifconfig -a
net2: flags=9040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER> mtu 1500 index 45
inet 10.157.49.87 netmask ffffff00 broadcast 10.157.49.255
groupname ipmp0
ether 0:15:17:e:b0:2
net3: flags=9040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER> mtu 1500 index 46
inet 10.157.49.88 netmask ffffff00 broadcast 10.157.49.255
groupname ipmp0
ether 0:15:17:e:b0:3
ipmp0: flags=8001000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4,IPMP> mtu 1500 index 44
inet 10.157.49.86 netmask ffffff00 broadcast 10.157.49.255
groupname ipmp0

4. Active/Standby (Probe-based failure detection enabled)

Groupname: ipmp0
Active interface(s): e1000g0
Standby interface(s): e1000g1
Data IP addresse(s): ipmp0-data1 (10.157.49.86/24)
Test IP addresse(s): ipmp0-test1 (10.157.49.87/24)
ipmp0-test2 (10.157.49.88/24)

Solaris 10:

/etc/hostname.e1000g0:
ipmp0-data1 netmask + broadcast + deprecated -failover group ipmp0 up \
addif ipmp0-test1 netmask + broadcast + up

/etc/hostname.e1000g1:
ipmp0-test2 netmask + broadcast + deprecated -failover group ipmp0 standby up

Solaris 11:

# dladm show-phys |grep e1000g
net2 Ethernet up 1000 full e1000g0
net3 Ethernet up 1000 full e1000g1

# ipadm create-ipmp ipmp0
# ipadm create-ip net2
# ipadm create-ip net3
# ipadm add-ipmp -i net2 -i net3 ipmp0
# ipadm create-addr -T static -a ipmp0-data1 ipmp0/data1
# ipadm create-addr -T static -a ipmp0-test1 net2/test1
# ipadm create-addr -T static -a ipmp0-test2 net3/test2
# ipadm set-ifprop -p standby=on -m ip net3

# ipmpstat -g
GROUP GROUPNAME STATE FDT INTERFACES
ipmp0 ipmp0 ok 10.00s net2 (net3)

# ipmpstat -an
ADDRESS STATE GROUP INBOUND OUTBOUND
10.157.49.86 up ipmp0 net2 net2

# ipmpstat -i
INTERFACE ACTIVE GROUP FLAGS LINK PROBE STATE
net3 no ipmp0 is—– up ok ok
net2 yes ipmp0 –mbM– up ok ok

# ipmpstat -tn
INTERFACE MODE TESTADDR TARGETS
net3 routes 10.157.49.88 10.157.49.24
net2 routes 10.157.49.87 10.157.49.24

# ipadm show-if
IFNAME CLASS STATE ACTIVE OVER
net2 ip ok yes —
net3 ip ok no —
ipmp0 ipmp ok yes net2 net3

# ipadm show-addr
ADDROBJ TYPE STATE ADDR
net2/test1 static ok 10.157.49.87/24
net3/test2 static ok 10.157.49.88/24
ipmp0/data1 static ok 10.157.49.86/24

# ifconfig -a
net2: flags=9040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER> mtu 1500 index 45
inet 10.157.49.87 netmask ffffff00 broadcast 10.157.49.255
groupname ipmp0
ether 0:15:17:e:b0:2
net3: flags=69040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER,STANDBY,INACTIVE> mtu 1500 index 46
inet 10.157.49.88 netmask ffffff00 broadcast 10.157.49.255
groupname ipmp0
ether 0:15:17:e:b0:3
ipmp0: flags=8001000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4,IPMP> mtu 1500 index 47
inet 10.157.49.86 netmask ffffff00 broadcast 10.157.49.255
groupname ipmp0

Ramdev

Ramdev

I have started unixadminschool.com ( aka gurkulindia.com) in 2009 as my own personal reference blog, and later sometime i have realized that my leanings might be helpful for other unixadmins if I manage my knowledge-base in more user friendly format. And the result is today's' unixadminschool.com. You can connect me at - https://www.linkedin.com/in/unixadminschool/

2 Responses

  1. September 16, 2015

    […] Read – IPMP Configuration – Solaris 10 vs Read […]

  2. September 17, 2015

    […] Read – IPMP Configuration – Solaris 10 vs Read […]

What is in your mind, about this post ? Leave a Reply

Close
  Our next learning article is ready, subscribe it in your email

What is your Learning Goal for Next Six Months ? Talk to us