前方誤り訂正を使用して、高遅延の損失のあるリンク上のネットワーク品質を向上させるトンネル。
UDPspeeder を単独で使用すると、UDP 接続のみが改善されます。それでも、UDPspeeder と任意の UDP ベースの VPN を併用すると、あらゆるトラフィック (TCP/UDP/ICMP を含む) を改善できます。現在、OpenVPN/L2TP/ShadowVPN がサポートされることが確認されています。
または
サーバーへのローカル ネットワークに損失があると仮定します。 UDPspeeder + UDP ベースの VPN を使用してサーバーへの VPN 接続を確立し、この VPN 接続経由でサーバーにアクセスするだけで、接続の品質が大幅に向上します。パラメータを適切に調整すると、IP または UDP/ICMP のパケット損失率を簡単に 0.01% 未満に下げることができます。 UDPspeeder は、パケット損失率を削減するだけでなく、TCP 遅延と TCP シングルスレッドのダウンロード速度を大幅に向上させることもできます。
UDPspeeder Wiki
简体中文
遅延が 100 ミリ秒、両方向でパケット損失が 10% のリンクでテスト済み
Linux ホスト (デスクトップ Linux、Android 電話/タブレット、OpenWRT ルーター、または Raspberry PI を含む)。
Windows および MacOS の場合、この 7.5MB 仮想マシン イメージ内で UDPspeeder を実行できます。
UDPspeeder は FEC (前方誤り訂正) を使用して、追加の帯域幅を犠牲にしてパケット損失率を削減します。 FEC のアルゴリズムはリードソロモンと呼ばれます。
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.
詳細については、ウィキペディアを確認してください。https://en.wikipedia.org/wiki/Reed–Solomon_error_correction
https://github.com/wangyu-/UDPspeeder/releases からバイナリ リリースをダウンロードします。
サーバーの IP が 44.55.66.77 で、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 "
クライアント側の UDP ポート 3333 への接続は、サーバー側のポート 7777 への接続と同等になり、接続は UDPspeeder によって強化されました。
-f20:10
、元のパケット 20 個ごとに 10 個の冗長パケットを送信することを意味します。
-k
単純な XOR 暗号化を有効にします
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
オプション実行中のプログラムにコマンドを送信するには、fifo (名前付きパイプ) を使用します。たとえば、 --fifo fifo.file
では、次のコマンドを使用してパラメータを動的に変更できます。
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
詳細については wiki を確認してください:
https://github.com/wangyu-/UDPspeeder/wiki
UDPspeeder の機能が組み込まれた軽量で高性能な VPN である tinyfecVPN を試すこともできます。リポジトリは次のとおりです。
https://github.com/wangyu-/tinyfecVPN
udp2raw と UDPspeeder を組み合わせて使用すると、UDP QoS (UDP スロットル) を備えた一部の ISP で速度を向上させることができます。リポジトリは次のとおりです。
https://github.com/wangyu-/udp2raw-tunnel