mirror of
https://github.com/clearlinux/clear-linux-documentation.git
synced 2026-07-12 07:36:02 +00:00
Merge pull request #5 from dbkinder/network-bonding
network: techwriter pass on network bonding guide
This commit is contained in:
@@ -4,118 +4,104 @@ Network Bonding
|
||||
###############
|
||||
|
||||
Network bonding is a technique for combining multiple network interfaces into
|
||||
a single, logical interface, providing some combination of redundancy and
|
||||
bandwidth aggregation.
|
||||
a single, logical interface, providing some redundancy and bandwidth
|
||||
aggregation.
|
||||
|
||||
|CLOSIA| includes the bonding_ and team_ drivers. Here, we'll provide an
|
||||
example of configuring systemd to use the ``bonding`` driver.
|
||||
|CLOSIA| includes the bonding_ and team_ drivers. The guide example provided
|
||||
below shows how to configure systemd to use the ``bonding`` driver.
|
||||
|
||||
All commands in this guide should be run as root.
|
||||
.. note::
|
||||
All commands in this guide must be run as root.
|
||||
|
||||
First, if it does not already exist, create the following directory:
|
||||
1. Create the ``/etc/systemd/network`` directory (if it doesn't already exist):
|
||||
|
||||
.. code-block:: console
|
||||
.. code-block:: console
|
||||
|
||||
# mkdir -p /etc/systemd/network
|
||||
# mkdir -p /etc/systemd/network
|
||||
|
||||
In this directory, you will create the configuration files for the virtual
|
||||
device and the network settings for it and the underlying physical interfaces.
|
||||
This directory contains the configuration files and network settings
|
||||
for the virtual device and its underlying physical interfaces.
|
||||
|
||||
Next, configure systemd to create a virtual network device, ``bond1``. The
|
||||
syntax for this file is defined in the systemd.netdev_ manpage.
|
||||
`This example`__ may be used verbatim, or tuned to your particular requirements.
|
||||
Note that ``802.3ad`` mode requires explicit support from your NICs and network
|
||||
switch. This and other modes may also require additional configuration of your
|
||||
network switch.
|
||||
2. Configure systemd to create a virtual network device, ``bond1``. Use a text
|
||||
editor to create a file named ``30-bond1.netdev`` as shown here:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[NetDev]
|
||||
Name=bond1
|
||||
Kind=bond
|
||||
|
||||
[Bond]
|
||||
Mode=802.3ad
|
||||
TransmitHashPolicy=layer3+4
|
||||
MIIMonitorSec=1s
|
||||
LACPTransmitRate=fast
|
||||
|
||||
The syntax for this file is defined in the systemd.netdev_ manpage.
|
||||
`This example`__ may be used verbatim, or tuned to your particular
|
||||
requirements. Note that ``802.3ad`` mode requires explicit support from
|
||||
your NICs and network switch. This and other modes may also require
|
||||
additional configuration of your network switch.
|
||||
|
||||
__ https://www.freedesktop.org/software/systemd/man/systemd.netdev.html#id-1.20.10
|
||||
|
||||
.. code-block:: ini
|
||||
:caption: 30-bond1.netdev
|
||||
:linenos:
|
||||
3. Configure the slave interfaces, assigning them to the new ``bond1`` device,
|
||||
using the syntax in systemd.network_, and in a text file named
|
||||
``30-bond1-enp1s0.network`` as shown here:
|
||||
|
||||
[NetDev]
|
||||
Name=bond1
|
||||
Kind=bond
|
||||
.. code-block:: ini
|
||||
|
||||
[Bond]
|
||||
Mode=802.3ad
|
||||
TransmitHashPolicy=layer3+4
|
||||
MIIMonitorSec=1s
|
||||
LACPTransmitRate=fast
|
||||
[Match]
|
||||
Name=enp1s0f*
|
||||
|
||||
Configure the slave interfaces, assigning them to the new ``bond1``, using the
|
||||
syntax in systemd.network_.
|
||||
[Network]
|
||||
Bond=bond1
|
||||
|
||||
.. code-block:: ini
|
||||
:caption: 30-bond1-enp1s0.network
|
||||
:linenos:
|
||||
[Link]
|
||||
MTUBytes=9000
|
||||
|
||||
[Match]
|
||||
Name=enp1s0f*
|
||||
|
||||
[Network]
|
||||
Bond=bond1
|
||||
|
||||
[Link]
|
||||
MTUBytes=9000
|
||||
|
||||
.. note::
|
||||
|
||||
This guide demonstrates bonding all four ports of a quad-port NIC, with
|
||||
This example demonstrates bonding all four ports of a quad-port NIC, with
|
||||
names in the range ``enp1s0f0-enp1s0f3``, allowing the use of a single file
|
||||
with a wildcard match. You may also create a separate file for each NIC,
|
||||
particularly if they have names that are not wildcard-friendly. This
|
||||
configuration assigns each NIC as a slave of ``bond1``. For best results,
|
||||
do not assign addresses or DHCP support to the individual NICs.
|
||||
|
||||
.. note::
|
||||
|
||||
|
||||
This example also enables jumbo frames of up to 9000 bytes to optimize large
|
||||
data transfers on the local network. Again, your NICs and switch must
|
||||
support jumbo frames, and your switch may require additional configuration.
|
||||
|
||||
Finally, define the network configuration for the bonded interface.
|
||||
4. Define the network configuration for the bonded interface in a file named
|
||||
``30-bond1.network`` as shown here:
|
||||
|
||||
.. code-block:: ini
|
||||
:caption: 30-bond1.network
|
||||
:linenos:
|
||||
.. code-block:: ini
|
||||
|
||||
[Match]
|
||||
Name=bond1
|
||||
[Match]
|
||||
Name=bond1
|
||||
|
||||
[Network]
|
||||
BindCarrier=enp1s0f0 enp1s0f1 enp1s0f2 enp1s0f3
|
||||
Address=192.168.1.201/24
|
||||
[Network]
|
||||
BindCarrier=enp1s0f0 enp1s0f1 enp1s0f2 enp1s0f3
|
||||
Address=192.168.1.201/24
|
||||
|
||||
[Link]
|
||||
MTUBytes=9000
|
||||
|
||||
.. note::
|
||||
[Link]
|
||||
MTUBytes=9000
|
||||
|
||||
Since ``bond1`` is a virtual interface, it has no concept of physical link
|
||||
status. The ``BindCarrier`` directive indicates that the link status of this
|
||||
interface is determined by the status of the listed slave devices.
|
||||
|
||||
.. note::
|
||||
|
||||
This is the logical interface, so assign it an IP address. DHCP is more
|
||||
complicated with bonded interfaces, and is not covered in this guide.
|
||||
|
||||
.. note::
|
||||
complicated with bonded interfaces, and is not covered in this example.
|
||||
|
||||
This file also enables jumbo frames of up to 9000 bytes. This option must be
|
||||
enabled for all slave interfaces *and* the bonded interface in order to take
|
||||
enabled for all slave interfaces *and* the bonded interface, in order to take
|
||||
effect.
|
||||
|
||||
Apply the new network configuration:
|
||||
5. Apply the new network configuration:
|
||||
|
||||
.. code-block:: console
|
||||
.. code-block:: console
|
||||
|
||||
# systemctl restart systemd-networkd
|
||||
|
||||
.. note::
|
||||
# systemctl restart systemd-networkd
|
||||
|
||||
The MTU settings will not take effect until a reboot, or if you explicitly
|
||||
apply them via ``ifconfig``, for example.
|
||||
|
||||
Reference in New Issue
Block a user