Solaris平台有一个多网卡的IPMP(IP network multipathing) 技术，在Oracle Database 11gR2中有很好的支持，今天结合前阵子整理的材料做一个简单介绍。
2 network interface cards 3 IP addresses
When configuring IP Multipathing for your Solaris host you will combine two or more physical network interfaces into an IPMP group. For each physical network interface that is in an IPMP group one IP address needs to be allocated for failure testing. These IP links will be used to periodically send an ICMP echo request to a target system and listen for the response. If no response occurs within a given number of tries the link is considered dead and will cause a failover of all application IP addresses currently configured on that physical interface to another physical interface within the IPMP group. IPMP also requires that each NIC has a unique MAC address. Before configuring IPMP verify that the local-mac-address? setting on the system PROM is set to true. # eeprom local-mac-address? local-mac-address?=true If it’s not set to true then run the following command to change the setting and then reboot the system # eeprom local-mac-address?=true
deprecated: This option specifies that an IP address should not be used for the transfer of application data. This means that this IP address will only be used as a test interface to determine if the network link is active and alive.
此网卡只能用来做 test,不能用来作数据传输, 检测网络是否失败，test ip?
-failover: No failover. The minus sign followed by the word ‘failover’ indicates that this IP address will not failover to another NIC in the IPMP group when a failure is detected. This is to keep an IP address assigned to a failed NIC so there will be a method for detecting when the failure has been fixed. 此IP地址不能进行failover，为了保证IP 修复以后可以检测到
group: The IPMP group that this interface belongs to. This IPMP group does not need to already exist, the first member of the group will create the group. The IPMP group name should not contain spaces. 组的概念
The in.mpathd daemon, responsible for handling IPMP, will select a system on the network to send IPMP echo requests for all test interfaces in the IPMP group
Failover Detection Time:
The time it takes for an interface to determine if it is failed is configured in the file /etc/default/mpathd. By default the FAILURE_DETECTION_TIME setting is set to 10000ms, or 10 seconds. The in.mpathd daemon is considered failed if 5 consecutive ICMP packets fail during this time period. So, in.mpathd will send 5 ICMP echo requests during this time period, or 1 packet every 2 seconds. If the FAILURE_DETECTION_TIME is set to 20000ms, or 20 seconds, then an ICMP packet is sent every 4 seconds.
Starting with Solaris 9 link-based IPMP was released. This uses the interfaces link state to determine the status of the network connection for failover/failback purposes. With link-based IPMP the failover will occur instantly when a link goes down. Since the failover is instantaneous and no extra IP addresses are required to build test interfaces, link-based IPMP is the preferred way to build redundant network interfaces on Solaris.
Link based IPMP can be configured as active/active or active/passive. Examples of both are provided below.
An attempt to assign an IP address to a standby interface will cause that IP to be configured on another NIC in the IPMP group. Notice in the following example an attempt to assign an IP address to e1000g1 will result in a new logical interface being configured on e1000g0. As long as the link status of one NIC in the IPMP group is good, then the standby interface will not allow any IP addresses to be configured on it.
# ifconfig e1000g1 addif 192.168.3.33 up Created new logical interface e1000g0:2
In an active/passive configuration you can setup as many virtual IP address on the active NIC as you want. However, if multiple IP addresses are to be used then it would probably make sense to use an active/active configuration for load balancing purposes.
Link-Based Failure Detection
These network interface drivers monitor the interface’s link state and notify the networking subsystem when that link state changes. When notified of a change, the networking subsystem either sets or clears the RUNNING flag for that interface, as appropriate. When the daemon detects that the interface’s RUNNING flag has been cleared, the daemon immediately fails the interface.
IPMP技术在Oracle Clusterware中既可以用来作为public network interface，也可以用来作为private interconnection, 甚至可以作为VIP进行配置。分别参考Oracle Notes:
Note 1069584.1:Solaris IPMP and Trunking for the cluster interconnect in
Note 368464.1:How to Setup IPMP as Cluster Interconnect
Note 730732.1:How to Configure Solaris Link-based IPMP for Oracle VIP
Note 283107.1:Configuring Solaris IP Multipathing (IPMP) for the Oracle
对于IPMP 技术在Clusterware 11gR2中的应用和详细配置以及注意事项，待续。