Ein Tunnel, der Ihre Netzwerkqualität auf einer verlustbehafteten Verbindung mit hoher Latenz durch die Verwendung der Vorwärtsfehlerkorrektur verbessert.
Bei alleiniger Verwendung verbessert UDPspeeder nur die UDP-Verbindung. Wenn Sie jedoch UDPspeeder + ein beliebiges UDP-basiertes VPN zusammen verwenden, können Sie den gesamten Datenverkehr (einschließlich TCP/UDP/ICMP) verbessern. Derzeit wird bestätigt, dass OpenVPN/L2TP/ShadowVPN unterstützt wird.
oder
Gehen Sie davon aus, dass Ihr lokales Netzwerk zu Ihrem Server verlustbehaftet ist. Stellen Sie einfach eine VPN-Verbindung zu Ihrem Server mit UDPspeeder + einem beliebigen UDP-basierten VPN her, greifen Sie über diese VPN-Verbindung auf Ihren Server zu, dann wird Ihre Verbindungsqualität deutlich verbessert. Mit gut abgestimmten Parametern können Sie die IP- oder UDP/ICMP-Paketverlustrate problemlos auf weniger als 0,01 % reduzieren. Neben der Reduzierung der Paketverlustrate kann UDPspeeder auch Ihre TCP-Latenz und die TCP-Single-Thread-Download-Geschwindigkeit erheblich verbessern.
UDPspeeder-Wiki
简体中文
Getestet auf einer Verbindung mit 100 ms Latenz und 10 % Paketverlust in beide Richtungen
Linux-Host (einschließlich Desktop-Linux, Android-Telefon/Tablet, OpenWRT-Router oder Raspberry PI).
Für Windows und MacOS können Sie UDPspeeder in diesem 7,5 MB großen virtuellen Maschinen-Image ausführen.
UDPspeeder nutzt FEC (Forward Error Correction), um die Paketverlustrate auf Kosten zusätzlicher Bandbreite zu reduzieren. Der Algorithmus für FEC heißt 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.
Weitere Informationen finden Sie auf Wikipedia: https://en.wikipedia.org/wiki/Reed–Solomon_error_correction
Laden Sie die Binärversion von https://github.com/wangyu-/UDPspeeder/releases herunter
Angenommen, Ihre Server-IP ist 44.55.66.77, Sie haben einen Dienst, der den UDP-Port 7777 überwacht.
# 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 "
Jetzt entspricht die Verbindung zum UDP-Port 3333 auf der Clientseite der Verbindung zu Port 7777 auf der Serverseite, und die Verbindung wurde durch UDPspeeder verstärkt.
-f20:10
bedeutet, dass für jeweils 20 Originalpakete 10 redundante Pakete gesendet werden.
-k
ermöglicht eine einfache XOR-Verschlüsselung
Siehe UDPspeeder + OpenVPN-Konfigurationsanleitung.
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
Option Verwenden Sie ein FIFO (Named Pipe), um Befehle an das laufende Programm zu senden. Zum Beispiel --fifo fifo.file
können Sie die folgenden Befehle verwenden, um Parameter dynamisch zu ändern:
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
Weitere Informationen finden Sie im Wiki:
https://github.com/wangyu-/UDPspeeder/wiki
Sie können auch tinyfecVPN ausprobieren, ein leichtes Hochleistungs-VPN mit integrierter UDPspeeder-Funktion, Repo:
https://github.com/wangyu-/tinyfecVPN
Sie können udp2raw zusammen mit UDPspeeder verwenden, um bei einigen ISPs mit UDP QoS (UDP-Drosselung) eine bessere Geschwindigkeit zu erzielen, Repo:
https://github.com/wangyu-/udp2raw-tunnel