| ... | ... | @@ -15,69 +15,9 @@ |
|
|
|
|
|
|
|
x>=2是唯一的注意事项,一定要注意。
|
|
|
|
|
|
|
|
## V2版如何多倍发包(新);玩游戏的推荐设置
|
|
|
|
## 推荐的设置
|
|
|
|
|
|
|
|
新的推荐参数。以前推荐的参数需要考虑MTU问题,而很多人对MTU没有概念。所以,现在推荐一个新的参数,免去考虑MTU的烦恼。
|
|
|
|
|
|
|
|
玩游戏的推荐设置:
|
|
|
|
|
|
|
|
```
|
|
|
|
./speederv2 -s -l0.0.0.0:4096 -r127.0.0.1:7777 -k "passwd" --mode 0 -f2:4 -q1
|
|
|
|
./speederv2 -c -l0.0.0.0:3333 -r44.55.66.77:4096 -k "passwd" --mode 0 -f2:4 -q1
|
|
|
|
```
|
|
|
|
|
|
|
|
`-f2:4`表示对每2个数据包发送4个冗余包。也就是3倍发包。里面的2不要改,4可以自己调整(比如改成2/3/5之类的数字,`-f2:2`就是2倍发包,`-f2:3`是2.5倍发包)。
|
|
|
|
|
|
|
|
`-q1`是mode 0针对游戏的一个特殊设置,意思是,只要收到1个包就开始做FEC,可以防止fec编码器试图积攒数据包。不会引入延迟。
|
|
|
|
|
|
|
|
提醒:多倍发包只对游戏有意义,因为不会引入额外延迟。 FEC参数`-f20:10`用1.5倍的流量就可以达到好几倍发包的效果。 所以不要用多倍发包来看视频和下载,害人又害己。
|
|
|
|
##### 进阶说明(第一次使用请跳过此节)
|
|
|
|
|
|
|
|
`--mode 0 -q1 -f2:4`的意思是,只要收到1个数据包就拆成2个,然后发送4个冗余数据包。得益于reed solomon算法,只要这6个包中的任意2个被收到,就可以完整恢复出数据。
|
|
|
|
|
|
|
|
另外,程序里有优化,并不是所有数据包都会被拆成2个;如果程序判断拆包不合适,也可能会不拆。
|
|
|
|
|
|
|
|
##### 进阶设置(第一次使用请跳过此节)
|
|
|
|
|
|
|
|
也可尝试如下设置:
|
|
|
|
```
|
|
|
|
./speederv2 -s -l0.0.0.0:4096 -r127.0.0.1:7777 -k "passwd" --mode 0 -f2:4 --timeout 1
|
|
|
|
./speederv2 -c -l0.0.0.0:3333 -r44.55.66.77:4096 -k "passwd" --mode 0 -f2:4 --timeout 1
|
|
|
|
```
|
|
|
|
|
|
|
|
前面说的`-q1`的意思是收到一个包就开始做FEC,`--timeout 1`的意思是积攒1毫秒的数据包以后开始做FEC。`--timeout 1`更高效一些,但是会牺牲一毫秒的延迟。
|
|
|
|
|
|
|
|
另外你也可以尝试 `-q2`、`--timeout 2`等,甚至把`-q`和`--timeout`一起用,比如`-q5 --timeout 3`的意思是,最多积攒5个数据包,最多积攒3毫秒的数据。
|
|
|
|
|
|
|
|
你也可以尝试加上后面会提到的`-i`选项。还可以尝试串联udp2raw。
|
|
|
|
|
|
|
|
## 非游戏场景的推荐设置
|
|
|
|
|
|
|
|
```
|
|
|
|
./speederv2 -s -l0.0.0.0:4096 -r127.0.0.1:7777 -k "passwd" --mode 0 -f20:10
|
|
|
|
./speederv2 -c -l0.0.0.0:3333 -r44.55.66.77:4096 -k "passwd" --mode 0 -f20:10
|
|
|
|
```
|
|
|
|
里面的`-f20:10`表示对每20个数据包发送10个冗余包,需要根据自己网络的丢包率调整。如果你实在不会测自己网络的丢包率,那就把参数调得大一些,先保证使用起来没问题,再逐渐调小。
|
|
|
|
|
|
|
|
注:如果你不是极端专业的玩家,用这个设置玩游戏也可以。多出几毫秒延迟,基本上不可感知。
|
|
|
|
|
|
|
|
##### 进阶说明(第一次使用请跳过此节)
|
|
|
|
|
|
|
|
首先必须说明,程序自带默认的`-q 200`和`--timeout 8`参数。
|
|
|
|
`--mode 0 -f20:10`参数的完整形式是`--mode 0 -f20:10 -q 200 --timeout 8`。含义是: fec编码器最多积攒8ms的数据,最多积攒200个数据包。之后,fec编码器会把搜集到的数据先合并再均匀拆分成20个数据包,然后发送10个冗余包。得益于reed solomon算法,只要这30个包中的任意20个被收到,就可以完整恢复出数据。
|
|
|
|
|
|
|
|
另外,编码器会考虑mtu,如果积攒的数据将要导致拆分后的数据包超过mtu,那么编码器就不会继续积攒数据。而是立即开始做fec。
|
|
|
|
|
|
|
|
##### 进阶设置(第一次使用请跳过此节)
|
|
|
|
你也可以尝试下面的选项。
|
|
|
|
```
|
|
|
|
./speederv2 -s -l0.0.0.0:4096 -r127.0.0.1:7777 -f20:10 -k "passwd" --mode 0 -i 10
|
|
|
|
./speederv2 -c -l0.0.0.0:3333 -r44.55.66.77:4096 -f20:10 -k "passwd" --mode 0 -i 10
|
|
|
|
```
|
|
|
|
|
|
|
|
`-i10`的意思是把 `-f20:10`的一共30个包均匀分散到10毫秒中发送。可以抵抗网络的突发性丢包(一丢丢一片那种)。你还可以尝试`-i 5` `-i 20`等。
|
|
|
|
|
|
|
|
如果`-f20:10`效果不理想,可以尝试`-f15:15`、`-f10:20`等。如果无论怎么改参数效果都不理想,可能是你的运营商对udp有限速,可以尝试串联udp2raw。
|
|
|
|
https://github.com/wangyu-/UDPspeeder/wiki/推荐设置
|
|
|
|
|
|
|
|
## `-f`参数和丢包的关系;是否发包倍数越多效果就越好?
|
|
|
|
比如`-f20:10`,表示对每20个原始包发送10个冗余包,流量消耗1.5倍。这样,只要30个包中有20个到达,数据就可以被完全恢复。
|
| ... | ... | |
| ... | ... | |