MLAG Bond 接口的 DORMANT 状态是什么意思

问题

ip link show 的输出中,MLAG 下行链路 bond 接口显示为 DORMANT 状态

cumulus@switch$ ip link show bond1
222: bond1: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-v1 state UP mode DORMANT 
    link/ether 08:9e:01:ce:e4:13 brd ff:ff:ff:ff:ff:ff 

环境

  • Cumulus Linux,所有版本

说明

DORMANT 是 Linux 术语,在两种上下文中使用

  • 模式类型
  • 链路状态

在下面的示例中,考虑以下输出,注意 state 为 UP,而 mode 为 DORMANT

cumulus@switch$ ip link show bond1
222: bond1: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-v1 state UP mode DORMANT 
    link/ether 08:9e:01:ce:e4:13 brd ff:ff:ff:ff:ff:ff 

模式类型

默认模式类型的名称为DEFAULT。当接口处于 DEFAULT 模式时,当满足以下条件时,接口状态转换为 UP

  • 检测到链路

当接口处于 DORMANT 模式时,接口状态转换为 UP 还有其他条件。在 DORMANT 模式下,当接口满足以下两个条件时,接口状态转换为 UP

  • 检测到链路
  • MLAG 完成 bond 的所有设置

链路状态的上下文中,DORMANT 指示接口不处于传递数据包的条件,而是处于“等待”状态,等待某些外部事件。为了使接口可用于转发,它应该处于 UP 状态,如上面输出所示。

解决方案

您应该期望在 MLAG bond 下行链路的 ip link show 输出中看到 mode DORMANT。要在这些接口上转发流量,请确保 bond 链路状态为 state UP

以下是 MLAG 接口(bond1,下行链路)的示例输出,其中一切都按设计工作。swp7 和 swp8 是 bond1 的成员

cumulus@switch$ ip link show bond1
222: bond1: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-v1 state UP mode DORMANT 
    link/ether 08:9e:01:ce:e4:13 brd ff:ff:ff:ff:ff:ff
cumulus@switch$ ip link show swp7 
9: swp7: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond1 state UP mode DEFAULT qlen 500 
    link/ether 08:9e:01:ce:e4:13 brd ff:ff:ff:ff:ff:ff
cumulus@switch$ ip link show swp8
10: swp8: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond1 state UP mode DEFAULT qlen 500 
    link/ether 08:9e:01:ce:e4:13 brd ff:ff:ff:ff:ff:ff

以下是 MLAG 对等链路 (bond0) 的示例输出,其中一切都按设计工作。swp3 和 swp4 是 bond0 的成员。请注意,此对等链路处于 DEFAULT 模式而不是 DORMANT 模式,因为它不是 MLAG 下行链路 — 它是互连 MLAG 对等设备的接口。

cumulus@switch$ ip link show bond0
220: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-v1 state UP mode DEFAULT 
    link/ether 08:9e:01:ce:e4:0e brd ff:ff:ff:ff:ff:ff
cumulus@switch$ ip link show swp3 
5: swp3: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP mode DEFAULT qlen 500 
    link/ether 08:9e:01:ce:e4:0e brd ff:ff:ff:ff:ff:ff
cumulus@switch$ ip link show swp4
6: swp4: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP mode DEFAULT qlen 500 
    link/ether 08:9e:01:ce:e4:0e brd ff:ff:ff:ff:ff:ff

以下是 bond (bond2) 的示例输出,其中 swp5 是 bond2 的成员。请注意,此接口处于 DORMANT 状态,并且也处于 DORMANT 模式,因为 bond 尚未正常工作。 它不传递流量,因为 bond 处于 DORMANT 状态。

cumulus@switch$ ip link show bond2
281: bond2: <NO-CARRIER,BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state DORMANT mode DORMANT 
    link/ether 08:9e:01:ce:e4:10 brd ff:ff:ff:ff:ff:ff
cumulus@switch$ ip link show swp5 
7: swp5: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond2 state UP mode DEFAULT qlen 500 
    link/ether 08:9e:01:ce:e4:10 brd ff:ff:ff:ff:ff:ff

其他资源

有关其他阅读材料,请参阅以下资源