创作立场声明:本文所测商品为自费购入。如参加张大妈家的活动获得,我会在文中点明。坚持独立的评价观点是笔者创作的基本底线,绝不会因商品来源不同而有所偏颇,请各位放心。
前言
数个月前,联通办活动,每个月多交10块钱,就可以把家里的宽带升级成千兆,并且换了一个号称万兆的光猫,再加上移动的宽带,外网总带宽已经妥妥超千兆了。而纯千兆内网实测大概是Mbps,离千兆网络还有一定的差距的。而一般千兆光网的实际带宽是1.2Gbps,所以为了充分使用家里的网络带宽,扩展千兆网络已经成为了一个必要选项。
家中大部分设备是千兆接口,而且光猫也是4个千兆接口,所以结合现有的情况,我选中了链路聚合的方案。但是找遍了国内的网站,发现关于链路聚合的中文资料非常匮乏,并且也有网友询问链路聚合的方案。这也让我萌生了写这篇文章的念头,但由于工作繁忙(由社畜向猝死族进*),所以拖延了将近半年,最近总算是可以有时间来完成这篇文章了。
鉴于网友的接受程度,我这里只使用最简单的OpenWrt的bonding方案,尽量把专业术语的部分简化,并略过理论的部分,在实在不能省略的部分详加注释,以保证大多数网友能够理解并使用。
方案概述
现有网络扩展有很多方案,直接使用光猫上带的wifi6无线路由的方案也是可以接受的,这也是联通默认提供的方案,但是有线带宽比无线低,总感觉有点奇怪。
链路聚合并不是什么新技术,在企业服务中很少有单网卡的服务器,4×1G、4×10G和2×10G+4×1G的服务器都是比较常见的,这些服务器其实是默认支持了链路聚合的。但可悲的是,现在机房中很多的服务器都只插一个网口,白白浪费了其他网卡的带宽。
首先发一个我家的网络简图:
网络简图
为了避免长篇大论,这里其他部分全部略过,只讲软路由的链路聚合部分。
具体设置
铺垫那么多,总算说到正题了,硬件需求因人而异,我的网络中骨干设备是:4口软路由一个;MikroTikCRS台;MikroTikCSS台;网络模块若干;
硬件需求:
软路由一台,最少4个千兆口,有万兆口更好。
交换机一台,最少4千兆口,背板速率越高越好,8口以上并有万兆口更好。
如果有线只接一台PC或NAS,那么交换机也不是必须的,只是PC或NAS上最少有2个千兆口或一个万兆口和软路由万兆口相连。
我这里只有一个4口千兆软路由,加了一个USB千兆网卡,可以看作一个5口千兆软路由,暂时也够用。
这里需要注意的是,软路由加USB网卡之前需要在编译ROM的时候加入网卡驱动,或者使用底层的虚拟化软件(其实我一直不理解为什么在安装软路由之前要安装ESXI虚拟化,就是因为驱动的问题么?)
准备工作
在linux中使用bonding的方式就可以实现链路聚合的功能,而这也是OP所支持的,所以下文中的bonding可以等价理解为“链路聚合”,OP的作用就是把脚本形成插件,调用linux的内核功能,实现低功耗软路由的功能。
在软路由上刷OP是必须的,但是这里每个人都有个人习惯;这里无论你是自编译,还是直接用打包好的ROM都无所谓,安装上就行了,我们直接从设置使用走起。
luci是OP的图形化界面包,可以在刷好OP之后再行安装开启,下面如果有luci的话,都是指OP的图形化界面。
步骤一安装插件
设置openwrt需要先安装bonding相关的插件,其中kmod-bonding是必须安装的,要不内核中没有这个功能,其他两个插件我不太确定不安装能不能实现链路聚合,但是UI设置上可能会有麻烦,所以还是建议都安装上。
3个插件分别是:kmod-bonding,proto-bonding,luci-proto-bonding
必要插件
再顺便安装一个iperf3测速插件,以备后面测试链路聚合成功与否的时候使用。
步骤二LAN口聚合
在"系统--管理权"中打开软OP的SSH
当然,也可以直接接显示器和键盘操作,不过还是SSH比较省事,因为你可以直接粘贴命令。
使用SSH工具连接软路由,输入vi/etc/rc.local编辑自启动文件。
按i进入插入模式;
在exit0上面加入;
modprobebondingmode=0miimon=#设置bonding模式为0,通用性较好,不依赖交换机协议
ifconfigbond.0.0.netmask...0up
#设置bond0启动,IP地址可以随意设置只要不和外部IP冲突就可以,这个IP地址的存在只是为了让bond0下的网卡可以找到bond0的访问路径
#把eth0和eth1这两个网卡加入bond0接口
iplinkseteth0masterbond0
iplinkseteth1masterbond0
按esc退出插入模式
输入:wq存盘,如果编辑错误了可以输入:q!放弃存盘。
注意:这个时候千万别重启,因为网卡IP还没设置,如果这个时候重启,你就要接显示器和键盘调整网卡了。
在luci界面设置LAN的接口
接口
点击编辑,修改接口为bond0
接口
点击“保存并应用”后,开始读秒,但是这里系统并不会直接重启,所以要手动重启一下软路由(按reset或者电源重新插拔)
这里也可以参照设置好的文件对/etc/config/network进行修改,然后保存并重启
注意:在重启之前要把ETH0和ETH1的网线都插到交换机上,这样才能正常找到两个网卡。
这里设置如果错误,并不会变砖,而是会产生找不到网卡IP的问题,需要插上显示器和键盘进行本地调试。为了避免这个情况发生,可以在设置bonding之前在eth2或eth3上建一个LAN,从而可以通过其他IP设置软路由。
步骤三测试网络
当软路由重启之后,两个网卡的灯交替闪烁,基本证明已经设置成功了,可以通过原IP地址进行登录。
进入软路由的命令行之后(直接键盘显示器或SSH调用命令行),输入iperf3-s,打开测速server界面。
在其他电脑上输入iperf3-c软路由IP-P20;注意P是大写的,这里的意思是20线程测试,不加这个参数则为单线程
我这里是10.0.0.所以命令是iperf3-c10.0.0.-P20
由于我这里的交换机已经是万兆交换机,所以不需要再多做其他设置了,如果是千兆交换机的话,需要双网卡或4网卡的电脑进行测试。当然,前提是你的电脑或NAS也已经做了链路聚合。(好像windows天然支持链路聚合,linux的话,按以上步骤设置一下就可以了。当然,因为没有luci界面,所以需要编辑/etc/config/network文件来进行设置。群晖是支持bonding的,所以也可以用来测速)
测试结果如下:
单线程:
单线程2网卡bonding
多线程:
多线程2网卡bonding
对比单网线的测试结果:
多线程单网线带宽
这里证明bonding已经起到了增加带宽的作用,设置已经成功了。
在测试的时候突发奇想,把4个网卡都加入bond0(编辑/etc/rc.local并重启),4根网线都插到交换机上之后带宽可以达到3G左右,忘记截图了,就直接写个结论吧。
以后如果带宽再增加的话,可以考虑把USB3.0上插一个2.5G网卡以满足外网连接的带宽需求。
同时在测试的时候也发现bonding0模式需要成对的网线才会生效,3根网线的话,速率和2根是一样的,所以是2或4个网卡设置为一组,6根网线没有机会测试,因为我这里也没有这么多网卡的服务器或软路由。
现在lan口聚合已经搞定,后面要设置WAN口的聚合了。
步骤四WAN口聚合
这里还是vi/etc/rc.local
加入一个bond1作为wan口bongding接口
最终完整设置结果如下:
rc.local配置
然后把WAN口的物理接口设置为bond1
这里注意,我们的方案是通过内核banding的,所以接口模式不需要选择链路聚合,直接选择固定IP或DHCP或PPPOE即可,我这里是选择的PPPoE,并把eht2、eth3的接口都插入到光猫的千兆口上。
WAN配置
这里需要把WAN口的防火墙配置到WAN下,其他的设置就没什么可说的了,按照单网线的方式配置就可以了,多调一下就可以了。
最后我们来测试一下外网网速:
先接一根wan线:
单线网速
双路bonding
bonding后网速
网速大于1G之后,最直接的后果是机械硬盘已经赶不上网络的下载速度了,在PC的机械硬盘上做下载的时候,每次下载到%后,都会有很长时间的写盘,甚至内存小的PC会因为下载速度过高,内存溢出而蓝屏。
这里单纯测试一根光纤看起来提升的效果并不大,可以列为瞎折腾系列,但是在双wan叠加之后,嘿嘿。
所有宽带并发本文经“什么值得买”社区作者
巴库蒙甘授权转载,文章内容仅代表作者观点,与本站立场无关,未经授权请勿转载。