NIC 在 HyperV 2008 R2 上與 Broadcom 合作
我有一個由 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。耶!!!!