gfcptun:使用 GFCP over UDP 的快速、低延遲連接隧道。
為每個 gfcptun 進程提供 65535 個或更多檔案描述符。
對於高速本地鏈路,建議使用 9000-9702 的 MTU。
針對 Linux UDP 處理建議的最小sysctl
調整參數:
net.core.rmem_max=26214400 # Tune for BDP (bandwidth delay product)
net.core.rmem_default=26214400
net.core.wmem_max=26214400
net.core.wmem_default=26214400
net.core.netdev_max_backlog=2048 # (Adjust proportional to receive window)
-sockbuf 16777217
client -r " IN:4321 " -l " :8765 " -mode fast3 -nocomp -autoexpire 900 -sockbuf 33554434 -dscp 46
server -t " OUT:8765 " -l " :4321 " -mode fast3 -nocomp -sockbuf 33554434 -dscp 46
應用程式 → 輸出 (8765/TCP) → 網際網路 → 輸入 (4321/UDP) → 伺服器 (8765/TCP)
-mode fast3 -ds 10 -ps 3
等。 若要進行調整,請同時增加客戶端上的-rcvwnd
和伺服器上的-sndwnd
。
最小視窗大小將決定最大連結吞吐量:( ( 'Wnd' * ( 'MTU' / 'RTT' ) )
MTU 應透過-mtu 參數設置,並且永遠不要超過實體介面的MTU。對於具有巨型幀的 DC/高速本地鏈路,強烈建議使用 9000-9702 的 MTU。
調整重傳演算法的攻擊性:
fast3
→ fast2
→ fast
→ normal
→ default
然而,將-smuxbuf
提高到 16MiB(或更多),實際使用的值取決於鏈路擁塞以及可用的連續系統記憶體。
SMUXv2 可用於限制每個流的記憶體使用量。使用-smuxver 2
啟用,然後使用-streambuf
(大小以位元組為單位)進行調整。
-smuxver 2 -streambuf 8388608
表示 8MiB 緩衝區(每個流)。透過限制鏈路接收端的流緩衝區開始調整。
SMUXv2 配置不可協商,因此必須在 GFCP 連結兩側手動設定。
GOGC
運行時環境變數調優建議:
10 - 20適用於低記憶體系統和嵌入式設備
專用伺服器為120 - 150 (或更高)
有關 (GF)SMUX(v1/v2) 調整的注意事項:
緩衝池機制為池中正在運行的物件維護一個高水位線,以便在定期運行時垃圾回收中倖存下來。
閒置時,Go 運行時會將記憶體回傳給系統。可用於調整的變數有-sndwnd
、 -rcvwnd
、 -ds
和-ps
。
-smuxbuf
設定和GOMAXPROCS
變數可用於調整並發限制和整體資源使用之間的平衡。
增加-smuxbuf
將增加實際並發限制,但是, -smuxbuf
值與並發處理最大值不成線性正比,因為出於實際目的,Go 運行時的垃圾收集是不確定的。
只有經驗測試才能提供實際鏈路調整和最佳化所需的回饋。
支援可選壓縮(使用Snappy )。
壓縮可以節省冗餘、低熵資料的頻寬,但在所有其他情況下會增加開銷(和 CPU 使用率)。
預設啟用壓縮:使用-nocomp
停用。
USR1
訊號後,將顯示詳細的連結資訊。 -mode manual -nodelay 1 -interval 20 -resend 2 -nc 1