Un tunnel qui améliore la qualité de votre réseau sur une liaison avec perte à haute latence en utilisant la correction d'erreur directe.
Lorsqu'il est utilisé seul, UDPspeeder améliore uniquement la connexion UDP. Néanmoins, si vous utilisez UDPspeeder + n'importe quel VPN basé sur UDP ensemble, vous pouvez améliorer n'importe quel trafic (y compris TCP/UDP/ICMP), actuellement OpenVPN/L2TP/ShadowVPN sont confirmés comme étant pris en charge.
ou
Supposons que votre réseau local sur votre serveur entraîne des pertes. Établissez simplement une connexion VPN à votre serveur avec UDPspeeder + n'importe quel VPN basé sur UDP, accédez à votre serveur via cette connexion VPN, la qualité de votre connexion sera alors considérablement améliorée. Avec des paramètres bien réglés, vous pouvez facilement réduire le taux de perte de paquets IP ou UDP/ICMP à moins de 0,01 %. En plus de réduire le taux de perte de paquets, UDPspeeder peut également améliorer considérablement votre latence TCP et votre vitesse de téléchargement TCP monothread.
Wiki UDPspeeder
简体中文
testé sur une liaison avec une latence de 100 ms et 10 % de perte de paquets dans les deux sens
Hôte Linux (y compris Linux de bureau, téléphone/tablette Android, routeur OpenWRT ou Raspberry PI).
Pour Windows et MacOS Vous pouvez exécuter UDPspeeder dans cette image de machine virtuelle de 7,5 Mo.
UDPspeeder utilise FEC (Forward Error Correction) pour réduire le taux de perte de paquets, au prix d'une bande passante supplémentaire. L'algorithme de FEC s'appelle Reed-Solomon.
In coding theory, the Reed–Solomon code belongs to the class of non-binary cyclic error-correcting codes. The Reed–Solomon code is based on univariate polynomials over finite fields.
It is able to detect and correct multiple symbol errors. By adding t check symbols to the data, a Reed–Solomon code can detect any combination of up to t erroneous symbols, or correct up to ⌊t/2⌋ symbols. As an erasure code, it can correct up to t known erasures, or it can detect and correct combinations of errors and erasures. Reed–Solomon codes are also suitable as multiple-burst bit-error correcting codes, since a sequence of b + 1 consecutive bit errors can affect at most two symbols of size b. The choice of t is up to the designer of the code, and may be selected within wide limits.
Consultez Wikipédia pour plus d'informations, https://en.wikipedia.org/wiki/Reed–Solomon_error_correction
Téléchargez la version binaire depuis https://github.com/wangyu-/UDPspeeder/releases
Supposons que l'adresse IP de votre serveur soit 44.55.66.77, vous disposez d'un service qui écoute sur le port UDP 7777.
# Run at server side:
./speederv2 -s -l0.0.0.0:4096 -r 127.0.0.1:7777 -f20:10 -k " passwd "
# Run at client side
./speederv2 -c -l0.0.0.0:3333 -r44.55.66.77:4096 -f20:10 -k " passwd "
Désormais, la connexion au port UDP 3333 côté client équivaut à la connexion au port 7777 côté serveur, et la connexion a été améliorée par UDPspeeder.
-f20:10
signifie envoyer 10 paquets redondants pour 20 paquets originaux.
-k
permet un cryptage XOR simple
Voir le guide de configuration UDPspeeder + openvpn.
UDPspeeder V2
git version: 3e248b414c build date: Aug 5 2018 21:59:52
repository: https://github.com/wangyu-/UDPspeeder
usage:
run as client: ./this_program -c -l local_listen_ip:local_port -r server_ip:server_port [options]
run as server: ./this_program -s -l server_listen_ip:server_port -r remote_ip:remote_port [options]
common options, must be same on both sides:
-k,--key <string> key for simple xor encryption. if not set, xor is disabled
main options:
-f,--fec x:y forward error correction, send y redundant packets for every x packets
--timeout <number> how long could a packet be held in queue before doing fec, unit: ms, default: 8ms
--report <number> turn on send/recv report, and set a period for reporting, unit: s
advanced options:
--mode <number> fec-mode,available values: 0,1; mode 0(default) costs less bandwidth,no mtu problem.
mode 1 usually introduces less latency, but you have to care about mtu.
--mtu <number> mtu. for mode 0, the program will split packet to segment smaller than mtu value.
for mode 1, no packet will be split, the program just check if the mtu is exceed.
default value: 1250. you typically shouldnt change this value.
-q,--queue-len <number> fec queue len, only for mode 0, fec will be performed immediately after queue is full.
default value: 200.
-j,--jitter <number> simulated jitter. randomly delay first packet for 0~<number> ms, default value: 0.
do not use if you dont know what it means.
-i,--interval <number> scatter each fec group to a interval of <number> ms, to protect burst packet loss.
default value: 0. do not use if you dont know what it means.
-f,--fec x1:y1,x2:y2,.. similiar to -f/--fec above,fine-grained fec parameters,may help save bandwidth.
example: "-f 1:3,2:4,10:6,20:10". check repo for details
--random-drop <number> simulate packet loss, unit: 0.01%. default value: 0.
--disable-obscure <number> disable obscure, to save a bit bandwidth and cpu.
developer options:
--fifo <string> use a fifo(named pipe) for sending commands to the running program, so that you
can change fec encode parameters dynamically, check readme.md in repository for
supported commands.
-j ,--jitter jmin:jmax similiar to -j above, but create jitter randomly between jmin and jmax
-i,--interval imin:imax similiar to -i above, but scatter randomly between imin and imax
--decode-buf <number> size of buffer of fec decoder,u nit: packet, default: 2000
--fix-latency <number> try to stabilize latency, only for mode 0
--delay-capacity <number> max number of delayed packets
--disable-fec <number> completely disable fec, turn the program into a normal udp tunnel
--sock-buf <number> buf size for socket, >=10 and <=10240, unit: kbyte, default: 1024
log and help options:
--log-level <number> 0: never 1: fatal 2: error 3: warn
4: info (default) 5: debug 6: trace
--log-position enable file name, function name, line number in log
--disable-color disable log color
-h,--help print this help message
--fifo
Utilisez un fifo (tube nommé) pour envoyer des commandes au programme en cours d'exécution. Par exemple --fifo fifo.file
, vous pouvez utiliser les commandes suivantes pour modifier les paramètres de manière dynamique :
echo fec 19:9 > fifo.file
echo mtu 1100 > fifo.file
echo timeout 5 > fifo.file
echo queue-len 100 > fifo.file
echo mode 0 > fifo.file
Consultez le wiki pour plus d'informations :
https://github.com/wangyu-/UDPspeeder/wiki
Vous pouvez également essayer tinyfecVPN, un VPN léger et performant avec la fonction UDPspeeder intégrée, repo :
https://github.com/wangyu-/tinyfecVPN
Vous pouvez utiliser udp2raw avec UDPspeeder ensemble pour obtenir une meilleure vitesse sur certains FAI avec UDP QoS (UDP throttling), repo :
https://github.com/wangyu-/udp2raw-tunnel