跳转到内容
搜索 AlmaLinux 文档

    浏览当前文档目录

    AlmaLinux 9:bond 与 VLAN 的内核层验证

    在 AlmaLinux 9.8(特权容器,宿主内核 5.14.0-687.54.1.el9_8,单网卡)中用 dummy 设备实际执行:ip link add bond0 type bond mode active-backup miimon 100、把 dummy0/dummy1 加为 slave、cat /proc/net/bonding/bond0、在 bond 上建 bond0.100 VLAN、ip -d link show、清理。日志:plans/content-expansion/evidence/logs/alma-bonding-vlan.log。

    没有第二块物理网卡,也没有交换机:本页验证的是内核层的 bond/VLAN 行为;nmcli 配置与交换机侧要求标注为「未在本环境验证」。

    • bond:把多块网卡合成一块逻辑网卡,提供冗余或带宽聚合;
    • VLAN:在一条链路上打 802.1Q 标签,划出多个广播域。

    两者可以叠加:bond0 上打 bond0.100,即「先聚合链路,再在聚合链路上分 VLAN」。

    Terminal window
    sudo ip link add dummy0 type dummy
    sudo ip link add dummy1 type dummy
    sudo ip link add bond0 type bond mode active-backup miimon 100
    sudo ip link set dummy0 down && sudo ip link set dummy1 down
    sudo ip link set dummy0 master bond0
    sudo ip link set dummy1 master bond0
    sudo ip link set bond0 up
    cat /proc/net/bonding/bond0
    Ethernet Channel Bonding Driver: v5.14.0-687.54.1.el9_8.x86_64
    Bonding Mode: fault-tolerance (active-backup)
    Currently Active Slave: dummy0
    MII Status: up
    MII Polling Interval (ms): 100

    Currently Active Slave 就是当前承载流量的那块;MII Polling Interval 是链路检测周期(miimon)。

    Terminal window
    sudo ip link add link bond0 name bond0.100 type vlan id 100
    ip -d link show bond0.100 | head -2
    bond0.100@bond0: <BROADCAST,MULTICAST> ... state DOWN ...
    vlan protocol 802.1Q id 100 <REORDER_HDR> ...

    vlan protocol 802.1Q id 100 说明标签已配置;state DOWN 是因为还没 ip link set up——建 VLAN 接口不等于启用它。

    nmcli 的配置方式(未在本环境验证)

    Section titled “nmcli 的配置方式(未在本环境验证)”

    NetworkManager 环境下通常用 nmcli 建 bond/VLAN(本机没有 NM 守护进程,以下命令未执行):

    Terminal window
    sudo nmcli con add type bond con-name bond0 ifname bond0 \
    bond.options "mode=active-backup,miimon=100"
    sudo nmcli con add type ethernet con-name bond0-slave1 ifname eno1 master bond0
    sudo nmcli con add type ethernet con-name bond0-slave2 ifname eno2 master bond0
    sudo nmcli con add type vlan con-name bond0.100 ifname bond0.100 dev bond0 id 100

    关键参数是 mode 与 miimon;slave 通过 master bond0 归属,VLAN 通过 dev bond0 指定父接口。

    交换机侧要求(需要网络同事确认)

    Section titled “交换机侧要求(需要网络同事确认)”
    bond 模式交换机侧
    active-backup(1)一般无需配置,两块口在同 VLAN 即可
    802.3ad / LACP(4)必须在交换机上配置 LACP 端口组,两端速率/周期一致
    balance-alb(6)通常无需交换机配置,但依赖 ARP 协商

    VLAN 侧:交换机对应端口必须是 trunk 并放行该 VLAN ID;access 口只能承载一个 VLAN。

    • mode 选错:想要带宽叠加却配了 active-backup,实际只有一块在跑;
    • LACP 两端不一致:交换机没配 LACP 而主机配 802.3ad,链路会一直 down;
    • VLAN 建了没 up:ip link set bond0.100 up 之后才有流量。
    Terminal window
    sudo ip link add dummy0 type dummy && sudo ip link add dummy1 type dummy
    sudo ip link add bond0 type bond mode active-backup miimon 100
    sudo ip link set dummy0 master bond0 && sudo ip link set dummy1 master bond0
    sudo ip link set bond0 up
    cat /proc/net/bonding/bond0 | grep -E "Bonding Mode|Active Slave"
    sudo ip link add link bond0 name bond0.100 type vlan id 100
    ip -d link show bond0.100 | grep 802.1Q

    检查:

    1. /proc/net/bonding/bond0 显示 active-backup 且有 Active Slave
    2. ip -d link show bond0.100 里有 vlan protocol 802.1Q id 100
    3. ip -br link show 里 dummy0/dummy1 带 SLAVE 标记
    4. 清理后设备消失

    常见问题

    active-backup 和 802.3ad 怎么选?

    要冗余且不想动交换机,用 active-backup;要带宽叠加且能配交换机 LACP,用 802.3ad。前者只有一块在跑,后者需要两端一致。

    VLAN 接口建好后为什么不通?

    先确认接口是 UP(ip link set up)、父接口也 UP、交换机端口是 trunk 且放行该 VLAN;三者缺一都不通。

    miimon 设多少合适?

    常见 100ms;太小会增加检测开销,太大故障切换慢。若用 LACP,还要与交换机的 LACP 速率匹配。