mirror of
https://github.com/clearlinux/clear-linux-documentation.git
synced 2026-09-02 03:41:34 +00:00
131 lines
3.9 KiB
ReStructuredText
131 lines
3.9 KiB
ReStructuredText
.. _network-bonding:
|
|
|
|
Combine multiple interfaces with network bonding
|
|
################################################
|
|
|
|
This guide describes how to configure systemd to use the :command:`bonding`
|
|
driver.
|
|
|
|
Network bonding combines multiple network interfaces into a single logical
|
|
interface to provide redundancy and bandwidth aggregation.
|
|
|
|
|CL-ATTR| includes the Linux `Bonding driver`_ and `Team driver`_ .
|
|
|
|
The example demonstrates how to:
|
|
|
|
* Bond all four ports of a quad-port NIC in 802.3ad mode.
|
|
|
|
* Enable jumbo frames to optimize large data transfers on the local network.
|
|
|
|
Your NICs and network switch must support 802.3ad mode and jumbo frames. The
|
|
example explains how to configure your NICs for both features. Your switch may
|
|
require additional configuration. See your switch documentation for details.
|
|
|
|
.. note::
|
|
|
|
You must run all commands in this guide as root.
|
|
|
|
#. Log in and get root privileges.
|
|
|
|
.. code-block:: console
|
|
|
|
sudo -s
|
|
|
|
#. Create the :file:`/etc/systemd/network` directory.
|
|
|
|
.. code-block:: bash
|
|
|
|
mkdir -p /etc/systemd/network
|
|
|
|
The :file:`/etc/systemd/network` directory contains configuration files and
|
|
network settings for the virtual device and its underlying physical
|
|
interfaces.
|
|
|
|
#. Configure systemd to create a virtual network device called `bond1`. Use a
|
|
text editor to create a file named :file:`30-bond1.netdev`.
|
|
|
|
.. code-block:: console
|
|
|
|
[NetDev]
|
|
Name=bond1
|
|
Kind=bond
|
|
|
|
[Bond]
|
|
Mode=802.3ad
|
|
TransmitHashPolicy=layer3+4
|
|
MIIMonitorSec=1s
|
|
LACPTransmitRate=fast
|
|
|
|
Refer to the `systemd.netdev`_ manpage for :file:`30-bond1.netdev` file
|
|
syntax. This example is based on Example 9 on the manpage. Modify the
|
|
example for your configuration.
|
|
|
|
#. Configure the slave interfaces. Create a text file named
|
|
:file:`30-bond1-enp1s0.network`. Assign the slave interfaces to the virtual
|
|
`bond1` device and use the syntax shown in `systemd.network`_.
|
|
|
|
.. code-block:: console
|
|
|
|
[Match]
|
|
Name=enp1s0f*
|
|
|
|
[Network]
|
|
Bond=bond1
|
|
|
|
[Link]
|
|
MTUBytes=9000
|
|
|
|
The example bonds all four ports of a quad-port NIC as a slave of `bond1`.
|
|
The example uses a wildcard match because the NIC names are in the range
|
|
`enp1s0f0-enp1s0f3`. If your NIC names are not wildcard-compatible, create
|
|
a separate :file:`.network` file for each NIC.
|
|
|
|
For best results, do not assign addresses or DHCP support to the individual
|
|
NICs.
|
|
|
|
The `MTUBytes` setting enables jumbo frames of up to 9000 bytes. Your
|
|
switch may require additional configuration to support this setting.
|
|
|
|
#. Configure the bonded interface in a file named :file:`30-bond1.network`.
|
|
|
|
.. code-block:: console
|
|
|
|
[Match]
|
|
Name=bond1
|
|
|
|
[Network]
|
|
BindCarrier=enp1s0f0 enp1s0f1 enp1s0f2 enp1s0f3
|
|
Address=192.168.1.201/24
|
|
|
|
[Link]
|
|
MTUBytes=9000
|
|
|
|
`bond1` is a virtual interface with no physical link status.
|
|
|
|
`BindCarrier` indicates that the `bond1` link status is determined by the
|
|
status of the listed slave devices.
|
|
|
|
`Address` contains an IP address that you assign to the logical interface.
|
|
DHCP bonded interfaces are complex and outside the scope of this example.
|
|
|
|
`MTUBytes` must be set to 9000 on all slave interfaces and on the bonded
|
|
interface for successful jumbo frames operation. If `MTUBytes` is not the
|
|
same on all interfaces, then the lowest value is used.
|
|
|
|
#. Apply the new network configuration with the command:
|
|
|
|
.. code-block:: bash
|
|
|
|
systemctl restart systemd-networkd
|
|
|
|
The `MTUBytes` settings do not take effect until you reboot or manually
|
|
apply the settings with a utility such as ifconfig.
|
|
|
|
.. _Bonding driver: https://www.kernel.org/doc/Documentation/networking/bonding.txt
|
|
|
|
.. _Team driver: https://www.kernel.org/doc/Documentation/networking/team.txt
|
|
|
|
.. _systemd.netdev: https://www.freedesktop.org/software/systemd/man/systemd.netdev.html
|
|
|
|
.. _systemd.network: https://www.freedesktop.org/software/systemd/man/systemd.network.html
|