순방향 오류 수정을 사용하여 대기 시간이 긴 손실 링크에서 네트워크 품질을 향상시키는 터널입니다.
UDPspeeder를 단독으로 사용하면 UDP 연결만 향상됩니다. 그럼에도 불구하고 UDPspeeder와 UDP 기반 VPN을 함께 사용하면 모든 트래픽(TCP/UDP/ICMP 포함)을 개선할 수 있으며 현재 OpenVPN/L2TP/ShadowVPN이 지원되는 것으로 확인되었습니다.
또는
서버에 대한 로컬 네트워크에 손실이 있다고 가정합니다. UDPspeeder + UDP 기반 VPN을 사용하여 서버에 VPN 연결을 설정하고, 이 VPN 연결을 통해 서버에 액세스하면 연결 품질이 크게 향상됩니다. 매개변수를 잘 조정하면 IP 또는 UDP/ICMP 패킷 손실률을 0.01% 미만으로 쉽게 줄일 수 있습니다. UDPspeeder는 패킷 손실률을 줄이는 것 외에도 TCP 대기 시간과 TCP 단일 스레드 다운로드 속도를 크게 향상시킬 수 있습니다.
UDP스피더 위키
简体中文
양방향에서 지연 시간이 100ms이고 패킷 손실이 10%인 링크에서 테스트되었습니다.
Linux 호스트(데스크톱 Linux, Android 휴대폰/태블릿, OpenWRT 라우터 또는 Raspberry PI 포함)
Windows 및 MacOS의 경우 이 7.5mb 가상 머신 이미지 내에서 UDPspeeder를 실행할 수 있습니다.
UDPspeeder는 FEC(Forward Error Correction)를 사용하여 대역폭을 추가하는 대신 패킷 손실률을 줄입니다. FEC 알고리즘을 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.
자세한 내용은 위키피디아(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
자세한 내용은 위키를 확인하세요.
https://github.com/wangyu-/UDPspeeder/wiki
UDPspeeder의 기능이 내장된 경량 고성능 VPN인tinyfecVPN을 사용해 볼 수도 있습니다.
https://github.com/wangyu-/tinyfecVPN
UDP Speeder와 함께 udp2raw를 사용하면 UDP QoS(UDP 조절)를 사용하는 일부 ISP에서 더 나은 속도를 얻을 수 있습니다.
https://github.com/wangyu-/udp2raw-tunnel