Hyper-v-Server-2008-R2

NIC 在 HyperV 2008 R2 上與 Broadcom 合作

  • April 12, 2012

我有一個由 3 台主機組成的 HyperV 集群。每台主機都連接到我在乙太網通道中執行的兩個 Nexus 5548 交換機。交換機上的 LACP 和伺服器端使用 Broadcom 802.3ad 的 NIC 組合。這給了我 2GB 的頻寬,還提供了容錯能力。

執行實時遷移時會出現我遇到的問題。在實時遷移之前,兩台 Nexus 交換機都會在 ARP 表中顯示 VM 的 MAC。遷移後,一台交換機顯示 VM 的 MAC,另一台顯示它移動到的 HyperV 主機的 MAC。

我執行了一個數據包擷取,看到 HyperV 主機發送了一個免費的 ARP,其中包含 VM 的 IP 和主機的 MAC,而不是 VM 的 MAC。發生這種情況時,我會失去第 3 層連接。我必須手動清除交換機中的 ARP 條目或等待大約 7 分鐘以使其自行更正。

我環顧四周,人們在使用 Broadcom 處理 NIC 組合時遇到了類似的問題。有人見過這個嗎?有什麼建議嗎?

——– 編輯添加在下面

只有在使用 Link Aggregation 802.3ad 進行組合時,我才會遇到這個問題。Broadcom 組合選項是…

  • 鏈路聚合 (802.3ad)
  • 智能負載平衡 (TM) 和故障轉移
  • SLB(自動回退禁用
  • 通用集群 (FEC/GEC) / 802.3ad-Draft 靜態

我切換到智能負載平衡和虛擬機實時遷移,而不會失去任何網路連接。但是,Nexus 交換機上的 ARP 表是同步的,但它們顯示的是主機的 MAC 地址,而不是 VM。這與我認為它會做的相反。交換機的 ARP 表不應該顯示 VM 的 MAC 嗎?如果沒有,他們應該顯示主機的 MAC,為什麼?

好的。經過3週的激烈戰鬥,我終於明白了一切。

我打開了一個博通支持的案例,在來回幾天后,這是我從博通軟體開發人員那裡收到的回复。


> > 對於許多網路來說,在遠端站或交換機上看到 (vm_ipv4, host_mac_addr) 或 (vm_ipv6, host_mac_addr) 對是可以的。Basp 將處理地址的複用並確保 vm 獲得正確的數據包。 > > > 但是,一些網路配置需要將 ip 地址映射到 vm_mac_addr。如果要使用 vm_mac_addr 而不是 host_mac_addr,則需要添加下面列出的 HyperVMode 系統資料庫項。 > > > 如果希望不復用 vm 的 mac 地址,即不將其替換為 nic 的 mac 地址,則需要在執行 vm 的主機上設置以下系統資料庫​​項並重新啟動系統以使其獲取影響。設置此系統資料庫項會導致 basp 的操作效率降低,但在某些設置中是必需的,例如當存在需要使用 vm 的 mac 地址來分配 ip 地址的 dhcp 伺服器時。通過設置此系統資料庫項,您還應該在 vm 連接到的所有遠端站的 arp 表中看到實際 vm 的 mac 地址。 > > > 可以在創建團隊之後,但在創建使用該團隊的 hyper-v 虛擬適配器之前添加此系統資料庫項。值 1 將配置 basp 在負載平衡流動時使用 vm 的 mac 地址而不是 slb 組中的 nic 的 mac 地址。值為 0 或不存在時,將 basp 配置為將 vm 的 mac 地址與團隊中的一個網卡的 mac 地址進行複用/解復用。 > > > 將系統資料庫路徑中的“1”設置為要應用此模式的正確團隊編號並重新啟動系統。請注意,該系統資料庫項將在團隊被刪除時被刪除,並且必須在每次創建團隊時重新創建。BACS 的未來版本將有一個複選框,用於設置此系統資料庫項,並防止在創建團隊時添加它並重新啟動系統。此系統資料庫項僅在 >=basp6-1.5.1 上可用。 > > >

Windows 系統資料庫編輯器版本 5.00

$$ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
Blfp\Parameters\1 $$ “HyperVMode”=dword:00000001

> > PS。除了此系統資料庫項僅在 >=basp6-1.5.1 上可用之外,它僅適用於 slb 團隊類型,不適用於 lacp 或 gec 團隊。 > > >


所以說我試了一下。首先,我申請創建了系統資料庫項。然後,我將虛擬交換機更改為專用虛擬機網路模式。我讓伺服器快速重啟。最後,當伺服器重新聯機時,我將虛擬交換機配置回外部模式並選擇 BASP 虛擬適配器。我測試了實時遷移,一切執行良好,Nexus 中的 ARP 表顯示了 VM_IP 和 VM-MAC。耶!!!!

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