在支持 TCO 的 OpenBSD 和 NIC 上設置 VDSL 路由器
這是我的第一個問題,我希望我做的一切都是正確的。感謝您設置 serverfault - 這樣的網站已經在網際網路上失去了很長時間。
在接下來的幾週內,我將獲得我的 VDSL 25 連接(充其量是 25 Mbit 下載和 5 Mbit 上傳)。所以現在我正在考慮為 VDSL 設置我自己的路由器,因為我不想使用我通過 VDSL 25 獲得的 Speedport 路由器。
我真的很喜歡 OpenBSD,而且我找到了一個關於Using OpenBSD with VDSL的不錯的指南。在一篇關於為 VDSL 設置基於 FreeBSD 的 pfSense的德語文章中,我讀到電腦應該具有至少 1 GHz 和 1024 MB RAM。
我的機器將是一個 800 MHz Pentium 3 和 512 MB RAM,但我考慮購買一個 30 美元的 Intel Gigbit NIC with TCO(TCP Checksum Offloading)。一位同事向我提出了這個建議,因為他說這會大大降低 CPU 負載,而我的 800 MHz P3 可能綽綽有餘。
那麼,您對 VDSL 的“硬體要求”有一些經驗嗎?如果有 TCO 的 NIC 可以提供幫助?
提前感謝您的所有回答!
pfSense 的推薦規格是方式,方式,方式過度。您的機器應該可以很輕鬆地處理該負載。作為參考,我在生產中使用了一段時間的 Soekris Net5501,它以大約 45Mbps 的速度下降。它配備了 500MHz Geode、256MB RAM 和一些有史以來最糟糕的 NIC(通過 Rhinestone - vr 驅動程序)。
根據我的經驗,像這樣的路由器上最常見的大性能障礙是快速觸發中斷所需的上下文切換。像 Rhinestones 這樣的糟糕 NIC 會為它們收到的每個數據包觸發一個中斷。這成為一個主要問題,因為必須處理每個數據包,但是糟糕!在處理它的過程中,另一個進來了。所以你把它拉出來,被打斷等等。上下文切換是一項昂貴的操作,很快就會使慢速 CPU 不堪重負。
好的 NIC(Intel 和 Broadcom 都是可靠的)具有中斷緩解功能,這意味著它們只會在累積一定數量的數據包或計時器達到 0 時才會對 CPU 進行故障處理。像這樣在塊中操作要高效得多而不是不斷的上下文切換。
一些作業系統試圖通過輪詢來模擬中斷緩解 - 核心忽略 NIC 的中斷,只是每隔一段時間檢查其緩衝區。這會導致更高的吞吐量和更低的 CPU 使用率,但會以延遲為代價,如果 NIC 的緩衝區填滿,可能會失去數據包等。OpenBSD 沒有實現輪詢。以我的經驗,中斷緩解優於輪詢,而且像樣的 NIC 的價格足夠低,沒有太多藉口。
記憶體真的不應該是一個問題。OpenBSD 和 PF 非常高效。在相當緩慢的一天(今天),我的一個生產路由器的記憶體中有大約 17.5k 個狀態。它還執行 spamd,記錄所有被阻止的數據包,並在其最活躍的介面上執行 tcpdump。使用 191MB 記憶體。
因此,無論 TCO 與否,所有這些都足以說明您的規格綽綽有餘。