Linux

Linux 綁定 (balance-tlb)、KVM 來賓和 L2 交換機 = 單播泛洪?

  • July 9, 2016

我的網路上有一個單播氾濫問題,這始於我將一些軟體移動到虛擬化來賓。它似乎與此處報告的內容非常相似: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 地址告訴網路)並且風暴立即停止。

Balance-tlb(模式 5)和 balance-alb(模式 6)不適用於虛擬網橋。它們會導致廣播循環,在某些情況下會重寫數據包中的源 MAC,並且模式 6 會根據設計攔截 ARP。

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

您還可以在交換機配置中使用循環(模式 0)或廣播(模式 3),但這些對 TCP 流性能不利。

https://en.wikipedia.org/wiki/Unicast_flood 您的 ::::::::““““主機的 ARP 計時器可能比交換機上的地址記憶體超時時間長…..”””” ” 根據文章。嘗試將您的 KVM 虛擬機管理程序主機和 VM 主機的 ARP 計時器設置為比交換機本身短,它們通過物理乙太網埠連接到交換機本身。請讓我們知道您發現了什麼。並與我們。謝謝。

引用自:https://serverfault.com/questions/788480