gfcptun: Terowongan koneksi cepat dan latensi rendah menggunakan GFCP melalui UDP.
Menyediakan 65535 atau lebih deskriptor file per proses gfcptun.
MTU 9000-9702 direkomendasikan untuk sambungan lokal berkecepatan tinggi.
Parameter penyetelan sysctl
minimum yang disarankan untuk penanganan UDP Linux:
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
Aplikasi → Keluar (8765/TCP) → Internet → Masuk (4321/UDP) → Server (8765/TCP)
-mode fast3 -ds 10 -ps 3
, dll. Untuk menyetel, tingkatkan -rcvwnd
di klien, dan -sndwnd
di server, secara bersamaan.
Ukuran jendela minimum akan menentukan throughput tautan maksimum: ( 'Wnd' * ( 'MTU' / 'RTT' ) )
MTU harus diatur dengan parameter -mtu dan tidak pernah melebihi MTU antarmuka fisik. Untuk link lokal DC/kecepatan tinggi dengan framing jumbo, sangat disarankan menggunakan MTU 9000-9702.
Sesuaikan agresivitas algoritma transmisi ulang:
fast3
→ fast2
→ fast
→ normal
→ default
Naikkan -smuxbuf
ke 16MiB (atau lebih), namun, nilai sebenarnya yang digunakan bergantung pada kemacetan tautan serta ketersediaan memori sistem yang berdekatan.
SMUXv2 dapat digunakan untuk membatasi penggunaan memori per-stream. Aktifkan dengan -smuxver 2
, lalu selaraskan dengan -streambuf
(size in bytes) .
-smuxver 2 -streambuf 8388608
untuk buffer 8MiB (per streaming).Mulai penyetelan dengan membatasi buffer aliran di sisi penerima tautan.
Konfigurasi SMUXv2 tidak dinegosiasikan , jadi harus diatur secara manual di kedua sisi tautan GFCP.
Rekomendasi penyetelan variabel lingkungan runtime GOGC
:
10 - 20 untuk sistem memori rendah dan perangkat tertanam
120 - 150 (atau lebih tinggi) untuk server khusus
Catatan mengenai penyetelan (GF)SMUX(v1/v2):
Mekanisme kumpulan penyangga mempertahankan tanda air yang tinggi untuk objek yang terbang dari kumpulan agar dapat bertahan dalam pengumpulan sampah waktu proses secara berkala.
Memori akan dikembalikan ke sistem pada runtime Go saat idle. Variabel yang dapat digunakan untuk menyetel ini adalah -sndwnd
, -rcvwnd
, -ds
, dan -ps
.
Pengaturan -smuxbuf
dan variabel GOMAXPROCS
dapat digunakan untuk menyesuaikan keseimbangan antara batas konkurensi dan penggunaan sumber daya secara keseluruhan.
Meningkatkan -smuxbuf
akan meningkatkan batas konkurensi praktis, namun, nilai -smuxbuf
tidak proporsional terhadap maksimum penanganan konkurensi karena pengumpulan sampah runtime Go, untuk tujuan praktis, bersifat non-deterministik.
Hanya pengujian empiris yang dapat memberikan umpan balik yang diperlukan untuk penyetelan dan pengoptimalan tautan di dunia nyata.
Kompresi opsional (menggunakan Snappy ) didukung.
Kompresi menghemat bandwidth pada data redundan dengan entropi rendah , namun akan meningkatkan overhead (dan penggunaan CPU) dalam semua kasus lainnya.
Kompresi diaktifkan secara default : gunakan -nocomp
untuk menonaktifkan.
USR1
, informasi tautan terperinci akan ditampilkan. -mode manual -nodelay 1 -interval 20 -resend 2 -nc 1