Skip to content

推荐设置(旧)和解释

wangyu- edited this page Feb 19, 2018 · 2 revisions

非游戏场景的推荐设置(针对视频、下载、网页等日常应用)

./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个冗余包,需要根据自己网络的丢包率调整。如果你实在不会测自己网络的丢包率,那就把参数调得大一些(比如-f15:15-f10:20等),先保证使用起来没问题,再逐渐调小。

注:如果你不是极端专业的玩家,用这个设置玩游戏也可以。多出几毫秒延迟,基本上不可感知。

提醒:即使你是土豪,即使你的本地宽带有200M、VPS流量不限量;请不要使用过高的冗余度,这样除了对你自己没好处以外,还会挤占国际出口带宽,造成网络拥堵。

进阶说明(仅供延伸阅读,可以跳过)

首先必须说明,程序自带默认的-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 1250,编码器会考虑mtu,如果再积攒数据会导致拆分后的数据包超过1250(可以自己调整),那么编码器就不会继续积攒数据。而是立即开始做fec。

你可以尝试调整--timeout选项。调高可以使FEC编码器能够积攒更多的包,更有效率;调低可以降低延迟。-q选项也可以调整,不过一般没必要调整。

除非你是开发者,建议不要调整--mtu选项。

--mode 1模式说明(仅供延伸阅读,不推荐使用,可以跳过)

如果你使用了--mode 1模式,fec编码器不会对数据包进行任何拆分,所以会有mtu问题,不推荐新手使用。

--mode 1 -f20:10参数的完整形式是--mode 1 -f20:10 --timeout 8。意思是,编码器先搜集20个数据包,然后对这20个数据包发送10个冗余包。如果在8毫秒内没能积攒到20个数据包,也会立即做fec。 如果有数据包超过mtu的长度,fec编码器会打一条warning日志,但是不会发生任何拆分。

--mode 1模式有一个优化,对于-f20:10的前20个数据包不必等做完fec以后发送,而是可以立即发送,只要数据包不丢,就不会引入延迟。除了mtu问题以外,还有一个缺点,就是不会把数据包切分到等长,这样在做FEC时需要把数据包对齐到最大长度(用0填充),生成的冗余包会比--mode 0模式长一些,所以更耗流量。

-q参数在--mode 1模式下无效。

进阶设置(第一次使用请跳过此节)

你也可以尝试下面的选项。

./speederv2 -s -l0.0.0.0:4096 -r127.0.0.1:7777    -k "passwd" --mode 0  -f20:10  -i10
./speederv2 -c -l0.0.0.0:3333 -r44.55.66.77:4096  -k "passwd" --mode 0  -f20:10  -i10

-i10的意思是把 -f20:10的一共30个包均匀分散到10毫秒中发送。可以抵抗网络的突发性丢包(一丢丢一片那种),但是会牺牲一些延迟(小于10毫秒)。你还可以尝试-i5 -i20等。

如果-f20:10的冗余度不够,可以尝试调高。如果无论怎么改参数效果都不理想,可能是你的运营商对udp有限速,可以尝试串联udp2raw。

玩游戏的推荐设置(新);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倍发包)。

提醒:多倍发包只对游戏有意义,因为不会引入额外延迟。 对于视频和下载,FEC参数-f20:10用1.5倍的流量就可以达到好几倍发包的效果。 所以不要用多倍发包来看视频和下载,害人又害己。

进阶说明(仅供延伸阅读,可以跳过)

-q1--mode 0模式下针对游戏的一个特殊设置,意思是,只要收到1个包就开始做FEC,可以防止fec编码器试图积攒数据包。不会引入延迟。

--mode 0 -q1 -f2:4的意思是,只要收到1个数据包就立即开始做FEC,首先把这1个数据包拆成2个,然后再发送4个冗余包。得益于reed solomon算法,只要这6个包中的任意2个被收到,就可以完整恢复出数据。

另外,程序里有优化,并不是所有数据包都会被拆成2个;如果程序判断拆包不合适(overhead过大),也可能会不拆。

-q1 只适合配合-f2:xxx,不要滥用此参数。

进阶设置(第一次使用请跳过此节)

也可尝试如下设置:

./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更高效一些(可以把几个短包合并到一起,或者把短包合并到长包里捎带发送),但是会牺牲一毫秒的延迟。通常--timeout的值越高,效率越高,但是延迟也越高。

另外你也可以尝试 -q2--timeout 2等,甚至把-q--timeout一起用,比如-q5 --timeout 3的意思是,最多积攒5个数据包,最多积攒3毫秒的数据。

如果指定了-q1选项,就相当于强制设置了--timeout 0,不必再设置--timeout

你也可以尝试加前面提到的-i选项。还可以尝试串联udp2raw。

Clone this wiki locally