百元改造家庭网络拓扑,享受极致网络体验
自从我去年购买了软路由和 NAS 后就开始折腾家庭网络,到目前为止已经 1 年多了。如果说去年还只是装装 openwrt,搞搞智能家居中枢家庭服务器这种小打小闹的玩意,今年则是彻底给家庭网络拓扑来了个大换血。同时我今年兼顾了成本,在去年软路由的基础上仅用了一个额外的网管交换机(成本约 100 元)解决了日常网络使用过程中的诸多痛点,包括单线复用、千兆 LAN 汇聚、IPTV 单播等等。虽然过程一直磕磕绊绊,有碰到 Mac 下奇怪的网络栈问题的,有碰到 IPTV 离奇卡死的,甚至动用反编译分析一个 CLI 工具参数的,但到今天总算有一个比较满意的结果了。
我个人同样在这次网络配置过程中受益匪浅,参考了很多国内外论坛的内容,其中也有一些是我自己研究出来的。因此我打算将整个网络方案分多篇博文一一介绍。一方面是希望能和更多人共同交流,另一方面则是为了避免对整个网络的配置过程产生遗忘,以免今后发生任何故障时难以下手。
另外,由于个人的拖延症,在写这篇博客的时候已经离完成整个家庭网络的建设过去了大约一个月的时间,部分内容可能有所遗忘或修改,但我也会尽量覆盖到。
基本介绍
我家的网络来源于上海电信的 1000Mbps 光纤接入,包含两路 IPTV。弱电箱中存放了光猫、软路由和无线路由器。光猫拨号上网后接入 Openwrt 软路由中,软路由不负责拨号上网,而是另外起了网段用于路由。家庭中的所有设备都通过 Openwrt 路由上网,其中一台无线路由器华硕 RT-AC86U 设置为有线 ap 模式供所有无线设备上网。光猫的三口和四口带有 IPTV 功能,直接接入两个房间的 IPTV 盒子用于观看 IPTV。
整套上网方案看起来挺清晰的,但是随着设备的增多和需求的变化,目前这套架构主要有以下几个痛点亟待解决:
- 无线路由器位于门口弱电箱的位置,不在整个家庭房屋的中心,导致部分距离弱电箱很远的地方的 5GHz WiFi 信号不够稳定,有时会回落到 2.4 GHz
- 客厅电视机虽然处于房屋中心的位置,但是后面的墙上与弱电箱连着一个口,现在用于 IPTV 线路,没办法直接给无线路由器使用
- IPTV 的局限性太大,只能给两台电视机看,迫切需要一种能在全设备上观看 IPTV 的方案
- 虽然办理了下行 1000Mbps 光纤,但是由于以太网帧以及 TCP/IP 协议的限制,实际最大下行速率只能达到 940 Mbps 顶天,一小部分的宽带被浪费了,如果能充分榨干带宽用来刷 PT 那多香啊
- 去年下半年购置了双千兆网口的 NAS ,但是双网口的特性没有被完全利用起来,balance-alb 以及 balance-tlb 的方案实在是没有充分榨干 NAS 的传输性能
- 软路由和光猫的网口都是全千兆的,并没有 2.5G。我家的光猫还有电话业务,所以并不愿意更换光猫和软路由。
最后,预算有限,自然是希望成本越低越好!
解决方案
总结一下其实就两大需求:
- 无线路由器的位置和 IPTV 共享问题,涉及 VLAN 单线复用
- 带宽上限的问题,涉及链路聚合
结合一下去年做的 PVE 套 Openwrt 的方案,整个架构图就出来了
PVE 软路由
软路由的 4 个口其中 3 个 (eth1-eth3) 直通给 Openwrt,另一个网口 (eth0) 组网桥分别给 PVE Host 和 Openwrt 上网。eth0 和 eth1 直接接在光猫的两个 LAN 口上,这两个 LAN 口直接在 Openwrt 中做 WAN 聚合,达到突破千兆瓶颈的目的。
PVE 开一个 CPU 网桥同时共享给 Openwrt 和其他虚拟机,这样其他虚拟机就能通过 Openwrt 的 LAN 上网了。另外两个直通口 (eth2, eth3) 连到 TL-SG2008D 8口千兆网管交换机上,后者支持 VLAN 转发和链路聚合,并且售价只要 100 出头,完美满足我的需求。这样 Openwrt 的 WAN 侧和 LAN侧 经过网口链路聚合都具有了 2Gbps 的转发能力。
单线复用
下面来解决 IPTV 的问题,将光猫的 IPTV 口接到交换机上后,交换机就可以转发 VLAN 包了。于是做这么几个配置:
- 交换机的 1/2 口接入 Openwrt LAN,设为 untag 100
- 交换机的 7 口接入光猫 IPTV 口,设为 untag 1, tag 85 (VLAN 85 是上海电信的 IPTV B 平面专网)
- 交换机的 8 口单线接到客厅的华硕路由器中,设为 untag 100, tag 1, tag 85
来到客厅那边,本来应该是需要再来一个网管交换机的。不过华硕的路由器刷了梅林之后直接可以做 VLAN 转发了,因此 ap 就和交换机二合一了,好评!
结果
结局令人满意,上面提到的几个需求都完美的得到了解决,随便测个速
突破 1100 Mbps,上天!再测测 NAS 传输
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| ➜ ~ iperf3 -c openwrt.lan -t 5 - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-5.00 sec 752 MBytes 1.26 Gbits/sec 2664 sender [ 5] 0.00-5.00 sec 741 MBytes 1.24 Gbits/sec receiver
iperf Done.
➜ ~ iperf3 -c openwrt.lan -t 5 -P 20 - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-5.00 sec 53.8 MBytes 90.2 Mbits/sec 1130 sender [ 5] 0.00-5.01 sec 42.4 MBytes 71.1 Mbits/sec receiver [ 7] 0.00-5.00 sec 77.5 MBytes 130 Mbits/sec 1329 sender [ 7] 0.00-5.01 sec 66.9 MBytes 112 Mbits/sec receiver [ 9] 0.00-5.00 sec 61.2 MBytes 103 Mbits/sec 1330 sender [ 9] 0.00-5.01 sec 50.0 MBytes 83.8 Mbits/sec receiver [ 11] 0.00-5.00 sec 73.8 MBytes 124 Mbits/sec 1459 sender [ 11] 0.00-5.01 sec 63.3 MBytes 106 Mbits/sec receiver [ 13] 0.00-5.00 sec 56.2 MBytes 94.4 Mbits/sec 1176 sender [ 13] 0.00-5.01 sec 45.3 MBytes 75.9 Mbits/sec receiver [ 15] 0.00-5.00 sec 66.2 MBytes 111 Mbits/sec 1377 sender [ 15] 0.00-5.01 sec 54.9 MBytes 91.9 Mbits/sec receiver [ 17] 0.00-5.00 sec 58.8 MBytes 98.6 Mbits/sec 1283 sender [ 17] 0.00-5.01 sec 48.1 MBytes 80.5 Mbits/sec receiver [ 19] 0.00-5.00 sec 61.2 MBytes 103 Mbits/sec 1285 sender [ 19] 0.00-5.01 sec 50.4 MBytes 84.5 Mbits/sec receiver [ 21] 0.00-5.00 sec 68.8 MBytes 115 Mbits/sec 1230 sender [ 21] 0.00-5.01 sec 57.7 MBytes 96.6 Mbits/sec receiver [ 23] 0.00-5.00 sec 78.8 MBytes 132 Mbits/sec 1291 sender [ 23] 0.00-5.01 sec 68.2 MBytes 114 Mbits/sec receiver [ 25] 0.00-5.00 sec 72.5 MBytes 122 Mbits/sec 1185 sender [ 25] 0.00-5.01 sec 61.4 MBytes 103 Mbits/sec receiver [ 27] 0.00-5.00 sec 56.2 MBytes 94.4 Mbits/sec 1155 sender [ 27] 0.00-5.01 sec 45.6 MBytes 76.4 Mbits/sec receiver [ 29] 0.00-5.00 sec 57.5 MBytes 96.5 Mbits/sec 1105 sender [ 29] 0.00-5.01 sec 46.2 MBytes 77.3 Mbits/sec receiver [ 31] 0.00-5.00 sec 48.8 MBytes 81.8 Mbits/sec 1011 sender [ 31] 0.00-5.01 sec 38.0 MBytes 63.6 Mbits/sec receiver [ 33] 0.00-5.00 sec 56.2 MBytes 94.4 Mbits/sec 1294 sender [ 33] 0.00-5.01 sec 45.6 MBytes 76.4 Mbits/sec receiver [ 35] 0.00-5.00 sec 71.2 MBytes 120 Mbits/sec 1492 sender [ 35] 0.00-5.01 sec 60.2 MBytes 101 Mbits/sec receiver [ 37] 0.00-5.00 sec 75.0 MBytes 126 Mbits/sec 1476 sender [ 37] 0.00-5.01 sec 63.8 MBytes 107 Mbits/sec receiver [ 39] 0.00-5.00 sec 56.2 MBytes 94.4 Mbits/sec 1019 sender [ 39] 0.00-5.01 sec 45.7 MBytes 76.4 Mbits/sec receiver [ 41] 0.00-5.00 sec 56.2 MBytes 94.4 Mbits/sec 1236 sender [ 41] 0.00-5.01 sec 45.0 MBytes 75.3 Mbits/sec receiver [ 43] 0.00-5.00 sec 67.5 MBytes 113 Mbits/sec 1154 sender [ 43] 0.00-5.01 sec 57.0 MBytes 95.5 Mbits/sec receiver [SUM] 0.00-5.00 sec 1.24 GBytes 2.14 Gbits/sec 25017 sender [SUM] 0.00-5.01 sec 1.03 GBytes 1.77 Gbits/sec receiver
|
单线程突破 1Gbps,多线程接近 2Gbps,简直爽快!千兆网口也能体验超千兆网速啦!
总结
最后解答一个问题,为什么要用光猫拨号而不直接桥接 Openwrt 上网,不是还能少一层 NAT 吗?
首先,我这台光猫的性能已经足够千兆上网了,并且我给光猫设置了 DMZ 到 Openwrt,因此实测下来并没有什么性能的损失。其次,我的 Openwrt 是套在 PVE 里面的虚拟机,如果由 Openwrt 上网,那么连上 PVE 宿主机就需要通过 Openwrt 了,这样如果 Openwrt 在配置的时候搞坏了,或者某天 Openwrt 突然炸了,那么我就彻底失去了对 PVE 的控制,到时候的重置以及恢复将是灾难性的。现在 PVE 和 Openwrt 通过网桥同时通过光猫上网,能够保证 PVE 不需要借助 Openwrt 就能直接连接,这样即使 Openwrt 哪天突然炸了,我也能通过有线或者无线连接光猫来操控 PVE 去控制 Openwrt。
那么就写到这里了,详细配置请参考后续的文章。