AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 788480
Accepted
z2k
z2k
Asked: 2016-07-08 04:11:43 +0800 CST2016-07-08 04:11:43 +0800 CST 2016-07-08 04:11:43 +0800 CST

Linux 绑定 (balance-tlb)、KVM 来宾和 L2 交换机 = 单播泛洪?

  • 772

我的网络上有一个单播泛滥问题,这始于我将一些软件移动到虚拟化来宾。它似乎与此处报告的内容非常相似:Switch flooding when bonding interfaces in Linux。这个问题可以追溯到 2012 年......所以也许现在有更好的解决方案,也许是在 Linux/KVM 方面。

在下文中,我将尝试解释我执行的架构和故障排除步骤。我希望有人能给我一些提示,也许是一个解决方案!提前致谢!

建筑学

服务器

带有 PROXMOX 4.1 和多个 Windows 虚拟机的 Linux 主机。

主机有 4 Gbit 以太网接口(MAC 地址为 A、B、C 和 D),使用 balance-tlb 方法绑定。

然后将绑定桥接到虚拟机。因此,每个 VM 都有自己的 MAC 地址(MAC 地址为 X、Y、Z...)。

托管在虚拟机上的软件与现场的许多设备进行交互。

网络

服务器连接到瞻博网络交换机,然后连接到广泛的思科网络。一切都是2级。

问题

在思科网络上,我不时看到单播风暴。似乎他们每 5 分钟或多次开始。我分析了流量,突然发现从某些设备到某个虚拟机的流量(反之亦然)被复制到交换机的所有物理端口(在同一个 VLAN 上)。几秒钟后问题就单独解决了。

主意

阅读Cisco文档(关于单播泛洪和MAC“老化时间”)以及上述链接,我发现问题可能是由于虚拟机的MAC地址在网络上出现的频率不高,所以之后在一定的“老化时间”之后,交换机开始将此类流量转发到所有端口,直到它们发现主机所在的位置。

故障排除

我在网络上连接了一台笔记本电脑,并开始从一个虚拟机 ping 它。我嗅了嗅笔记本电脑上的数据包。

从这里我可以看到:

  • 来自虚拟机的 ARP 请求,使用它自己的 MAC 地址作为 MAC 源(比如说 X)

  • 来自笔记本电脑的 ARP 回复,将其自己的 MAC 地址 (L) 用作 MAC 源,并将 VM MAC 地址 (X) 用作目标

  • 来自虚拟机的 ping 请求,使用绑定的物理以太网端口的 MAC 地址之一(A、B、C、D,并在其中三个之间不时切换)作为 MAC 源并作为 MAC 目标 L

  • ping 来自笔记本电脑的回复,使用 MAC 源 L 和 MAC 目标虚拟机 MAC 地址 (X)

基本上,除了第一个 ARP 请求外,虚拟机似乎永远不会以自己的 MAC 地址 (X) 出现在笔记本电脑上,但总是以 A、B、C 或 D(随时间变化)出现。但是,笔记本电脑总是响应 X。

解决方案?

我读到在 balance-tlb 模式下可以根据负载从不同的接口发出流量。但是,我认为这种行为与虚拟机出现在网络上并带有正在使用的物理接口的源 MAC 地址这一事实可能会产生我报告的问题。

如果这是正确的,是否有人知道是否有办法始终强制每次通信使用 VM 自己的 MAC 地址?(例如,它已经发生在 ARP 请求中)或者解决方案可能在其他地方?

我以为我可以设置 Windows 虚拟机每 3 分钟重置一次 ARP 表......但这对我来说似乎有点太暴力了...... :)

再次感谢任何帮助!

编辑:我确认如果在洪水事件期间我快速登录到相应的 VM 并发出 ARP 表重置,我会看到来自 VM 的新 ARP 请求(将其自己的 MAC 地址告诉网络)并且风暴立即停止。

linux kvm-virtualization switch bonding flooding
  • 2 2 个回答
  • 1784 Views

2 个回答

  • Voted
  1. Best Answer
    suprjami
    2016-07-10T11:43:41+08:002016-07-10T11:43:41+08:00

    Balance-tlb(模式 5)和 balance-alb(模式 6)不适用于虚拟网桥。它们会导致广播循环,在某些情况下会重写数据包中的源 MAC,并且模式 6 会根据设计拦截 ARP。

    您需要使用不带交换机配置的 active-backup(模式 1),或带交换机配置的 balance-xor(模式 2)或 802.3ad(模式 4)。

    您还可以在交换机配置中使用循环(模式 0)或广播(模式 3),但这些对 TCP 流性能不利。

    • 0
  2. mkzia
    2016-07-08T06:25:19+08:002016-07-08T06:25:19+08:00

    https://en.wikipedia.org/wiki/Unicast_flood 您的 ::::::::""""主机的 ARP 计时器可能比交换机上的地址缓存超时时间长....."""" ” 根据文章。尝试将您的 KVM 虚拟机管理程序主机和 VM 主机的 ARP 计时器设置为比交换机本身短,它们通过物理以太网端口连接到交换机本身。请让我们知道您发现了什么。并与我们。谢谢。

    • -1

相关问题

  • 多操作系统环境的首选电子邮件客户端

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve