以下是我创建桥接接口并向其添加 10G 接口的方法:

sudo nmcli con add ifname kvbr0 type bridge con-name kvbr0
sudo nmcli con add type bridge-slave ifname eno1np0 master kvbr0

每当我们运行上述配置时,我都会得到NO-CARRIER

ip a show dev eno1np0
4: eno1np0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1316 qdisc mq state DOWN group default qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    altname enp25s0f0np0

nmcli没有将与连接关联的连接显示为活动状态。我删除了关联的连接,但界面仍然显示NO-CARRIER

$ sudo nmcli con del bridge-slave-eno1np0
Connection 'bridge-slave-eno1np0' (8f345987-bf8a-44d4-8727-74f8ce94241d) successfully deleted.
$ sudo nmcli con del kvbr0
Connection 'kvbr0' (0a17c157-2e12-4135-a942-ca3892266453) successfully deleted.

ethtool显示的是Speed: Unknown!Duplex: Unknown! (255)界面。我尝试使用 手动设置速度和双工sudo ethtool -s eno1np0 speed 10000 duplex full,但ethtool输出仍然相同。

恢复的唯一方法是登录交换机,删除关联端口的配置,然后重新添加配置。

8

  • NO CARRIER表示接口未进行物理连接或无法完成 L1 协议握手(例如速度不匹配、MDI/MDI-X 不匹配、光纤连接不良等)。ethtool结果间接表明了同样的情况:速度未知,因为未与对方达成一致。请检查您的布线。


    – 

  • 我们的布线没有问题。同样,为了解决之前的问题,我们重新加载了交换机上的端口配置,Linux 主机上的端口就恢复了。这个问题发生在将接口添加到桥接器之后,因此布线受影响是没有道理的。


    – 

  • 1) NIC 使用哪个内核驱动程序?2) 在此之后,内核驱动程序是否会将任何内容记录到 dmesg?3) 桥接接口是否已启动?4) 为排除 NM,如果使用 手动桥接,是否仍会发生这种情况ip link set eno1np0 master kvbr0


    – 


  • @u1686_grawity 在正常的 Linux 状态下,网桥不会以任何方式改变其从属设备的状态。这完全取决于 NIC(和驱动程序),驱动程序并不关心它是否是网桥的一部分或是否具有 VLAN 等。


    – 

  • @NikitaKipriyanov:确实如此 – 一方面,它启用了 IFF_PROMISC 和 IFF_ALLMULTI 模式,这两种模式都会导致特定于驱动程序的操作来禁用硬件级接收过滤。大多数驱动程序确实关心它们是否也有 VLAN,并对这些 VLAN 进行硬件级过滤。我认为 mlx5 也对桥接卸载有特定的支持,尽管我不确定这需要什么(我假设它是在多端口 NIC 的端口之间)。


    – 


0