43 Commits

Author SHA1 Message Date
wangyu-
4d3b713b05 fixed get_current_time() 2017-11-24 11:07:37 -06:00
wangyu-
5f0a16cd1f more log info for epoll_wait 2017-11-23 09:58:53 -06:00
wangyu-
a8ed6c8b5e do not quit after got EINTR 2017-11-23 09:42:52 -06:00
wangyu-
eaa0e2b54f Create ISSUE_TEMPLATE.md 2017-11-22 18:52:09 -06:00
wangyu-
6a069f7dc2 Update README.md 2017-11-21 13:42:38 -06:00
wangyu-
0348fcedf6 changed default mode to mode 0;improve help page 2017-11-21 13:42:38 -06:00
wangyu-
4a4b3dc693 Update README.zh-cn.md 2017-11-21 13:42:38 -06:00
wangyu-
9336246f00 fixed a possible MTU issue when redundant num=0 2017-11-21 13:42:38 -06:00
wangyu-
a1d5a3805a increased timeout 2017-11-21 13:42:38 -06:00
wangyu-
baebad1e93 Update README.md 2017-11-21 13:42:38 -06:00
wangyu-
9a23775dfa increased timeout 2017-11-21 13:42:38 -06:00
wangyu-
daab328cf2 changed a log 2017-11-21 13:42:38 -06:00
wangyu-
0e3dee9920 relax an assert 2017-11-21 13:42:38 -06:00
wangyu-
53e580b876 added version.txt 2017-11-21 13:42:38 -06:00
wangyu-
fd076e0a2e Update README.zh-cn.md 2017-11-21 13:42:37 -06:00
wangyu-
057d5262a4 do not drop packet in mode 1 2017-11-21 13:42:37 -06:00
wangyu-
214d3afa98 changed parameter 2017-11-21 13:42:37 -06:00
wangyu-
cb2e337c94 Update README.zh-cn.md 2017-11-21 13:42:37 -06:00
wangyu-
cf24f76bf8 revert last comit 2017-11-21 13:42:37 -06:00
wangyu-
ec63c61e09 relax restriction for fec_data_num==1 2017-11-21 13:42:37 -06:00
wangyu-
d83ae88716 Add files via upload 2017-11-21 13:42:37 -06:00
wangyu-
e5548693df Delete ping_compare_cn.PNG 2017-11-21 13:42:37 -06:00
wangyu-
feeb0f1e45 Update README.zh-cn.md 2017-11-21 13:42:37 -06:00
wangyu-
5e6890a52c Add files via upload 2017-11-21 13:42:37 -06:00
wangyu-
db7b726987 update log 2017-11-21 13:42:37 -06:00
wangyu-
b0614beffa new function tcp csum 2017-11-21 13:42:37 -06:00
wangyu-
2dbb26e394 fixed log 2017-11-21 13:42:37 -06:00
wangyu-
d166432f37 Update README.zh-cn.md 2017-11-21 13:42:37 -06:00
wangyu-
bcdb08691b add option keep-reconnect 2017-11-21 13:42:37 -06:00
wangyu-
f6dba6da1f trival 2017-11-21 13:42:36 -06:00
wangyu-
2419801654 changed default sub-net 2017-11-21 13:42:36 -06:00
wangyu-
5672891485 trival 2017-11-21 13:42:36 -06:00
wangyu-
7f18ccee94 refactor 2017-11-21 13:42:36 -06:00
wangyu-
2f0cfe41b1 changed --tun-dev to required argument 2017-11-21 13:42:36 -06:00
wangyu-
7081c02171 changed parameter 2017-11-21 13:42:36 -06:00
wangyu-
1c03463a82 fixed a missed continue 2017-11-21 13:42:36 -06:00
wangyu-
b0476f5a3a Update README.zh-cn.md 2017-11-21 13:42:36 -06:00
wangyu-
96fd058985 removed tun_dev.cpp and .h 2017-11-21 13:42:36 -06:00
wangyu-
12c65a4564 add dest ip restriction 2017-11-21 13:42:36 -06:00
wangyu-
36c8a36976 fixed typo 2017-11-21 13:42:36 -06:00
wangyu-
7de806f57a more log,more robust 2017-11-21 13:42:36 -06:00
wangyu-
a3b5187b1f aloww len==fec_mtu 2017-11-21 13:42:36 -06:00
wangyu-
ba81aa14d4 just commit 2017-11-21 13:42:36 -06:00
5 changed files with 93 additions and 70 deletions

6
ISSUE_TEMPLATE.md Normal file
View File

@@ -0,0 +1,6 @@
For English speaking user
https://github.com/wangyu-/UDPspeeder/wiki/Issue-Guide
中文用户请看:
https://github.com/wangyu-/UDPspeeder/wiki/发Issue前请看
(否则Issue可能被忽略或被直接关掉)

View File

@@ -78,7 +78,7 @@ Assume your server ip is 44.55.66.77, you have a service listening on udp port 7
./speederv2 -c -l0.0.0.0:3333 -r44.55.66.77:4096 -f20:10 -k "passwd"
```
Now connecting to UDP port 3333 at the client side is equivalent to connecting to port 7777 at the server side, and the connection is boosted by UDPspeeder.
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.
##### Note
@@ -86,43 +86,43 @@ Now connecting to UDP port 3333 at the client side is equivalent to connecting t
`-k` enables simple XOR encryption
To run stably, pay attention to MTU. You can also try `--mode 0`,there will be no MTU problem in this mode.
# Advanced Topic
### Full Options
```
UDPspeeder V2
git version:8e7a8aed92 build date:Oct 25 2017 02:00:54
git version: 6f55b8a2fc build date: Nov 19 2017 06:11:23
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 option,must be same on both sides:
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
--mode <number> fec-mode,available values: 0,1 ; 0 cost less bandwidth,1 cost less latency(default)
--report <number> turn on send/recv report, and set a period for reporting, unit: s
advanced options:
--mtu <number> mtu. for mode 0,the program will split packet to segment smaller than mtu_value.
--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
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.
--random-drop <number> simulate packet loss ,unit:0.01%. default value: 0
--disable-obscure <number> disable obscure,to save a bit bandwidth and cpu
--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
-q,--queue-len <number> max fec queue len,only for mode 0
--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

View File

@@ -52,7 +52,7 @@ u64_t get_current_time()//ms
{
timespec tmp_time;
clock_gettime(CLOCK_MONOTONIC, &tmp_time);
return tmp_time.tv_sec*1000+tmp_time.tv_nsec/(1000*1000l);
return ((u64_t)tmp_time.tv_sec)*1000llu+((u64_t)tmp_time.tv_nsec)/(1000*1000llu);
}
u64_t get_current_time_us()

View File

@@ -94,37 +94,39 @@ https://github.com/wangyu-/UDPspeeder/releases
### 命令选项
```
UDPspeeder V2
git version:8e7a8aed92 build date:Oct 25 2017 02:00:54
git version: 6f55b8a2fc build date: Nov 19 2017 06:11:23
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 option,must be same on both sides:
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
--mode <number> fec-mode,available values: 0,1 ; 0 cost less bandwidth,1 cost less latency(default)
--report <number> turn on send/recv report, and set a period for reporting, unit: s
advanced options:
--mtu <number> mtu. for mode 0,the program will split packet to segment smaller than mtu_value.
--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
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.
--random-drop <number> simulate packet loss ,unit:0.01%. default value: 0
--disable-obscure <number> disable obscure,to save a bit bandwidth and cpu
--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
-q,--queue-len <number> max fec queue len,only for mode 0
--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
@@ -137,6 +139,8 @@ log and help options:
--disable-color disable log color
-h,--help print this help message
```
### 包发送选项,两端设置可以不同。 只影响本地包发送。
##### `-f` 选项
@@ -236,7 +240,9 @@ run at client side:
如果只需要加速UDP不需要加速TCP可以把kcptun换成其他的任意端口转发方式比如ncat/socat/ssh tunnel/iptables/[tinyPortMapper](https://github.com/wangyu-/tinyPortMapper/releases)。
另外,如果没有kcptun只有BBR/锐速的话也可以把kcptun换成ncat/socat/ssh tunnel/iptables/[tinyPortMapper](https://github.com/wangyu-/tinyPortMapper/releases)。这样TCP流量由锐速/BBR加速UDP由UDPspeeder加速。
如果没有kcptun只有BBR/锐速的话也可以把kcptun换成ncat/socat/ssh tunnel/iptables/[tinyPortMapper](https://github.com/wangyu-/tinyPortMapper/releases)。这样TCP流量由锐速/BBR加速UDP由UDPspeeder加速。
另外,即使你不想使用$\*\*\*的TCP功能你也必须把$\*\*\*的TCP端口转发过来否则无法使用UDP功能这是socks5协议的工作方式决定的。($\*\*\*-redir方式不受此限制)
#### UDPspeeder + openvpn + $*** 混合方案也适用于其他VPN
也是我正在用的方案。优点是可以随时在vpn和$\*\*\*方案间快速切换。
@@ -257,12 +263,23 @@ run at client side:
https://github.com/wangyu-/UDPspeeder/wiki/win10系统UDPspeeder-OpenVPN的完整设置
#### UDPspeeder+OpenVPN运行在linux上透明加速linux本机的网络
https://github.com/wangyu-/tinyFecVPN/wiki/tinyFecVPN运行在linux上透明加速linux本机的网络
#### UDPspeeder+OpenVPN运行在虚拟机中加速windows和局域网内其他主机的网络
https://github.com/wangyu-/tinyFecVPN/wiki/tinyFecVPN运行在虚拟机中加速windows和局域网内其他主机的网络
#### 用树莓派做路由器,搭建透明代理,加速游戏主机的网络
https://github.com/wangyu-/UDPspeeder/wiki/用树莓派做路由器,搭建透明代理,加速游戏主机的网络
# 编译教程
暂时先参考udp2raw的这篇教程几乎一样的过程。
https://github.com/wangyu-/udp2raw-tunnel/blob/master/doc/build_guide.zh-cn.md

View File

@@ -113,12 +113,12 @@ int tunnel_client_event_loop()
if (nfds < 0) { //allow zero
if(errno==EINTR )
{
mylog(log_info,"epoll interrupted by signal\n");
myexit(0);
mylog(log_info,"epoll interrupted by signal continue\n");
//myexit(0);
}
else
{
mylog(log_fatal,"epoll_wait return %d\n", nfds);
mylog(log_fatal,"epoll_wait return %d,%s\n", nfds,strerror(errno));
myexit(-1);
}
}
@@ -417,12 +417,12 @@ int tunnel_server_event_loop()
if (nfds < 0) { //allow zero
if(errno==EINTR )
{
mylog(log_info,"epoll interrupted by signal\n");
myexit(0);
mylog(log_info,"epoll interrupted by signal,continue\n");
//myexit(0);
}
else
{
mylog(log_fatal,"epoll_wait return %d\n", nfds);
mylog(log_fatal,"epoll_wait return %d,%s\n", nfds,strerror(errno));
myexit(-1);
}
}