PowerEdge:QLogic FastLinQ 45XXX 和 41XXX 介面卡的 NPAR 限制
摘要: 本文討論在 QLogic FastLinQ 45XXX 和 41XXX 配接卡上設定網路磁碟分割 (NPAR) 時的重要考慮。
說明
背景
在網路分割 (NPAR) 模式中,QLogic FastLinQ 45XXX/41XXX 介面卡在作業系統中會以多個乙太網路裝置顯示。這是通過在物理埠上啟用多個網路介面卡 (NIC) 分區來實現的,但當單播*流量的源和目標駐留在同一主機上時,代價是仔細設計廣播域*。
為了允許同一物理埠上的兩個分區之間的通信,適配器提供了稱為 Tx 交換的功能。該功能的目標是在兩個邏輯分區之間內部轉發流量,而不是依賴於源和目標之間的路由。Tx 切換是根據在 NIC 分區上設定的 MAC 篩選規則進行的。作業系統會編程第 2 層 (Mac 到 Mac 或 BUM 流量*) 資料路徑。在 ESXi 環境中,NetworkIoChain 管理流量,更準確地說,管理“負載平衡”成組引擎,該引擎根據 MAC 位址源和目標(當流量離開虛擬交換機時)創建到特定上行鏈路的數據路徑)
此行為會導致數據包被丟棄,因為 Tx 交換正在將數據包轉發到組中的上行鏈路,而該上行鏈路未記錄在 NetworkIochain 的數據路徑中*。
單播流量* = 從 MAC 位址的角度來看已知的 MAC 源和已知的 MAC 目標 交換機上的表(虛擬或物理)
廣播域* = 虛擬交換機、物理交換機、VLAN 和子網都是廣播域(第 2 層)
BUM* = 廣播、未知單播、多播、流量。必須離開虛擬交換機的第 2 層流量。NetworkIOChain* = https://blogs.vmware.com/vsphere/2018/12/understanding-the-esxi-network-iochain.html
1.使用同一埠分區時,同一主機上的兩個虛擬機 (VM) 之間的通信(請參閱“圖 1”)
如圖 1 所示,在此配置中有兩個虛擬機,VM1(單播 MAC M1)和 VM2(單播 MAC M2)。VM1 位於虛擬交換器 VS1 後方,而 VM2 位於 VS2 後方。VS1 將 PF0 作為上行鏈路,而 VS2 將 PF2 和 PF1 作為上行鏈路。PF0 和 PF2 是 QLogic FastLinQ 41XXX/45XXX 配接卡連接埠 1 上的兩個分割區,而 PF1 是連接埠 2 的分割區。VS2 PF1 是組合中的主動介面,而 PF2 是被動 (待機) 介面。NetworkIOChain 在 P0 上為 MAC M1 建立資料路徑,並在 PF1 和 PF2 上為 M2 程式設計 IoChain。由於從 VS1 和 VS2 的角度來看,流量被視為未知單播(VS1 只知道其自己的 VM 的 MAC 位址,同樣適用於 VS2),NetworkIOchain 將該流量標記為 BUM,並記錄數據路徑以使用 VM1 的上行鏈路埠 PF0 和 VM2 的 PF1。
VMkernel 在 P0 上為 MAC M1 編寫篩選器,並在 PF1 和 PF2 上為 M2 編寫 MAC 篩選器。NPAR Tx 交換流量源自 VM1 (來源 MAC M1) 並發往 VM2 (目的地 MAC M2) 一律會透過 PF2 傳回,因為 VMkernel 已在 PF1 和 PF2 上為 M2 設定了 MAC 篩選器。由於 PF2 上的 MAC 篩選器匹配,流量不會發送到線路。但是,到達 PF2 的流量會被 vSwitch 丟棄,因為它將進入內部埠,沒有匹配的規則來到達預期的 VM 的虛擬 NIC。
可能的解決方案:
I) 使用個別的配接卡:為了執行此類配置工作,我們必須使用組合中兩個物理上獨立的網路適配器的埠。我們還必須確保網路路徑不包含來自同一物理埠的兩個 PF。請參閱“圖 2”。
II) 停用 NPAR Tx 交換及外部路由:上述問題可以通過禁用 NPAR Tx 切換來解決。但是,僅禁用 NPAR Tx 交換並不能完全解決問題,因為在某些情況量必須路由回同一埠上的邏輯分區。禁用 NPAR Tx 交換時,需要外部路由。“圖3”詳細闡述了這一流程。另請參閱下面的問題 #4,瞭解禁用 NPAR Tx 開關的限制。
III) 如何禁用 TX 切換參數:
如果需要禁用 NPAR Tx 切換,則可以通過設置模組參數來完成 npar_tx_switching 為 0。
ESXi 範例:
[root@esxi03:~] esxcfg-module -s 'npar_tx_switching=0' qedentv
2.使用組合中同一實體連接埠的兩個 PF
不建議使用此配置,因為它不提供復原能力或性能。當實體連接埠上的連結中斷時,該連接埠上的兩個 PF 都會受到影響。因此,此配置沒有用處,因此不建議使用。
3.交換器相依的成組模式,例如 LACP
如 IEEE 802.3ad 連結聚合 (LACP) 等交換器相依成組模式會以每個連接埠為基礎運作,而不是以 PCI 功能 (也就是實體功能或 PF 層級粒度) 運作。因此,啟用 NPAR 時,不建議使用某些分區(例如 PF0 和 PF1)配置 LACP,也不建議將其餘分區用於其他目的。LACP 狀態機在主機和交換機上運行,並確定聚合的狀態。不屬於 LAG 的其他分區不知道狀態機更改和有關 LAG 的決策。交換機上配置的負載均衡策略適用於從交換機傳輸的所有流。由於交換器不知道 NPAR 組態,因此不屬於 LAG 的其他 PF 的流量會受到屬於 LAG 的分割區所設定的約束。這可能會導致副作用,例如數據包被轉發到不正確的 PF、由於 LACP 狀態機行為而對流量產生意外影響等。應該注意的是,某些可能發生的行為取決於交換機端的 LACP 實施方式,但通常可能會有不良副作用。
4.使用橋接或 L2VPN 將第 2 層乙太網路框架 QnQ 或 vlan 修改為 vni 等 (NFV 解決方案,如 NSX)
這會導致一個迴圈。如果您計劃橋接流量,請確保禁用 NPAR,否則流量會由於流量的處理方式而進入迴圈狀態 NetworkIOChain。