使用网络捆绑聚合多个接口

本指南介绍如何配置 systemd 以使用 bonding 驱动程序。

网络捆绑是指将多个网络接口组合成一个逻辑接口,从而提供冗余和带宽聚合。

Clear Linux* OS 包含 Linux Bonding driverTeam driver

该示例演示了如何:

  • 在 802.3ad 模式下,捆绑四端口网卡的所有四个端口。
  • 启用巨型帧来优化本地网络上的大量数据传输。

您的网卡和网络交换机必须支持 802.3ad 模式和巨型帧。该示例解释了如何为这两种功能配置网卡。您的交换机可能需要额外的配置。查阅交换器文档以了解详细信息。

注解

您必须以 root 用户身份运行本指南中的所有命令。

  1. 登录并获得 root 特权。

    sudo -s
    
  2. 创建 /etc/systemd/network 目录。

    mkdir -p /etc/systemd/network
    

    /etc/systemd/network 目录包含虚拟设备及其底层物理接口的配置文件和网络设置。

  3. 将 systemd 配置为创建一个名为 bond1 的虚拟网络设备。使用文本编辑器创建一个名为 30-bond1.netdev 的文件。

    [NetDev]
    Name=bond1
    Kind=bond
    
    [Bond]
    Mode=802.3ad
    TransmitHashPolicy=layer3+4
    MIIMonitorSec=1s
    LACPTransmitRate=fast
    

    有关 30-bond1.netdev 文件语法,请参阅 systemd.netdev 手册页。本示例基于手册页上的示例 9。根据您的配置修改示例。

  4. 配置从属接口。创建一个名为 30-bond1-enp1s0.network 的文本文件。将从属接口分配给虚拟 bond1 设备,并使用 systemd.network 中所示的语法。

    [Match]
    Name=enp1s0f*
    
    [Network]
    Bond=bond1
    
    [Link]
    MTUBytes=9000
    

    本示例将四端口网卡的所有四个端口捆绑为 bond1 从属接口。本示例使用通配符匹配,因为网卡名称在 enp1s0f0-enp1s0f3 范围内。如果网卡名称不兼容通配符,请为每个网卡创建一个单独的 .network 文件。

    为了获得最佳效果,请勿为单个网卡分配地址或 DHCP 支持。

    MTUBytes 设置支持高达 9000 字节的巨型帧。您的交换机可能需要额外的配置来支持此设置。

  5. 在名为 30-bond1.network 的文件中配置捆绑接口。

    [Match]
    Name=bond1
    
    [Network]
    BindCarrier=enp1s0f0 enp1s0f1 enp1s0f2 enp1s0f3
    Address=192.168.1.201/24
    
    [Link]
    MTUBytes=9000
    

    bond1 是一个没有物理链路状态的虚拟接口。

    BindCarrier 表示 bond1 链路状态由所列从属设备的状态决定。

    Address 包含分配给逻辑接口的一个 IP 地址。DHCP 捆绑接口十分复杂,不在本示例的讨论范围内。

    要成功处理巨型帧,所有从属接口和捆绑接口上的 MTUBytes 必须设置为 9000。如果所有接口上的 MTUBytes 设置并不相同,将使用这些设置中的最小值。

  6. 使用以下命令应用新的网络配置:

    systemctl restart systemd-networkd
    

    除非重启或使用 ifconfig 等实用程序手动应用设置,否则 MTUBytes 设置不会生效。