dog-tunnel icon indicating copy to clipboard operation
dog-tunnel copied to clipboard

fec模式下延迟抖动比较厉害

Open bhzhu203 opened this issue 8 years ago • 8 comments

首先感谢dog-tunnel的作者。我第一时间把最新的dog-tunnel的源码拿出来编译,以体验 新增的commpress、fec模式。下面是我几点的疑问: 1。看到最新的提交,commpress、fec模式只能用于UDP模式? 2。commpress模式说明里面说两端都要指定,但是在参数那里写了一个“c"; 在fec模式也是客户端指定就可以了? 3。本人远端的服务器是日本的。使用tcp模式转发vpn流量时ping值最接近原始服务器ping值;使用UDP模式时ping值明显增加50ms~70ms,fec模式抖动就比较明显,低的时候很低,高的时候特别高。有时瞬时值600ms~1000ms。 下面是延迟比较:TCP(commpress、fec)< UDP (commpress、encrypt)<UDP (commpress、ds10 -ps3) < (commpress、ds5 -ps5)

4.好像KCP可以调参数的?手动调参数觉得有点繁琐,如果能像KCPtun 那样有normal、fast、fast2、fast3这种傻瓜选项就好了。

另外反馈一下,开了fec模式模式之后,下载速度可以跑满本地带宽,真不错。看了服务器带宽使用比本地还要大,哈哈。

bhzhu203 avatar Nov 21 '16 14:11 bhzhu203

5。开了fec模式之后 最初连接的时候特别慢,有时还卡住了。是不是 fec模式有特征码被拦住了?

bhzhu203 avatar Nov 21 '16 14:11 bhzhu203

compress fec都是在udp模式中才支持,因为实现是在udp会话协议中实现的,三个参数都只指定c端,应该已经更新过了(p2p版本是需要两端指定),具体效果我还没有仔细测试过,只保证了逻辑正常,压缩库跟纠错库都使用了第三方库,所以不太保证这方面的效率,压缩库这个根据作者的说明,在CGO_ENABLED打开的情况下编译效率会比纯go的方式快很多,不知道你是用哪种方式的,-compress对tcp是没有效果的,你说的延迟高,看起来不是很正常的样子,有可能是在包恢复的时候有阻塞,另外kcp的resend参数,在fec开启的时候,我默认调成了0(关闭了快速重传,因为我认为这个开关开着的时候会影响fec的效果),你尝试下在两端加上-kcp resend:2 测试一下,看看有没有改善?

vzex avatar Nov 21 '16 14:11 vzex

唉,测试了一个晚上,发现GFW无所不能了。以前一有突发2000ms的延迟,有--encrypt 和无--encrypt模式一切换马上就好了,能用一整天。dog-tunnel 的TCP和UDP模式无论怎么切换如果有超过20kb的流量都会增加几千秒延迟,直至随机不能使用。 -xor参数即使能让dog-tunnel顺利连接,但是这种巨大的延迟是无法忽略的。

好像UDP包被阻塞了,然后服务器端一直发送(本地只收到很少的包),几乎跑满服务器端带宽。TCP包虽然无法跑满服务器带宽,但依然有很大的延迟。

KCPTUN也是一样的状况,或者更惨。这种ping服务器不丢包的,开着 fec模式 也是没有多大帮助的吧。。。

bhzhu203 avatar Nov 21 '16 17:11 bhzhu203

那你这个情况可能是gfw(我不知道是啥东西)根据流量做了一些策略了,所以这里我要给你一些建议了,狗洞是个端口映射工具,请不要用它做一些不好的事情!

vzex avatar Nov 22 '16 02:11 vzex

网游党伤不起啊,只是拿它来连接国外的游戏服务器加速。 UDP包被阻塞的时候,服务器端的流量明显升高,延迟随着增大,客户端无多大变化

难道是说dog-tunnel已经做得够好了是么,有什么方法可以降低KCP的流量(什么参数,nodelay=0?)

bhzhu203 avatar Nov 22 '16 04:11 bhzhu203

只有compress才有可能降低一些流量,fec本身就会比正常多发冗余数据来做恢复用的,游戏本身要求网络实时性就高,如果刻意的限速,一样达不到加速的效果吧,上面的情况根据你的描述看起来是被gfw做了丢包,本身协议是没有特征的,应该就是针对的流量做了限制,我想可能没有什么太好的办法来解决。你可能误解我的意思了,我说的做不好的事情,指的是gfw不喜欢的事情

vzex avatar Nov 22 '16 06:11 vzex

多谢指点,我这里限制连接使用的流量,已经可以正常连接。

KCP调参数是否可以傻瓜化? 是否可以只在c端指定?

bhzhu203 avatar Nov 23 '16 17:11 bhzhu203

kcp涉及的参数有点多,之前的一些简单参数,是在握手期间传过去的,所以kcp这个可能还要考虑一下,因为握手目前限制的字节数有点少

vzex avatar Nov 24 '16 02:11 vzex