Windows

通過 pfSense 工作的 VMWare 虛擬機的上傳速度較慢

  • July 26, 2020

我們有執行 VMWare ESXi 6.0 的 ProLiant DL360 Gen8 和 Gen9 伺服器,其中的虛擬機在各種版本的 Windows 下通過 pfSense 2.3.4-RELEASE(64 位)和 Open-VM-Tools 包 10.1.0,1 進行路由。

通過 pfSense 工作的虛擬機顯示上傳速度非常低,例如:ping 2ms,下載 134 Mbps,上傳 0.25 Mbps(順便說一下,遠端桌面連接的速度可以接受 0.25 Mbps,但實際上 RDP 幾乎無法工作,客戶端經常停頓幾秒鐘,或者刷新出現在正方形中,刷新螢幕需要 5-10 秒,不穩定,甚至有時甚至重新連接——這使得通過 RDP 工作幾乎不可能)。

對受影響的 Windows 機器進行調整,例如“netsh interface tcp set global autotuninglevel=highlyrestricted”並沒有改變任何東西。

繞過 pfSense 直接連接的虛擬機沒有這些問題 - 它們的上傳和下載速度大致相同。

所有虛擬機(pfSense、Windows 等 - 所有)都使用 VMXNET3 適配器。

以下選項在 pfSense 中均未選中:

[ ] Disable hardware checksum offload
[ ] Disable hardware TCP segmentation offload
[ ] Disable hardware large receive offload

pfSense 上沒有流量形狀。可能是什麼原因?

如果我選中“禁用硬體大接收解除安裝”選項,它會再次變快,但我不想禁用它,我希望 pfSense 使用帶有 VMWare VMXNET3 的硬體大接收解除安裝。

**更新:**我已將 VMWare 升級到帶有所有更新檔的最新 6.5,並將 pfSense 升級到 3.4.5 BETA,已將韌體更新到最新版本,但沒有幫助。

我通過在 pfSense 設置(系統/高級/網路|網路介面)中禁用“硬體大接收解除安裝”解決了這個問題

有一個複選框“禁用硬體大接收解除安裝”,我已將其設置為“已檢查”(ON)。

該選項的描述如下:

選中此選項將禁用硬體大接收解除安裝 (LRO)。這種解除安裝在某些硬體驅動程序中被破壞,並且可能會影響某些特定 NIC 的性能。這將在機器重新啟動或重新配置每個介面後生效。

其他選項未選中。所以現在“網路介面”中的選項如下:

[ ] Disable hardware checksum offload
[ ] Disable hardware TCP segmentation offload
[✓] Disable hardware large receive offload

根據 HP 文件,Gen8/Gen9 上的網路適配器(基於Broadcom BCM5719 晶片組的 331 型)支持標準 TCP/IP 解除安裝技術,包括: - TCP/IP、UDP 校驗和解除安裝 (TCO)(移動 TCP 和 IP 校驗和解除安裝從 CPU 到網路適配器)。- 大型發送解除安裝 (LSO) 或 TCP 分段解除安裝 (TSO)(允許 TCP 分段由適配器而不是 CPU 處理)。

這就是pfSense 對這些功能的描述:

網路選項卡上系統 > 高級下的硬體 TCP 分段解除安裝 (TSO) 和硬體大型接收解除安裝 (LRO) 設置預設為選中(禁用),這是有充分理由的。幾乎所有硬體/驅動程序都存在這些設置問題,並且可能導致吞吐量問題。確保選中選項。有時也需要通過 sysctl 禁用。

事實上,沒有硬體/驅動程序有問題,而是配置錯誤。絕不應在路由器上啟用 LRO 和 TSO。僅當 pfSense 被配置為端點(例如 DNS 伺服器)時,才可以啟用這些選項。

讓我引用FreeBSD 錯誤跟踪條目

根據我的測試,這不是錯誤,一切都按設計工作。當 LRO 開啟並使用 pfSense 作為網關時,我發現性能大幅下降。這是由於原始數據包設置了 IP DF(不分段)標誌,然後通過 LRO 組合成更大的數據包。當這個(更大的)數據包需要被分段以匹配另一個 NIC 時,FreeBSD 核心會看到 DF 標誌,丟棄數據包,然後將 ICMP“無法訪問 - 需要分段”消息發送回發送者。它完全起作用的原因是由於其他流量不允許 LRO 發生並且某些數據包被轉發。我做的一項測試是打開 LRO 並使用 scp 將文件放到 pfSense 設備上,這導致了良好的性能(沒有看到同樣的性能下降)。如果您 1) 在 LRO 開啟的情況下看到良好的性能並將一個大文件 scp 到設備,並且 2) 在 LRO 開啟和 scp 到遠端端的機器上看到 ICMP“需要碎片”,我會很感興趣。由於 pfSense 設備被用作網關,您應該​​關閉 LRO。

我想絕對確認同樣的情況。在 VMware 上執行 pfSense,上傳頻寬會非常緩慢,而下載卻很好。對我們來說,只有 pfSense 虛擬機和來賓虛擬機位於同一主機上。當 pfSense 虛擬機和主機虛擬機位於不同的主機上時,問題就消失了。當禁用 pfsense VM 上的解除安裝時(選中打開的框),它立即解決了問題。我不確定它是否只是 VMXNET 3 NIC,但這也是 pfSense VM 的配置方式。我希望這對其他人有所幫助,因為這在任何地方都沒有記錄。我將嘗試讓 pfSense 更新其站點上的 VMware 配置頁面。

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