手动三网BGP优化的实验
前文
开了一段时间的MC服务器,也看了不少其他服主的服务器,基本上都会遇到跨运营商场景下的丢包问题;很多服主会误认为是服务器配置不够,是玩家网络差,或者是自己的frp线路不好,自己的公网被运营商“下毒”等;实际上玩家在游戏内的卡顿,画面操作回退问题大部分都是由于连接线路/跨运营商连接问题导致的,即使是专线也不例外。
根本原因
国内的三大运营商线路都是不同的,从一个运营商到另一个运营商通常都是在省机房完成交互,但是由于各种原因(交互数据过多,带宽不够,机器负载过高),导致tcp长连接业务会频繁丢包,通常在晚上用网高峰期最为明显。
解决方案
- 三线接入/转发
- BGP接入/转发
很明显,以上两个方案中的接入成本都是比较高的;基于上面的那些问题以及高成本的解决方案,我把目光移向了阿里云,特价的200Mbps轻量云的性价比还是很高的,或许很多人觉得配置毫无诚意,可是在BGP市场价1M/20cny的背景下,这个配置的性价比是很不错的了。
在首次测试中,使用了一台本省的轻量云做中转, 没有玩家反馈过卡顿问题,也就是说这个方案是可行的。
多节点测试
那么基于上面那个低成本的解决方案我提出了一个更大胆的设想,是否可以买多台不同地区的阿里云去实现路由走向控制以及线路优化?
- 为什么要控制路由走向?
因为测试下来有些地方的路由走向很奇怪,重庆到福州明明走广州/武汉的骨干节点更近,他偏偏去北京骨干节点转了一圈,增加了不少距离传输的开销。
于是买了三台阿里200M的轻量云,分别是广州,上海,北京节点:

在华为云上面使用多A记录+Cname记录以及分区解析去进行三节点融合,三个用于分发的子域名,一个入口主域名,完美划分流量走向。
三个服务器使用nftables和我本地的出口IP做了一个一对一的转发规则,让三台服务器接收到的流量都往我本地转发
优化效果

tcping拨测下来是一个无丢包的状态,由于这个实验是在半年前做的,没机会测试快速发包的一个具体情况;当然,这也只是个测试,nftables基于五元组去进行一个转发,也就是转发的对象必须是IP;对于动态公网,我不清楚是否可以写一个脚本去进行动态IP的监测然后同步到nftables的规则当中去实时替换转发的IP;对于无公网的则是可以使用frp去进行一个转发。