Intel® Ethernet 700 Series

Linux Performance Tuning Guide

ID Date Version Classification
334019 12/09/2024 1.1 Public
Document Table of Contents

​Adapter Bonding

Linux bonding is a powerful feature that can significantly improve the 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. This bonded interface appears as a single virtual network interface to the operating system and applications.

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

Bonding provides several modes of operations, 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

There are different methods to create a bonding in Linux. One of the most common methods is by using network configuration files (for example, /etc/network/interfaces or /etc/sysconfig/network-scripts/ifcfg-bondX).

Configuration Using Network Configuration Files

The following steps create bonding throught the network configuration files.

  1. ​Select two or more NIC ports for bonding (for example, ethX and ethY)
  2. ​Open NIC Configuration Files under /etc/sysconfig/network-scripts/ for the required NIC Interface (for example, vi ifcfg-ethX and vi ifcfg-ethY) and append the following text: MASTER=bondN [Note: N is an integer to mention the bond number.] SLAVE=yes
  3. ​Create a bond network script file using vi /etc/sysconfig/network-scripts/ifcfg-bondN and enter the following text: DEVICE=bondN [Note: N is 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.
  4. ​Restart the network services using service network restart or systemctl restart NetworkManager.service