路由器长时间开机网速会变慢?

2014-08-15 17:08:00 +08:00
 KyonLi
光猫+无线路由器,开机1天以上有时网速就会变得非常慢,重启猫和路由后立即满血复活。
为此想请教各位v友,是因为换了个IP才恢复正常还是什么其他原因?如果是IP,像学校宿舍那种固定IP是不是变慢后就只能忍受?
23597 次点击
所在节点    问与答
45 条回复
Jarvanh
2014-08-15 17:10:44 +08:00
正常路由肯定不会
wy315700
2014-08-15 17:11:24 +08:00
你让那种好几年不重启的路由器怎么活
seki
2014-08-15 17:11:39 +08:00
程序没写好,内存泄漏了?

毕竟刷 openwrt 的机器连续开机一周甚至一个月是没啥大问题的(不蛋疼的话
KyonLi
2014-08-15 17:15:18 +08:00
@wy315700 所以搞得我很纠结,一感觉变慢就要重启,晚上躺在床上看视频卡了还得爬起来摸路由…
wy315700
2014-08-15 17:16:46 +08:00
@KyonLi 啥路由啊 报一下型号看看,不是小米路由吧
wy315700
2014-08-15 17:17:02 +08:00
@seki 一年都没问题哒
KyonLi
2014-08-15 17:18:00 +08:00
@seki @Jarvanh 水星最普通的路由 不能刷,一个150M一个300M的都有这样的问题
KyonLi
2014-08-15 17:20:03 +08:00
@wy315700 水星MW310R和MW150R
wy315700
2014-08-15 17:21:35 +08:00
@KyonLi 更新固件看看?
ooxxcc
2014-08-15 17:22:07 +08:00
置换法
seki
2014-08-15 17:22:42 +08:00
@wy315700 虽然知道放几年也没事,但是心理上还是接受不了……网速一有问题就首先想着重启
ooxxcc
2014-08-15 17:22:45 +08:00
总之先接个路由试试,然后借个光猫换上……看看哪里有问题
wy315700
2014-08-15 17:23:44 +08:00
@seki 我这里TT路由,最长5个月没重启,上次重启还是因为停电。。。
xenme
2014-08-15 17:24:36 +08:00
一般是带机量的问题。
家里的路由器带个5-10个感觉就有点吃力。
用过 TP 水星 D-Link Cisco 家用的。超过10个很不稳定。
快点一个星期要重启一次,长点一个月左右要重启一次。
独立路由+AP 的模式或者路由只当 AP 用的话比较稳定。
seki
2014-08-15 17:26:18 +08:00
@KyonLi 水星是 TP-LINK 的马甲。用过另外一个马甲 FAST 的路由,当初是五六年前家里买的用得好好的所以才买的,但是发现现在的低端路由都太省钱了,Flash 和 RAM 都能省则省,程序也写得不好,时间长了或者通讯量大了卡死也是正常的
KyonLi
2014-08-15 17:33:32 +08:00
@wy315700
版本控,一直保持最新固件

@ooxxcc
有机会找个猫换上试试

@xenme
算了一下接入7个设备,活跃的就3个,感觉应该不会太吃力
tobyzw
2014-08-15 17:33:33 +08:00
水星的地段路由是这样的
如果多台设备接入,且传输数据量比较大,可能连WIFI都连不上
长时间不重启也会出现网速变慢的情况
拔了排插后第二天再插上,可能还需要拔路由的电源线再接上才能正常联网,不然本地连接都是感叹号
momou
2014-08-15 17:33:49 +08:00
除了停电路由就没重启过。。。
treo
2014-08-15 17:47:03 +08:00
换个RAM大于32MB的路由吧,最好能刷openwrt。也就50~100块。

以下为引用:


张先生是TPLink无线路由器的前研发负责人,他下面的回答会让大家清楚这些现象背后的原因。 我们具体的疑问如下:
Q1. 为啥长时间使用低端路由后,路由器上网速度会变慢,为啥建议经常重启低端路由器?
Q2,为啥有的路由器无线上不转发ip组播但有线会转发
Q3,有的路由器完全不转发ip组播包,导致基于IP组播的米联有时候不能工作
Q4,多线程同时启动下载有时候会把无线路由器打死,必须重启才能恢复


答:问题1与问题4原因相同。这个问题与路由器的演进历程有关,当前路由器的市场,以TP为首挑国内品牌挑了价格战,在几年时间内,让进口路由器市场份额缩到30%以内,如D-LINK,Netgear,Linksys,甚至有些国外品牌已经退出了中国市场。原因就是国人买东西只看价格不看品质。而这些国内品牌看中了国人的这种价值观,于是对于路由器一再的降低成本,原则是先从无技术难度的降,比如一些替代料,用上后性能略有影响,但价格便宜很多;然后再从有技术难度上的降,比如DDR。你们现在看到的这个问题,就与DDR有关,现在跑在路由器上的操作系统最多的是两个:vxWorks与Linux,Linux的体积比较大,很难裁剪,但有些厂商为了低成本,还是会去裁剪;vxWorks操作系统容易裁剪,就成为一些厂家的首选(如TP),所以,用了vxWorks的操作系统后,厂商对操作系统进行了裁剪,DDR的大小可以用的很小,比如8MB(64Mbit),成本相对于16MB的可以省2-3元人民币;而vxWorks的操作系统最大的特点是内存地址空间不分内核态和用户态,所有的代码运行在同一地址空间,当进行系统开发时,如果编程人员的水平不足,很容易出现用户态的程序直接访问内核态的数据(如网络协议),这种情况下很容易出现冲突和异常,同时,又因为网络数据包在一个余量很小(比如剩余1-2MB)的DDR中,长时间跑大的网络流量,很容易出现缓冲数据包,重传数据包,PS数据包(Power Save)等等,以至于让可本来就很小余量的DDR,变的更小,从而产生了分配时失败,需要等待,再分配的恶性循环,因此,系统会变慢;如果分配时失败没有做处理,那么会死机。这就是问题1与问题4的两个不同结果;问题1是会变慢,问题4会死机。
对于采用Linux操作系统作为路由器OS的厂商,如果也去做Cost down,用小内存跑系统,更容易出现不稳定的问题,因为vxWorks操作系统可以有内存池的概念,可以预分配,OOM的概率降低很多;而linux操作系统在进行网络数据包的处理时,很难做内存池,因为它区分用户态与内核态,数据包收到时存在内核态,内容到用户态处理完才可以释放,因此,数据包的传递有malloc与free的操作,并且是大量的。在这个过程中,很容易出现异步,即上层还未处理完数据包,下层又来大量的数据,导致系统运作失控,很容易变慢或者死机。之所以变慢是因为当free状态的memory不足时,操作系统会从cached中要回memory,如果这个操作还不能满足需求,则会随机的kill优先级低的进程,来保证系统不死机,但,这个就是饮鸩止渴,最后,系统还是会死机,因为谁也不知道它会kill哪个进程,我们看到过很多这种案例。最好的作法就是不让它oom去触发kill进程的操作,即留足够的内存余量。


问题2与问题3原因相同,这个问题有两种可能。你们的组播数据肯定是从Internet上的Server到路由器,然后路由器到小米盒子,这样的通路。在这样的链路建立的过程是小米盒子发起组播请求,给Internet上的server,在经过路由器WAN口时,由IGMP Proxy协议把局域网地址转成Internet地址,server收到后把组播响应发回路由器WAN口,由IGMP Proxy将组播响应传回内网,这样,就实现了组播可以NAT的效果。接下来,已此原理看你们看到的问题:问题2,有的路由器无线不行有线行,说明这个路由器是支持IGMP Proxy的,只不过实现的时候无线没有考虑,只实现了有线;问题3,有的路由器完全不行,原因是这个路由器不支持IGMP Proxy,所以,不能进行组播NAT。你们可以做个实验,对于那些不能转发IP组播包的路由器,你们把server路由器接在同一个交换机下,看看路由器是否能够转发组播包就知道答案了。
对于问题2的还有一种可能是,它的无线也可以转组播,只不过无线驱动里面没有去做组播转单播的设计,无线驱动对于组播包的传输,是以1Mbps或者11Mbps的速率在发送,这个速率下很容易出现收不到的情况。一般的作法是当组播包到无线驱动后,会将他转成单播包,以11N的速率发出来。所以,对于问题2,你们可以抓包,看看是否从路由器的无线中,有发出组播包,就知道是驱动没有做IGMP Proxy的处理还是没有做组播转单播的处理。

via 张先生,TPlink路由器 研发负责人。
jiangpeng
2014-08-15 17:54:47 +08:00
光猫很渣

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/128102

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX