larsonzh / amdwprprsct

Asuswrt-Merlin dual WAN port router policy routing service configuration tool(华硕梅林固件路由器外网双线路接入策略路由服务配置工具)
GNU General Public License v3.0
70 stars 15 forks source link

使用几个月了发现玩游戏会卡顿。 #4

Open liuhongzhe111 opened 2 years ago

liuhongzhe111 commented 2 years ago

我从3.5.8版本用到3.6.3版本,看网页浏览视频都没有问题,但是玩战舰世界的时候就会出现卡顿,是间歇性出现的,没有规律,会突然卡一下,每天均会发生数次。我是联通和电信双线,如果单独用其中任意线路都不会卡。

liuhongzhe111 commented 2 years ago

今天更新了3.6.6,依旧会卡顿.

larsonzh commented 2 years ago

今天更新了3.6.6,依旧会卡顿.

啥型号的路由器和固件版本?

若性能足够强,切换到静态分流模式,或是动态分流模式,看有啥区别。或是关掉路由器和脚本上不必要的功能,如脚本配置中的“自动清理路由表缓存”功能等。

双线路分流会增加机器内部的数据处理过程和传输环节,网络传输的性能指标和持久性传输的稳定性比单线路时肯定有所下降,尤其是对网络延迟要求高的应用可能更明显,毕竟这类路由器的双线路接入能力不是产品设计的主要追求,软硬件支持有限。

双线路时会调用很多单线路时根本用不到的机内软硬件资源,这些资源虽是设备自身的,但品质不会很高,厂家开发时的关注度有限,常年得不到升级,只做到有略胜于无,很无奈。

即使是所谓的游戏路由器,传输性能也只是体现在单线路传输上,第三方软件只是扩展了应用范围,难以本质上提升机器性能。脚本只是个路由器参数配置工具,启动完成后自动退出,不再参与路由器运行,难以让两条线路的传输性能和稳定性比肩路由器单线路使用时的效果。

liuhongzhe111 commented 2 years ago

路由器是华硕AX88U,固件是梅林改版386.5.2。我说的卡顿不会那么一直卡,是会瞬间卡一下,然后恢复,过几分钟或是十几分钟又卡那么一下。你这个脚本我都是用默认的,一会去试试改成静态分流。

liuhongzhe111 commented 2 years ago

还是不行,设置成静态分流,并关闭了自动清理路由表缓存,依旧大约3到4分钟左右卡一下。放弃了,玩游戏的时候切换成单线吧。

larsonzh commented 2 years ago

是否使用了什么路由器内置的游戏加速器或插件?即游戏终端流量经路由器内部的专用软件代理中转至外网游戏服务器,而普通网络访问则无此中间环节。

路由器内置的一些功能模块或第三方插件设计时没有考虑双线路应用场景,不能很好的匹配双wan出口,链路流量有时会在两个wan口间切换,造成卡顿、不流畅的情况。

由于是机内应用,其采用的技术以及固件权限开放性问题,导致脚本配置的分流规则会对位于路由器本机内部应用产生的网络流量不起作用。

larsonzh commented 2 years ago

还是不行,设置成静态分流,并关闭了自动清理路由表缓存,依旧大约3到4分钟左右卡一下。放弃了,玩游戏的时候切换成单线吧。

玩别的游戏是否也有这种情况?

试试将双线路负载均衡中的负载均衡设置为9:1(无法设置为1:0,从而屏蔽一路流量,除非切换为单线路),让路由器主机内部应用和插件访问外网的流量尽可能走第一WAN口,看看是否有效果。提示:此操作不会影响脚本原有的分流作用。

记得固件到384以后,系统的链路负载均衡功能进行了升级,处理方式发生改变,第三方应用因此而更容易对路由器来自客户端的网络流量进行控制,但同时也收回了路由器主机内部应用访问外网流量的控制权。双线路情况下,系统会直接对这些内部没有定义出口的应用和插件流量路由出口,表现为流量经常在两个出口间切换,使脚本无法对通过路由器内部应用和插件间接访问外网的流量分配出口,只能对客户端通过路由器直接访问外网的流量进行分流。

larsonzh commented 2 years ago

我从3.5.8版本用到3.6.3版本,看网页浏览视频都没有问题,但是玩战舰世界的时候就会出现卡顿,是间歇性出现的,没有规律,会突然卡一下,每天均会发生数次。我是联通和电信双线,如果单独用其中任意线路都不会卡。

还有一个更简单的方法: 在脚本中将运行游戏的手机等终端绑定到路由器某个出口,最好是有公网ip的,或是游戏性能最佳的WAN口,固定走一个运营商网络通道,且不会影响其他设备同时按网段分流方式上网的体验。若这样会影响平时不玩游戏时体验双线路分流的乐趣,也可以设定一个日常不会被占用的内网ip,绑定到指定的路由器WAN口,打游戏时将设备临时切换到这个地址,之后再返回原有网络连接状态,做到两不耽误。

不知该方法能否解决你的问题,可以试一下哈。

一些游戏在运行中,会与远程的服务器间建立多个网络连接,甚至是与多个服务器,目标地址多有不同,会跨越多个运营商网段,导致会被按照脚本在路由器上配置的网段出口规则分流到不同的出口。造成打游戏时,同一终端同时至少存在两个不同的公网出口ip,可能会被服务器认为是来自不同物理位置的用户,造成频繁登录,或是一些请求被忽略,或被直接抛弃,产生游戏过程的卡顿,不流畅等情况。而且,大多数游戏运营商为提高用户体验,会划分区域安置服务器,部署在不同的运营商网络,同时访问不同区域的服务器,也会因为来回切换服务器影响游戏过程的流畅性。

liuhongzhe111 commented 2 years ago

感谢耐心帮我解答,但是问题依旧,我使用了高级设置中的“用户自定义目标网址/网段(1)流量出口”这个功能,把游戏服务器的几个IP指定第二个WAN口,通过路由器的流量分析查看,在玩战舰世界的时候并没有任何流量走第二个WAN口,也就是该功能没起作用。我也将双线路负载均衡中的负载均衡设置为9:1了,在不指定游戏服务器IP出口的情况下,流量也不走第二个WAN口,说明游戏还是走的第一个WAN。除了战舰世界我还通过逍遥模拟器玩三国志2017这个游戏,表现为会偶尔断线,与服务器失去连接。是不是说在玩游戏的时候流量确实走了第一个WAN,分流没有问题,猜测是出现数据丢包造成有的游戏卡,有的游戏断线。不确定我是不是个例,没有看到其他人反映过类似问题,不知您平时用该脚本进行游戏时是否有异常?

larsonzh commented 2 years ago

感谢耐心帮我解答,但是问题依旧,我使用了高级设置中的“用户自定义目标网址/网段(1)流量出口”这个功能,把游戏服务器的几个IP指定第二个WAN口,通过路由器的流量分析查看,在玩战舰世界的时候并没有任何流量走第二个WAN口,也就是该功能没起作用。我也将双线路负载均衡中的负载均衡设置为9:1了,在不指定游戏服务器IP出口的情况下,流量也不走第二个WAN口,说明游戏还是走的第一个WAN。除了战舰世界我还通过逍遥模拟器玩三国志2017这个游戏,表现为会偶尔断线,与服务器失去连接。是不是说在玩游戏的时候流量确实走了第一个WAN,分流没有问题,猜测是出现数据丢包造成有的游戏卡,有的游戏断线。不确定我是不是个例,没有看到其他人反映过类似问题,不知您平时用该脚本进行游戏时是否有异常?

我现在从不打游戏,但我家里每天都一直有人玩,如手机上各种游戏,电脑上如魔兽等各种游戏,段位还很高。为此我还专门问过他们,以及别的游戏玩家,都没经历过你这种情况,其它脚本用户也没谈到你这种情况,反映最多的也就是双线路的网络延迟比单线路大些,但这也属正常情况。

脚本不会识别游戏流量的,对各种流量都一视同仁,按规则处理。

如果你的游戏终端确实没有经过路由器中游戏插件等软件中转连接远程的游戏服务器,且未启用路由器内置的智能网络卫士、网络监控家、网易UU加速器、Game、Open NAT这类模块中的功能,建议还是按照上面最后给你的方案尝试。不要试图通过抓取游戏服务器可能的网络地址来进行分流控制,因为很多游戏采用了点对点、分布式等复杂的网络技术,可能有些潜在地址抓不到,有些是动态变化的,很不固定,甚至可能还会使用IPv6地址,所以还是试一下将游戏终端绑定到路由器上一个网络延迟相对最小的出口,确保游戏终端的所有流量都固定走该口。我家里有联通、移动两条宽带,联通网络延迟小,有公网ip,专门打团战游戏的电脑就通过脚本设置,全部流量都走联通宽带,从未出现过你说的状况。

步骤: 1.在脚本配置文件的高级设置中,找到“第一WAN口客户端及源网址/网段高优先级流量出口列表绑定数据文件”,将游戏终端的本地ip填入位于路由器中的该文件。 2.找到“第一WAN口客户端及源网址/网段高优先级流量出口列表绑定”功能项,按说明“启用”该功能。 3.重启脚本。

注意:脚本配置文件中功能较多,不要搞错了。

关于IPv6,该类地址不能被分流(脚本只能对IPv4地址的流量分流)。所用的华硕路由器只能接入一路IPv6网络,此类流量固定走接入IPv6的那个WAN口。目前而言,运营商的IPv6网络不如IPv4网络那么稳定和健壮,卡顿现象时常会发生,所以你的游戏如果因为某种原因走了IPv6网络,有可能出现你说的现象。还有可能是游戏终端混合使用了IPv4/6进行数据传输,由于分流的原因,一些IPv4流量不能同时走IPv6的那个路由器出口,因为出口地址不同,导致被远端拒绝,所以会出现卡顿现象。可以关掉路由器的IPv6网络接入试试,看是否还是那样,或者就是按上述绑定客户端出口的方式,将游戏设备绑定到接入IPv6网络的那个路由器WAN口。