本文编写于 624 天前,最后修改于 624 天前,其中某些信息可能已经过时。

提要

众所周知国内商业带宽价格高昂,中国地理的因素肯定少不了。而我在做服务商这一块,如果用户有经常性的需求来上传下载文件,但是又只有一条链路,这样一来,优质链路本身口子小,还被下载任务给占满,极其影响体验。
所以,我是选择用两条线路来完成这个事情,其中需要进行端口转发,便选择了内网穿透。
但是这样带来了一个问题,因为转发了数据包,那么整体延迟就变成了:玩家->转发服务器 + 转发服务器处理数据 + 转发服务器->业务服务器 + 业务服务器处理数据。
可以说是1+1>2这种延迟...
而游戏作为延迟敏感型的业务,这点是致命的。所以,我来测试测试这种转发方案谁最快。

参与测试的软件

Frp 这个不用说,名声远扬。 v0.32.0
minecraft-proxy 这个是bangbang93大佬开发的,逻辑类似于BC,类似nginx反向代理的做法。v1.0.2

只在网络上找到这两款合适的,过程中有一款 proxy-go 但是frp也是go语言编写,并且frp部署起来可以说是 so easy 所以只拿这两个来进行对比。
延迟测试的软件:MCBBS个人作者开发
直接tcp测试的话还只是用户到转发服务器的延迟,这个软件可以测试整个过程的延迟,很不错。

开始测试

1、初始FRP连接(有预分配连接池)

延迟数据:88ms 78ms 90ms 93ms 77ms
平均:85.2ms

值得一提的是,开启压缩并不能降低延迟,只是会节省流量。

2、FRP开启 KCP支持

延迟数据:79ms 77ms 92ms 96ms 81ms
平均:85ms

虽然几乎没差别,但是在数据传输上相对tcp应该会好很多。

minecraft-proxy

​‌‌‌​‌​​​​​‌‌​‌​‍​‌​‌‌‌​​‌‌‌‌​‌​‍​‌​​‌​​​‌​​​‌‌​‍​​‌‌​​​‌​​‌‌​‌​‍​‌‌‌‌‌‌​​​​‌​‌​‌‍‌​‌​‌​‌‌‍‌​​‌​‌‌​‍‌​​‌​​‌​‍‌​​‌‌​‌​‍‌​‌‌‌‌​‌‍‌​​‌​​‌‌‍‌​​‌​​​​‍‌​​‌‌​​​‍​​‌‌​‌​​​​​‌​​‌‍​‌​‌‌‌​‌​‌‌​‌‌​‍​‌‌‌​​​​‌​​​‌​‌‌‍​​​​​​​​‌‌‌‌​​‌‌‍​‌​‌‌​​​‌‌​​​​​‍​​‌​‌‌‌‌‌‌‌‌​​​‍​‌‌​​‌‌‌​‌‌​​‌‌‌‍​‌‌​​​‌‌‌​​​‌​‌‍​​‌‌‌‌‌‌‌‌​​‌‌‍​‌​​​​‌​​​​‌​​‌‍​‌‌‌​​​​​​‌​​​​​‍​​‌‌​‌​‌​‌‌​​​​‍​​‌‌‌‌​‌‌‌​​​​​‍​‌​‌​​​​‌‌‌​‌​​‍​‌‌​​​‌‌‌‌​​‌​‌‍​‌​‌‌​‌​‌​‌‌‌‌​‍​‌​​​​‌​‌‌​‌​‌‌‍​‌‌‌​‌​​​​​‌‌​‌​‍​‌​​‌‌​​‌‌‌‌‌​‌‍​‌‌​​​​‌​‌​‌​‌​‍​‌​‌‌‌​​‌‌‌‌​‌​‍​​​​​​​‌​‌​‌‌‌​‍​​​​‌​‌‌​​​​​​​‍​‌‌​‌‌‌‌‌‌‌‌​​​​‍​​​​​​​​‌‌‌​​​​​‍​​‌‌‌‌‌‌‌‌​​‌​‍​​​​​​​​‌‌‌‌​​‌‌‍​​​‌​‌​‌‌​​‌‌‌​‍‌​​‌​​​​‍‌​​​‌​‌​‍‌​​​‌​‌‌‍‌​​​‌​‌‌‍‌​​‌​‌‌​‍‌​​‌​​‌​‍‌​​‌‌​‌​‍​‌‌​​​‌​‌‌‌​​​‌‍‌‌​​‌‌​‌‍‌‌​​‌‌‌‌‍‌‌​​‌‌​‌‍‌‌​​‌‌‌‌‍‌‌​‌​​‌​‍‌‌​​‌‌‌‌‍‌‌​​‌‌​​‍‌‌​‌​​‌​‍‌‌​​‌‌‌​‍‌‌​​​‌‌‌‍​​‌‌‌​‌‌​‌‌‌‌‌‌‍​‌​‌‌‌​​‌‌​​‌‌​‍​​​​​​​​‌‌‌‌​​‌‌‍​‌​‌‌​​​‌‌​​​​​‍​​‌‌​‌​​‌‌‌‌​​​‍​‌​‌​​​‌‌​​‌‌‌‌‍​‌​‌​​​‌​‌‌‌‌‌‌‍​​​​​​​​‌‌‌​​‌​‌‍‌​​‌​‌‌‌‍‌​​​‌​‌‌‍‌​​​‌​‌‌‍‌​​​‌‌‌‌‍‌​​​‌‌​​‍‌‌​​​‌​‌‍‌​‌​​​‌‌‍‌​‌​​​‌‌‍‌​​‌​‌‌​‍‌​​‌​​‌​‍‌​​​‌‌​‌‍‌​​‌‌‌​‌‍‌​​​‌‌‌​‍‌‌​‌​​​‌‍‌​​‌‌‌​​‍‌​​‌​​​‌‍‌​‌​​​‌‌‍‌​​‌‌​‌​‍‌​​​​‌‌‌‍‌​​​‌‌‌‌‍‌​‌​​​‌‌‍‌​​​‌‌‌‌‍‌​​​‌‌​‌‍‌​​‌​​​​‍‌​​​​‌‌‌‍‌​​​​‌‌​‍‌​‌​​​​​‍‌​​‌‌‌​​‍‌​​‌​​​​‍‌​​‌​​‌​‍‌‌​‌​​​‌‍‌​​‌​‌‌‌‍‌​​​‌​‌‌‍‌​​‌​​‌​‍‌​​‌​​‌‌

很奇怪,能连服务器,但是ping似乎被拦截了还是怎么,无法获取...

说说体验

当然,最重要的还是游戏体验,实际进入游戏看一下,u1s1,三种方式没有任何我能感觉出来的差异...


大家伙都是满格,并且没有感觉到延迟。
算是水了一篇文章(笑
不过按道理来说 minecraft-proxy应该相对frp要好一点点,因为frp还要起到在客户端与应用服务器直接做指示(个人猜测)不过既然个人体验没差别的话,就还是给生产服务器的frp开启了kcp。
但是,有一条方法能够最快解决延迟:世界加钱可及。