巧用路由器QoS功能外加修改无线网频段解决网游延迟过大的情况

十二月 23rd, 2013 发表评论 阅读评论

起因:家里用的是ADSL拨号上网,大概一两个月前开始,玩Dota、Dota2延迟动辄成百上千ms,我和室友叫苦不迭。因为是3个人共享上网,连接的设备有笔记本、手机、ipad等等,加起来有8、9个。感觉上应该是局域网里有人用P2P之类的下载软件,但是观察了一段时间以后发现,即使没有人用P2P类的软件,也经常出现很大的延迟,于是开始了对网络延迟的调查,誓要找出“真凶”。

一开始每次遇到延迟很大的情况,都是直接重启重启路由器,重启以后就会管用几分钟,然后又会变得巨慢。后来慢到直接是网页打开要好久,连接路由器的管理页面也变的很慢。路由器型号是tp-link的wrt841nv8,本身的固件功能非常有限,很难查到是什么原因导致变慢,于是打算刷成dd-wrt,然后再查。无奈发现这一款路由器的v8版本,也就是现在用的,是同型号里面专门针对中国的定制版,ram的大小被从32m缩水到只有16m,刷不了dd-wrt,只能通过硬件改造才有可能刷,坑爹啊!跟室友讨论了以后决定换路由器,主要还是因为这款的ram太小,怀疑是因为内存耗尽而变慢。

于是欢天喜地换上了Asus的RT-N16,具有128m的大内存,而且该款路由器对dd-wrt的支持也非常好,所以才选了它。刚换上的时候,玩游戏延迟依旧比较大,于是又郁闷了。排查各种原因,发现白天人少的时候打开路由器管理页面很快,晚上人多的时候打开的很慢,猜测是受到了其他wifi的信号干扰,先不管是不是,换个Channel再说,结果果然大有改善,路由器管理页面可以很快打开了。看来确实是有无线信号干扰这个问题,观察周围可以搜到的无线AP大概有10几个。

不过郁闷的是,玩网游还是动不动会出现比较大的延迟,这种情况一般是家里3个人都在上网的时候才出现,所以不排除是带宽占用的问题。这个路由器固件比较好的一点,就是自带网络带宽占用的实时曲线图。可以看到比较卡的时候一般上传带宽都达到了50kB/s左右,而下载带宽并不高。因为ADSL的非对称性,上传带宽一般比较小,通常是只有512kbs,也就是60kB/s左右,难道是上传带宽被占满了,导致游戏的数据包发不出去?

小试了下用Asus RT-N16本身的QoS功能,可惜效果不大。最终,一筹莫展的情况下把路由器刷成了dd-wrt。dd-wrt用上以后,感觉比原厂固件效果要好些,ping路由器都是1ms左右,ping baidu正常情况下50~70ms左右,但是有时莫名其妙会到500~1000ms。到这时我才发现ping的nb之处,简直是检查网络状况的利器啊!如果是ping路由器比较高,肯定是无线信号干扰,只要换个频道,ping值就降下来了;如果是ping baidu比较高,就是带宽占用的问题,就需要看上传带宽是不是被占满了。后来尝试了下用qq邮箱发大邮件,占用上传带宽,果然ping baidu的值就上去了,室友也开始抱怨游戏卡,于是验证了上传带被占满才是导致网游卡的“真凶”!(其实无线信号干扰也是帮凶之一)由此猜测,运营商那边限制上传带宽是采用队列的方式,超过50k以后,后面的数据包就被放入队列中,需要等前面的处理完,因此就变得很慢。

最后,用dd-wrt的QoS功能,把游戏的数据包优先级调高,然后设置网络的Uplink和Downlink带宽,之前QoS一直不管用的原因原来是Uplink的带宽设的太高了,设成了400kbps以上,这次设成256kbps,问题彻底解决,不管怎么上传,ping baidu的值一直是50ms~100ms,游戏也不卡了。此前只要有上传ping值就会到500ms以上。看来QoS这里的Uplink带宽要往低处设,设到50%至少是没问题的,更高还没试,回头可以试试,但是不能超过80%,不然就会卡。

备注:路由器的QoS功能里面设置Uplink可以保证向运营商发送的数据量不会超过上传带宽,如果超过,就会出现拥塞、延迟,而QoS里面具体的规则可以保证我们指定的服务处于高优先级,因此在限制数据量的同时保证我们的高优先级服务畅行无阻。

分类: 标签: 路由器  QoS  网络延迟