Bonding is an operating-system feature that provides NIC redundancy and sometimes load balancing by combining multiple interfaces into a single logical interface. Oracle RAC sees only one IP address on the bonded interface.
HAIP, introduced in Oracle RAC 11.2.0.2, operates at the Grid Infrastructure layer and provides Oracle-aware load balancing and failover across multiple private interconnects. In Exadata, HAIP is preferred because it allows RAC Cache Fusion traffic to use both InfiniBand fabrics simultaneously while automatically handling NIC or switch failures.
Linux bonding supports multiple modes, including active-standby, active-backup and active-active modes such as round-robin and LACP. However, in Oracle RAC and Exadata environments, HAIP is preferred because it provides Oracle-aware load balancing and failover across multiple interconnect interfaces, allowing Cache Fusion traffic to use all available private networks and automatically recover from NIC or switch failures
HAIP vs Bonding
| Feature | Bonding | HAIP |
|---|---|---|
| Layer | OS Layer (Linux) | Oracle Grid Infrastructure Layer |
| Introduced By | Linux | Oracle RAC 11.2.0.2 |
| Redundancy | Yes | Yes |
| Load Balancing | Depends on bonding mode | Yes |
| Active-Active | Depends on mode | Yes |
| Active-Standby | Possible | No |
| Oracle Aware | No | Yes |
| Automatic NIC Failover | Yes | Yes |
| Automatic Switch Failover | Yes | Yes |
| Multiple Interconnect Utilization | Limited | Excellent |
| RAC Recommended | Older approach | Preferred approach |
Why RAC HAIP Instead of Bonding?
- Even if bonding is active-active: Oracle RAC sees
ONE interface
ONE IP
ib0 & ib1 ---> bond0 ---->192.168.10.11
- HAIP gives RAC visibility into multiple interconnects:
ib0 ----> 172.16.1.x
ib1 ----> 172.16.2.x
HAIP1 -> 169.254.x.x
HAIP2 -> 169.254.y.y
Benefits:
- Oracle-managed failover
- Oracle-managed load balancing
- Multiple active interconnect paths
- Better Cache Fusion distribution
Exadata Example:
Both fabrics are utilized simultaneously.
---------->ib0 ---->Switch A
|
Cache Fusion --->
|
--------->ib1 -----> Switch B
If Switch A fails:
HAIP on ib0 ---> moves to -> ib1