您拥有什么:

  • bond(bond0)接口(interface)(除4外的所有模式)接口(interface),至少2个iface(例如eth0/eth1)连接在同一外部交换机
  • bond0接口(interface)已加入软件网桥(br0)
  • 带有br0接口(interface)的
  • 虚拟机(vm0)(例如LibVirt::LXC)

  • 您得到的是:
  • vm0无法通过br0上的bond0连接到(大多数)IP地址
  • 在系统日志
  • 中“bond0:接收到的具有自己地址作为源地址的数据包”

    为什么会这样:

    当vm0想联系外部IP地址时,它将发出ARP请求。通过vm0的源mac广播的第二层广播将通过(取决于绑定(bind)模式)离开,例如eth0,但是通过外部开关,通过eth1重新进入,然后通过bond0重新进入。因此,交换机br0将在连接到bond0的端口上学习vm0的mac地址。因此,vm0永远不会收到ARP回复。

    您可以解决什么问题:

    我在共享信息的旁边发布此消息的原因是,我无法找到足够好的解决方案。我发现的是:
  • 在vm0上设置静态ARP条目
  • 使用bond0 mode = 4,但您的外部交换机必须支持此
  • 配置您的外部siwtch以在eth0/eth1上使用私有(private)VLAN,但仅在某些用例中有效,并增加了复杂性
  • 将两个物理接口(interface)添加到启用了生成树的网桥,而不是使用绑定(bind)驱动程序
  • 在br0的正确端口上静态配置vm0的MAC在Linux上不是一个选项(尽管可在OpenBSD上使用)

  • 我真的希望在这里有一个更优雅的解决方案...有人吗?

    谢谢

    最佳答案

    我遇到了相同的问题,并且得出了相同的分析结果。
    我发现的唯一非侵入性/可伸缩解决方案是使用主动/备份绑定(bind)(模式1)。折衷方案是您松开聚合。

    IMO最好的解决方案是使用802.3ad,但我不能总是使用它,因为我的大多数交换机上都只有6个端口通道。

    关于linux - 关于软件桥连接问题的保证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11206910/

    10-13 03:58