Intel® Ethernet 800 Series

Linux Performance Tuning Guide

ID Date Version Classification
636781 10/23/2023 Public
Document Table of Contents

​Adapter Bonding

Linux bonding is a powerful feature that significantly improves network performance, redundancy, and fault tolerance in server environments. However, it is important to note that it requires compatible network hardware and proper configuration on both the server and the switch to function properly.

The bonding driver in Linux allows you to aggregate multiple physical network interfaces into a bonded interface (bond). This bond appears as a single virtual network interface to the operating system and to applications.

Note:​Bond is a logical interface, so it is not possible to set CPU Affinity directly on the bond (for example, bond0). That is, the bond has no direct control over interrupt handling or CPU Affinity. CPU Affinity must be configured for the aggregated interfaces that are part of the bond.

Bonding provides several modes of operation, each with its own characteristics:

Mode Type
0 Round Robin
1 Active Backup
2 XOR
3 Broadcast
4 LACP
5 Transmit Load Balance
6 Adaptive Load Balance

Different methods to create Adapter Bonding in Linux are available. One of the most common methods is Configuration Using Network Configuration Files.

For example: /etc/network/interfaces

or

/etc/sysconfig/network-scripts/ifcfg-bondX

To create Adapter Bonding using the Configuration Using Network Configuration Files method:

  1. ​Select any two or more NIC ports for bonding. For example: ethX ethY
  2. ​Open the NIC configuration files for the required NIC interface: /etc/sysconfig/network-scripts/

    For example: vi ifcfg-ethX vi ifcfg-ethY

  3. Append the following text: MASTER=bondN (Note: NÒan integer to mention the bond number) SLAVE=yes
  4. ​Create a bond network script file, using: vi /etc/sysconfig/network-scripts/ifcfg-bondN
  5. Place the following text: DEVICE=bondN [Note: N -> an integer to mention the bond number] ONBOOT=yes USERCTL=no BOOTPROTO=dhcp (or) none IPADDR=200.20.2.4 [required if BOOTPROTO=none] NETMASK=255.255.255.0 [required if BOOTPROTO=none] NETWORK=200.20.2.0 [required if BOOTPROTO=none] BROADCAST=200.20.2.255 [required if BOOTPROTO=none] BONDING_OPTS="mode=1 miimon=100" Note:Mode can be any integer from 0 to 6 based on the requirement.
  6. ​Restart the network services, using: service network restart

    or

    systemctl restart NetworkManager.service