Un túnel que mejora la calidad de su red en un enlace con pérdida de alta latencia mediante la corrección de errores de reenvío.
Cuando se usa solo, UDPspeeder solo mejora la conexión UDP. Sin embargo, si usó UDPspeeder + cualquier VPN basada en UDP juntos, puede mejorar cualquier tráfico (incluido TCP/UDP/ICMP), actualmente se confirma que OpenVPN/L2TP/ShadowVPN es compatible.
o
Suponga que su red local hacia su servidor tiene pérdidas. Simplemente establezca una conexión VPN a su servidor con UDPspeeder + cualquier VPN basada en UDP, acceda a su servidor a través de esta conexión VPN y luego la calidad de su conexión mejorará significativamente. Con parámetros bien ajustados, puede reducir fácilmente la tasa de pérdida de paquetes IP o UDP/ICMP a menos del 0,01 %. Además de reducir la tasa de pérdida de paquetes, UDPspeeder también puede mejorar significativamente la latencia de TCP y la velocidad de descarga de un solo subproceso de TCP.
Wiki UDPspeeder
简体中文
probado en un enlace con una latencia de 100 ms y una pérdida de paquetes del 10 % en ambas direcciones
Host Linux (incluido Linux de escritorio, teléfono/tableta Android, enrutador OpenWRT o Raspberry PI).
Para Windows y MacOS Puede ejecutar UDPspeeder dentro de esta imagen de máquina virtual de 7,5 MB.
UDPspeeder utiliza FEC (corrección de errores de reenvío) para reducir la tasa de pérdida de paquetes, a costa de ancho de banda adicional. El algoritmo para FEC se llama 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.
Consulte Wikipedia para obtener más información, https://en.wikipedia.org/wiki/Reed–Solomon_error_correction
Descargue la versión binaria desde https://github.com/wangyu-/UDPspeeder/releases
Supongamos que la IP de su servidor es 44.55.66.77, tiene un servicio escuchando en el puerto 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 "
Ahora conectarse al puerto UDP 3333 en el lado del cliente equivale a conectarse al puerto 7777 en el lado del servidor, y UDPspeeder ha impulsado la conexión.
-f20:10
significa enviar 10 paquetes redundantes por cada 20 paquetes originales.
-k
habilita el cifrado XOR simple
Consulte la guía de configuración de 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
Utilice un fifo (canalización con nombre) para enviar comandos al programa en ejecución. Por ejemplo --fifo fifo.file
, puede utilizar los siguientes comandos para cambiar los parámetros dinámicamente:
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
Consulte la wiki para obtener más información:
https://github.com/wangyu-/UDPspeeder/wiki
También puedes probar tinyfecVPN, una VPN liviana de alto rendimiento con la función UDPspeeder incorporada, repositorio:
https://github.com/wangyu-/tinyfecVPN
Puede usar udp2raw con UDPspeeder juntos para obtener una mejor velocidad en algunos ISP con UDP QoS (limitación UDP), repositorio:
https://github.com/wangyu-/udp2raw-tunnel