System Administration Guide: IP Services

Administering Multipathing Groups With Multiple Physical Interfaces

This section describes how you enable IP Network Multipathing. To use the IP Network Multipathing feature, you should have more than one physical interface connected to the same IP link. For example, the same Ethernet switch or the same IP subnet, configured under the same multipathing group, works. If you have just one physical interface, refer to Administering Multipathing Groups With a Single Physical Interface.

Multipathing groups are identified by non-null names. For example, math-link, bio-link, and chem-link make good names. The names typically represent where these groups are connected. When failure is detected in one of the network adapters in the multipathing group, all network access is failed over from the failed adapter to the working adapter in the group. The failover of network access includes IPv4 unicast, broadcast, and multicast traffic, as well as IPv6 unicast and multicast traffic. For IP network multipathing to function properly, the following conditions must exist for the network adapters that are part of the same multipathing group:

  1. You must push and configure the same set of STREAMS modules on all network adapters in the multipathing group.

  2. If you have plumbed IPv4 on one network adapter, then you must plumb IPv4 on all network adapters in the multipathing group.

  3. If you have plumbed IPv6 on one network adapter, then you must plumb IPv6 on all network adapters in the multipathing group.

  4. All Ethernet network adapters in the system should have unique MAC address in the case of ethernets. This is achieved by setting the local-mac-address? to TRUE in the openboot PROM for SPARC platforms. Nothing needs to be done for IA (x86) platforms.

  5. All network adapters of the multipathing group must be connected to the same IP link.

  6. The multipathing group should not contain dissimilar interfaces. The interfaces that are grouped together should be of the same interface type that is defined in /usr/include/net/if_types.h. For example, you cannot combine Ethernet with Token ring, and you cannot combine a Token bus with asynchronous transfer mode (ATM).

  7. When you use IP network multipathing with ATMs, you must configure the ATM for LAN emulation (multipathing over classical IP instances is not currently supported).


Note –

The fourth condition concerns all interfaces in the system, not just those belonging to the multipathing group.


For the adapters that do not come with factory-set unique MAC addresses, you can manually configure a MAC address for each adapter as a workaround. For example, use the ifconfig ether command in a startup script file.


Note –

The MAC addresses configured manually cannot be maintained across system reboot. You are responsible for choosing unique MAC addresses. IP Network Multipathing might behave unpredictably if the MAC addresses of adapters are not unique.


Grouping Physical Interfaces

You use the ifconfig command to configure groups. This command uses a new group parameter that requires a group name and places both the IPv4 and IPv6 instances of the interface in that group. The group parameter has the following syntax:


ifconfig interface-name group group-name

Note –

Avoid using spaces in group names. The ifconfig status display does not show spaces. Consequently, if you have created two similar group names, but one of them contains a space, these group names look alike in the status display. However, they are different group names. This difference might be confusing.


Placing the IPv4 instance under a particular group automatically places the IPv6 instance under the same group. Also, you can place a second interface, connected to the same subnet, in the same group by using the same command. See How to Configure a Multipathing Interface Group With Two Interfaces.

You can remove an interface from a multipathing group by using a null string with the group sub-command. See How to Remove an Interface From a Group.

To place an interface in a new group when it is already part of some multipathing group, you do not need to remove it from any existing group. Placing the interface in a new group automatically removes it from any existing group. See How to Move an Interface From an Existing Group to a Different Group.

You can have any number of network adapters that you can configure in the same multipathing group. You cannot use the group parameter with logical interfaces. For example, you can use the parameter with hme0, but not with hme0:1.

You must connect all the interfaces in the multipathing group to the same IP link, because when an interface fails, the failover operation moves all the IP addresses from the failed interface to an interface in the group that is functional. For routers to continue routing packets to the addresses that have been switched to the functional interface, the functional interface must be connected to the same IP link.

Configuring Test Addresses

You must configure all physical interfaces of a multipathing group with a test address. You need test addresses to detect failures and repairs. If a test address is not configured, it is not chosen for failover. Only in.mpathd uses test addresses. Normal applications should not use this address. This address does not fail over when the interface fails. In IPv4, you should configure the test address in such a way that normal applications do not use the test address. See How to Configure a Multipathing Interface Group With Two Interfaces.

This section describes test address configuration concepts for the following Internet protocols:

IPv4 Test Addresses

The in.mpathd multipathing daemon requires a test IP address for detecting failures and repairs. You must use a routeable address for this IP address. That is, the subnet prefix of the address must be known to any routers present on the link. You use the ifconfig command's new -failover option to configure a test address. Use the following syntax to configure a test address:


# ifconfig interface-name addif ip-address <other-parameters> -failover up

For <other-parameters>, use the parameters that are required by your configuration. See the ifconfig(1M) man page for descriptions. How to Configure a Multipathing Interface Group With Two Interfaces shows the steps you perform for an IPv4 test address.

For example, to add a new logical interface with an address of 19.16.85.21, the netmask and broadcast address set to the default value, and also configure the interface with a test address, type the following:


# ifconfig hme0 addif 19.16.85.21 netmask + broadcast + -failover up

Note –

You must mark an IPv4 test address as deprecated to prevent applications from using the test address. See How to Configure a Multipathing Interface Group With Two Interfaces.


Use failover without the dash to turn on the failover attribute of the address.


Note –

All test IP addresses in a multipathing group must use the same network prefix. That is, the test IP addresses must belong to a single IP subnet.


IPv6 Test Addresses

To configure an IPv6 test address, you use the link-local address, because link-local addresses are tied to the physical interface. Thus, you do not need a separate IP address in the IPv6 situation. For IPv6, the -failover option has the following syntax:


# ifconfig interface-name inet6 -failover

How to Configure a Multipathing Interface Group With Two Interfaces shows the steps you perform for an IPv6 test address.

When a multipathing group has both IPv4 and IPv6 plumbed on all the group's interfaces, you might not need a separate IPv4 test address. The in.mpathd daemon can probe the interfaces by using an IPv6 link-local address. IPv6 link-local addresses are created when IPv6 is plumbed.

Use failover without the dash to turn on the failover attribute of the address.


Note –

The only valid IPv6 test address is the link-local address.


Preventing Applications From Using Test Addresses

After you have configured a test address, you need to ensure that this address is not used by normal applications. If you let applications use the test address, applications fail, because test addresses do not fail over during the failover operation. To ensure that IP does not pick the test address for normal applications, you mark the test address deprecated by using the ifconfig command. This parameter has the following syntax:


ifconfig interface-name deprecated

After you mark the address as deprecated, IP does not pick this address as a source address for any communication, unless the applications explicitly bind to the address. Only in.mpathd explicitly binds to such an address. See How to Configure a Multipathing Interface Group With Two Interfaces.

Because link-local addresses are not present in the name service (DNS, NIS, and NIS+), applications do not use link-local addresses for communication. Consequently, you do not need to mark IPv6 test addresses as deprecated.


Note –

You must not mark IPv6 link-local addresses as deprecated.


Use the -deprecated option to turn off the deprecated attribute of the address.


Note –

IPv4 test addresses should not be placed in the name service tables (DNS/NIS/NIS+). In IPv6, link-local addresses are used as test addresses and are not normally placed in the name service tables.


Autoconfigured IPv6 addresses are not preserved across system reboot. If you require that IP addresses be preserved across reboot, then applications should use static IP addresses.

Using the hostname File to Configure Groups and Test Addresses

You can use the /etc/hostname.interface files to configure multipathing groups and test addresses. To configure a multipathing group by using the /etc/hostname.interface file, you can add a line to the file by using the following syntax:


interface-address <parameters>  group group-name up \
addif logical-interface-address <parameters> up

For example, to create the group test with the following configuration:

You add the following line to the /etc/hostname.hme0 file:


19.16.85.19 netmask + broadcast + group test up \
addif 19.16.85.21 deprecated -failover netmask + broadcast + up

How to Configure a Multipathing Interface Group With Two Interfaces shows the steps you perform to configure the IPv4 hostname file.

For IPv6 setup, add a line to the /etc/hostname6.interface file by using the following syntax:


<parameter> group group-name up

For example, to create a test group for hme0 with an IPv6 test address, add the following line to the /etc/hostname6.hme0 file:


-failover group test up
addif 1080::56:a00:20ff:feb9:19fa up

How to Configure a Multipathing Interface Group With Two Interfaces shows the steps you perform to configure the IPv6 hostname6 file.

Configuring Standby Interfaces

You can configure multipathing groups with standby interfaces. As the name implies, the interface is considered as standby and is not used unless some other interface in the group fails. A standby interface has an IFF_INACTIVE flag when the interface is not hosting any failover IP address. Consequently, when an active interface fails, the standby interface is always chosen for failover. After the standby interface is chosen, the IFF_INACTIVE flag is cleared on the standby interface. From that instant, the active standby is treated the same as other active interfaces. That is, some failures might not choose a standby interface. Instead, some failures might choose an active interface that hosts fewer IP addresses than the standby interface.

The standby interface is not used to send normal data packets. Consequently, limited traffic flows on a standby interface. You must configure standby interfaces with a test address to ensure that probes are sent to determine if the interface is functional. If you do not configure standby interfaces with a test address, the interface is not chosen for failovers when another interface in the group fails. A standby interface might carry traffic under the following conditions:

Thus, the system does not normally select a standby interface (except for probes), unless it is explicitly chosen by an application. If some interface in the group fails, all network access is failed over to the standby interface. To configure a standby interface, you use the ifconfig command's new standby parameter by using the following syntax:


# ifconfig interface-name standby group group-name

How to Configure a Multipathing Group With One of the Interfaces a Standby Interface shows the steps you perform.

The in.mpathd daemon sends probes on the standby interface after a test address is configured on the standby interface. You should configure only test addresses on a standby interface. If any other address is added on the standby, the addition of this address fails. If standby is marked on an interface that already has addresses other than test addresses, automatic failover of these addresses occurs to a different interface in the group, leaving behind only the test address, if one exists. It is advisable not to configure non-test address on a standby interface.

You need to mark the address as a test address by using the ifconfig command's deprecated and -failover options before setting standby or setting up.

To configure a test address on a standby interface, use the following syntax:


# ifconfig interface-name plumb ip-address
   <other-parameters> deprecated -failover standby up

For <other-parameters>, use the parameters that are required by your configuration. See the ifconfig(1M) man page for descriptions.


Note –

Standby interfaces are not used for failover if no test address is configured on that interface.


For example, to create a test address with the following configuration:

You type the following command line:


# ifconfig hme2 plumb 19.16.85.22 netmask + broadcast + deprecated -failover standby up

Note –

The interface is marked as a standby interface only after the address is marked as a NOFAILOVER address.


How to Configure a Multipathing Group With One of the Interfaces a Standby Interface shows the steps you perform.

You can clear a standby interface by using the following syntax:


# ifconfig interface-name -standby