目前我的情况是,家中有一个千兆主路由放在客厅接外面的宽带,而我自己的房间有一台比较老的 Netgear 3800 路由来无线桥接连接外面的主路由,因为我不想我的 3800 路由中的设备暴露到主路由的设置中,所以用了 OpenWrt 的桥接模式。但是随着我在 3800 这台路下接的设备增多,导致目前 3800 这台路由不堪重负,已经影响到了我日常 streaming 局域网 NAS 中的电影。所以最近想更换一下这台已经 8 年历史的 WNDR 3800 路由器。
首先我了解了一下,WNDR3800 标称的是 300Mbps 双频千兆路由器,WiFi 下 5GHz,理论传输速率应该有 37.5MB/s,但实际应该是达不到的,但即使只有一半的速率 10MB/s ,理论上串流局域网的视频应该是问题不大的,而现在的问题就出现在局域网中用 WiFi 连接的设备,理论上只能达到 4MB/s 的峰值速度。
网线比较老
首先细想了想理论上我的 WNDR3800 路由下面四个 LAN 口都是千兆网口,有线速度不应该那么差的,所以我先用我现有的几根网线连接了设备,但发现速度依然不够理想。
用 iperf 测试两台使用网线连接的设备,测试的速度大致只有在 30~45 Mbits/s 左右,换算成传输的速度除以 8,那就比较可怜了。
我就有点怀疑我的网线,可能是比较老的网线(这几根网线已经跟随我差不多快 6 年了,所以应该就是一个最高百兆的网线),所以立即下单了两根六类网线。
网线区别
如何识别五类网线,超五类网线?
- 五类网线,会标注 「CAT5」字样,传输带宽为 100MHz,用于语音传输和最高传输速率为 100Mbps 的数据传输
- 超五类网线:标注 「CAT5e」 字样,传输带宽可高达 1000Mb/s,但一般只应用在 100Mb/s 的网络中,只实现桌面交换机到计算机的连接,因为超五类非屏蔽网线要借助价格高昂的特殊设备的支持
- 六类网线:标注 「CAT6」字样,一般指的都是非屏蔽网线,主要应用在千兆网络中,在传输性能上远远高于超五类网线标准
设备网卡
在怀疑完网线之后,就想是不是设备接口的限制,于是就从路由器开始排查。
路由器
确定是千兆网口
盒子
查了一下 T1 盒子的无线网卡:
- 双频 WiFi,支持 ac,单天线,2.4G 连接速率 65Mbps,5G 连接速率 433 Mbps
而一查有线网卡,竟然是一个百兆网卡,怪不得比无线还慢。既然有线不能用,那就只能上无线了。
WIFI 带宽不够
首先盒子的无线网卡是支持 802.11 ac 协议的,理论上是没有跑满带宽的,那么就是无线路由器到了上限。300Mbps 是 WNDR3800 标称的传输速度,但是实际即使靠的最近也不大可能达到理论速度的。再者我的 WNDR3800 有线连着一台 NAS,一台 Proxmox 服务器,本来传输压力就有些大,所以我期望无线能达到理论的一半就已经很好了,但实际上我测试,用一台 WNDR3800 有线连接的设备开启 iperf -s
,再用一台无线连接,iperf -c IP
,测试的结果是 60 Mbits/s 左右。
然后我想起来我还有一台小米路由器 (Mi Wifi 3G),之前因为总是断线所以就收起来了,然后去官网 查了一下配置,发现配置要比我的 WNDR3800 好不少,并且用 Android 连接后可以达到 800Mpbs。
- 处理器 MT7621A MIPS 双核 880MHz
- ROM 128MB SLC Nand Flash
- 内存 256MB DDR3-1200
- 2.4G 2X2(支持 IEEE 802.11N 协议,最高速率可达 300Mbps)
- 5G 2X2(支持 IEEE 802.11AC 协议,最高速率可达 867Mbps)
- 外置全向高增益天线 4 根(2.4G 最大增益 5dBi 2 根 5G 最大增益 6dBi 2 根)
- 1 个 USB 3.0 接口(DC output:5V/1A)
- 1 个千兆 WAN 口,两个千兆 LAN 口,LAN 稍微少了点
所以现在就是要找一个比较稳定的固件了,官方的固件,无疑就是 OpenWrt 了。
IEEE 802.11 a/b/g/n/ac
Protocol
20MHz vs 40MHz 信道宽度
在 OpenWrt
- 对于 2.4 G 和 20 MHz,最好的 channel band 是 1,6,11
- 对于 2.4 G 和 40 MHz,最好的 channel band 是 3,11
- 对于 5G 和 20 MHz, 如果设备都支持最好使用 40 MHz,或者如果路由设备支持可以使用混合模式
- 对于 5G 和 40 MHz,任何少量信道的 channel 都可以。或者考虑让路由器自动选择最好的 Channel。
Further More
- Android 上可以使用 WiFiAnalyzer 查看
- 对于 Windows 可以使用 NetStumbler 来查看附近的网络。