Linux

通過 Linux 防火牆 VM 的緩慢網路傳輸

  • April 3, 2013

我們有一個 RedHat 5.8 VM 在 Cisco UCS 之上的 ESX 上執行,它使用 iptables 充當防火牆。盒子有多個網卡,一個網卡用作我們網路的網關,其他網卡每個都進入一個單獨的 VLAN/網路。我看到的問題是,從主機直接到防火牆 VM 進行 iperf 測試可提供 800+ Mbps 的速度,但嘗試從防火牆外的主機到防火牆內的主機進行 iperf 測試(導致流量通過通過防火牆)產生大約 30Mbps 或更低的速度。

細節:

  • 我不確定我們正在執行什麼發行版或版本的 ESX 或 UCS,但我可以確定這是否重要。我們的系統管理員會保持最新狀態,因此它們很可能在最近的幾次更新中。
  • 我知道我們正在為網路適配器使用 VMXNET 3 驅動程序。
  • 所有連接都經過驗證為 1Gbps。

我試過的:

  • 根據我的閱讀,e1000 驅動程序有更好的結果,因此我們使用該驅動程序添加了幾個網卡,並通過這些介面進行了 iperf 測試,結果相同。
  • 檢查在測試的介面上是否禁用了 LRO。當我執行“ethtool -K ethX lro off”時,它報告“未更改解除安裝設置”,我認為這意味著它已經被禁用。
  • 還在測試的介面上禁用了 TSO。
  • 當我進行速度測試時,我通常是通過同一集群上的防火牆從物理設備到虛擬設備進行測試。我還嘗試通過防火牆從虛擬設備到虛擬設備進行測試,得到了相同的結果。
  • 禁用 iptables 並執行速度測試,收到相同的結果。
  • 除了可能使事情變得更慢(我有一次<10 Mbps)之外,上面的所有項目都沒有改變任何東西。

因為我可以通過防火牆本身獲得 800+ Mbps,這讓我認為 nics 本身的配置沒有任何問題。我覺得作業系統本身的轉發存在一些問題,因為它似乎只在它通過防火牆傳遞流量時才顯現出來。我還應該注意,在此過程中我沒有觀察到任何 CPU 峰值。

我確定我遺漏了一些細節,所以如果有任何進一步的問題,請告訴我。我很感激任何幫助!

我們找到了解決方案。我們必須在 UCS 的刀片級別禁用 LRO(如此處所示 -> http://docwiki.cisco.com/wiki/Disable_LRO)。一旦我們這樣做了,速度就會上升到 700+MBps,這僅僅是因為 CPU 和 iptables 處理的限制。

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