wangyu-UDPspeeder/README.md

100 lines
3.9 KiB
Markdown
Raw Normal View History

2017-10-19 00:55:25 -07:00
# UDPspeeder
2017-10-19 05:53:38 -07:00
2018-02-19 18:08:45 +08:00
A Tunnel which Improves your Network Quality on a High-latency Lossy Link by using Forward Error Correction.
When used alone, UDPspeeder improves only UDP connection. Nevertheless, if you used UDPspeeder + any UDP-based VPN together,
you can improve any traffic(include TCP/UDP/ICMP), currently OpenVPN/L2TP/ShadowVPN are confirmed to be supported。
2017-10-19 10:34:37 -07:00
2017-10-19 10:36:24 -07:00
![](/images/en/udpspeeder.PNG)
2017-10-19 10:22:17 -07:00
2017-10-19 10:36:51 -07:00
or
2017-10-19 11:48:12 -07:00
![image_vpn](/images/en/udpspeeder+openvpn3.PNG)
2017-10-19 00:55:25 -07:00
2017-11-06 18:53:00 -08:00
Assume your local network to your server is lossy. Just establish a VPN connection to your server with UDPspeeder + any UDP-based VPN, access your server via this VPN connection, then your connection quality will be significantly improved. With well-tuned parameters , you can easily reduce IP or UDP/ICMP packet-loss-rate to less than 0.01% . Besides reducing packet-loss-rate, UDPspeeder can also significantly improve your TCP latency and TCP single-thread download speed.
2018-02-22 04:07:14 +08:00
[UDPspeeder Wiki](https://github.com/wangyu-/UDPspeeder/wiki)
2018-02-22 04:06:07 +08:00
2018-02-26 08:01:31 +08:00
[简体中文](/doc/README.zh-cn.md)(内容更丰富)
2017-10-21 17:30:22 -07:00
2017-10-19 10:27:00 -07:00
# Efficacy
2017-10-19 10:22:17 -07:00
tested on a link with 100ms latency and 10% packet loss at both direction
### Ping Packet Loss
2017-10-22 10:35:45 -07:00
![](/images/en/ping_compare_mode1.png)
2017-10-19 10:22:17 -07:00
2017-10-19 10:27:00 -07:00
### SCP Copy Speed
2017-10-19 10:43:21 -07:00
![](/images/en/scp_compare2.PNG)
2017-10-19 10:22:17 -07:00
2017-10-19 10:27:00 -07:00
# Supported Platforms
2017-10-26 21:59:47 +08:00
Linux host (including desktop Linux,Android phone/tablet, OpenWRT router, or Raspberry PI).
2017-10-19 05:53:38 -07:00
2017-11-08 15:49:59 -08:00
For Windows and MacOS You can run UDPspeeder inside [this](https://github.com/wangyu-/udp2raw-tunnel/releases/download/20171108.0/lede-17.01.2-x86_virtual_machine_image.zip) 7.5mb virtual machine image.
2017-10-19 05:53:38 -07:00
# How does it work
2017-10-26 21:59:47 +08:00
UDPspeeder uses FEC(Forward Error Correction) to reduce packet loss rate, at the cost of addtional bandwidth. The algorithm for FEC is called Reed-Solomon.
2017-10-19 10:51:15 -07:00
2017-10-20 21:47:26 -07:00
![image0](/images/en/fec.PNG)
2017-10-19 10:51:15 -07:00
### Reed-Solomon
`
In coding theory, the ReedSolomon code belongs to the class of non-binary cyclic error-correcting codes. The ReedSolomon code is based on univariate polynomials over finite fields.
2017-10-19 10:52:17 -07:00
`
`
2017-10-19 10:51:15 -07:00
It is able to detect and correct multiple symbol errors. By adding t check symbols to the data, a ReedSolomon 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. ReedSolomon 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.
`
![](/images/en/rs.png)
2017-10-19 11:09:00 -07:00
Check wikipedia for more info, https://en.wikipedia.org/wiki/ReedSolomon_error_correction
2017-10-19 05:53:38 -07:00
2017-10-19 10:22:17 -07:00
# Getting Started
### Installing
Download binary release from https://github.com/wangyu-/UDPspeeder/releases
2018-02-26 08:01:31 +08:00
### Running (improves UDP traffic only)
2017-10-19 10:22:17 -07:00
Assume your server ip is 44.55.66.77, you have a service listening on udp port 7777.
2017-10-19 10:31:11 -07:00
2017-10-19 10:22:17 -07:00
```bash
# Run at server side:
2017-10-20 21:52:09 -07:00
./speederv2 -s -l0.0.0.0:4096 -r 127.0.0.1:7777 -f20:10 -k "passwd"
2017-10-19 10:22:17 -07:00
# Run at client side
2017-10-20 21:52:09 -07:00
./speederv2 -c -l0.0.0.0:3333 -r44.55.66.77:4096 -f20:10 -k "passwd"
2017-10-19 10:22:17 -07:00
```
2017-11-19 04:17:05 -08:00
Now connecting to UDP port 3333 at the client side is equivalent to connecting to port 7777 at the server side, and the connection has been boosted by UDPspeeder.
2017-10-19 10:31:11 -07:00
2017-10-19 10:43:21 -07:00
##### Note
`-f20:10` means sending 10 redundant packets for every 20 original packets.
2017-10-19 10:22:17 -07:00
2017-10-29 03:41:28 -07:00
`-k` enables simple XOR encryption
2017-10-22 18:22:53 -07:00
2018-02-26 08:01:31 +08:00
# Improves all traffic with OpenVPN + UDPspeeder
2017-11-26 10:23:28 -08:00
2018-02-26 08:01:31 +08:00
See [UDPspeeder + openvpn config guide](https://github.com/wangyu-/UDPspeeder/wiki/UDPspeeder-openvpn-config-guide).
2017-11-26 10:23:28 -08:00
2018-02-26 08:01:31 +08:00
# wiki
Check wiki for more info:
2017-11-26 10:23:28 -08:00
2018-02-26 08:01:31 +08:00
https://github.com/wangyu-/UDPspeeder/wiki
2017-10-25 00:04:50 -07:00
2018-02-26 08:01:31 +08:00
# Related repo
2017-10-19 10:22:17 -07:00
2018-02-26 08:02:53 +08:00
You can also try tinyfecVPN, a lightweight high-performance VPN with UDPspeeder's function built-in.
2018-02-22 03:46:17 +08:00
2018-02-26 08:01:31 +08:00
tinyfecVPN's repo:
2018-02-22 03:46:17 +08:00
2018-02-26 08:01:31 +08:00
https://github.com/wangyu-/tinyfecVPN
You can use udp2raw with UDPspeeder together to get better speed on some ISP with UDP QoS(UDP throttling).
udp2raw's repo
https://github.com/wangyu-/udp2raw-tunnel