gfcptun : un tunnel de connexion rapide et à faible latence utilisant GFCP sur UDP.
Rendre disponible 65 535 descripteurs de fichiers ou plus par processus gfcptun.
Un MTU de 9 000 à 9 702 est recommandé pour les liaisons locales à haut débit.
Paramètres de réglage sysctl
minimum suggérés pour la gestion Linux UDP :
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
Application → Sortie (8765/TCP) → Internet → Entrée (4321/UDP) → Serveur (8765/TCP)
-mode fast3 -ds 10 -ps 3
, etc. Pour effectuer le réglage, augmentez -rcvwnd
sur le client et -sndwnd
sur le serveur, à l'unisson.
La taille minimale de la fenêtre dictera le débit maximal du lien : ( 'Wnd' * ( 'MTU' / 'RTT' ) )
La MTU doit être définie par le paramètre -mtu et ne jamais dépasser la MTU de l'interface physique. Pour les liaisons locales DC/haut débit avec tramage jumbo, l'utilisation d'un MTU de 9000-9702 est fortement recommandée.
Ajuster l'agressivité de l'algorithme de retransmission :
fast3
→ fast2
→ fast
→ normal
→ default
Augmentez -smuxbuf
à 16 Mo (ou plus), cependant, la valeur réelle à utiliser dépend de la congestion des liens ainsi que de la mémoire système contiguë disponible.
SMUXv2 peut être utilisé pour limiter l'utilisation de la mémoire par flux. Activez avec -smuxver 2
, puis réglez avec -streambuf
(taille en octets) .
-smuxver 2 -streambuf 8388608
pour un tampon de 8 Mo (par flux).Commencez le réglage en limitant le tampon de flux du côté réception du lien.
La configuration SMUXv2 n'est pas négociée et doit donc être définie manuellement des deux côtés de la liaison GFCP.
Recommandation de réglage des variables de l'environnement d'exécution GOGC
:
10 à 20 pour les systèmes à faible mémoire et les appareils embarqués
120 - 150 (ou plus) pour les serveurs dédiés
Remarques concernant le réglage (GF)SMUX(v1/v2) :
Le mécanisme du pool de mémoire tampon maintient un filigrane élevé pour les objets en vol du pool afin de survivre au garbage collection périodique d'exécution.
La mémoire sera restituée au système par le runtime Go lorsqu'il est inactif. Les variables qui peuvent être utilisées pour régler cela sont -sndwnd
, -rcvwnd
, -ds
et -ps
.
Le paramètre -smuxbuf
et la variable GOMAXPROCS
peuvent être utilisés pour régler l'équilibre entre la limite de simultanéité et l'utilisation globale des ressources .
L'augmentation -smuxbuf
augmentera la limite pratique de concurrence. Cependant, la valeur -smuxbuf
n'est pas linéairement proportionnelle au maximum de gestion de concurrence car le garbage collection du runtime Go est, à des fins pratiques, non déterministe.
Seuls des tests empiriques peuvent fournir les informations nécessaires au réglage et à l'optimisation des liens dans le monde réel.
La compression facultative (à l'aide de Snappy ) est prise en charge.
La compression permet d'économiser de la bande passante sur les données redondantes à faible entropie , mais augmentera la surcharge (et l'utilisation du processeur) dans tous les autres cas.
La compression est activée par défaut : utilisez -nocomp
pour la désactiver.
USR1
, des informations détaillées sur la liaison seront affichées. -mode manual -nodelay 1 -interval 20 -resend 2 -nc 1