低成本扩展上网带宽——家用网关的链路聚合

2021-07-29 14:45:44 141点赞 1289收藏 135评论

创作立场声明:本文所测商品为自费购入。如参加张大妈家的活动获得,我会在文中点明。坚持独立的评价观点是笔者创作的基本底线,绝不会因商品来源不同而有所偏颇,请各位放心。

前言

数个月前,联通办活动,每个月多交10块钱,就可以把家里的宽带升级成千兆,并且换了一个号称万兆的光猫,再加上移动的宽带,外网总带宽已经妥妥超千兆了。而纯千兆内网实测大概是960Mbps,离千兆网络还有一定的差距的。而一般千兆光网的实际带宽是1.2Gbps,所以为了充分使用家里的网络带宽,扩展千兆网络已经成为了一个必要选项。

家中大部分设备是千兆接口,而且光猫也是4个千兆接口,所以结合现有的情况,我选中了链路聚合的方案。但是找遍了国内的网站,发现关于链路聚合的中文资料非常匮乏,并且也有网友询问链路聚合的方案。这也让我萌生了写这篇文章的念头,但由于工作繁忙(由996社畜向007猝死族进军),所以拖延了将近半年,最近总算是可以有时间来完成这篇文章了。

鉴于网友的接受程度,我这里只使用最简单的OpenWrt的bonding方案,尽量把专业术语的部分简化,并略过理论的部分,在实在不能省略的部分详加注释,以保证大多数网友能够理解并使用。

方案概述

现有网络扩展有很多方案,直接使用光猫上带的wifi6无线路由的方案也是可以接受的,这也是联通默认提供的方案,但是有线带宽比无线低,总感觉有点奇怪。

链路聚合并不是什么新技术,在企业服务中很少有单网卡的服务器,4×1G、4×10G和2×10G+4×1G的服务器都是比较常见的,这些服务器其实是默认支持了链路聚合的。但可悲的是,现在机房中很多的服务器都只插一个网口,白白浪费了其他网卡的带宽。

首先发一个我家的网络简图:

网络简图网络简图

为了避免长篇大论,这里其他部分全部略过,只讲软路由的链路聚合部分。

具体设置

铺垫那么多,总算说到正题了,硬件需求因人而异,我的网络中骨干设备是

4口软路由一个;MikroTik CRS305 1台;MikroTik CSS610 2台;网络模块若干;

硬件需求:

软路由一台,最少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 进入插入模式 ;

在 exit 0上面加入;

modprobe bonding mode=0 miimon=100 #设置bonding模式为0,通用性较好,不依赖交换机协议

ifconfig bond0 10.0.0.222 netmask 255.255.255.0 up

#设置bond0 启动,IP地址可以随意设置只要不和外部IP冲突就可以,这个IP地址的存在只是为了让bond0下的网卡可以找到bond0的访问路径

#把eth0 和eth1 这两个网卡加入bond0接口

ip link set eth0 master bond0

ip link set eth1 master bond0

按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 -P 20 ;注意P是大写的,这里的意思是20线程测试,不加这个参数则为单线程

我这里是 10.0.0.254所以命令是 iperf3 -c 10.0.0.254 -P 20

由于我这里的交换机已经是万兆交换机,所以不需要再多做其他设置了,如果是千兆交换机的话,需要双网卡或4网卡的电脑进行测试。当然,前提是你的电脑或NAS也已经做了链路聚合。(好像windows天然支持链路聚合,linux的话,按以上步骤设置一下就可以了。当然,因为没有luci界面,所以需要编辑 /etc/config/network文件来进行设置。群晖是支持bonding的,所以也可以用来测速)

测试结果如下:

单线程:

单线程2网卡bonding单线程2网卡bonding

多线程:

多线程2网卡bonding多线程2网卡bonding

对比单网线的测试结果:

多线程单网线带宽多线程单网线带宽

这里证明bonding已经起到了增加带宽的作用,设置已经成功了。

在测试的时候突发奇想,把4个网卡都加入bond0(编辑 /etc/rc.local 并重启),4根网线都插到交换机上之后带宽可以达到3G左右,忘记截图了,就直接写个结论吧。

以后如果带宽再增加的话,可以考虑把USB3.0上插一个2.5G网卡以满足外网连接的带宽需求。

同时在测试的时候也发现bonding 0模式需要成对的网线才会生效,3根网线的话,速率和2根是一样的,所以是2或4个网卡设置为一组,6根网线没有机会测试,因为我这里也没有这么多网卡的服务器或软路由。

现在lan口聚合已经搞定,后面要设置WAN口的聚合了。

步骤四 WAN口聚合

这里还是 vi /etc/rc.local

加入一个bond1作为wan口bongding接口

最终完整设置结果如下:

rc.local 配置rc.local 配置



然后把WAN口的物理接口设置为bond1

这里注意,我们的方案是通过内核banding的,所以接口模式不需要选择链路聚合,直接选择固定IP或DHCP或PPPOE即可,我这里是选择的PPPoE,并把eht2、eth3的接口都插入到光猫的千兆口上。

WAN配置WAN配置


这里需要把WAN口的防火墙配置到WAN下,其他的设置就没什么可说的了,按照单网线的方式配置就可以了,多调一下就可以了。

最后我们来测试一下外网网速:

先接一根wan线:

单线网速单线网速


双路bonding

bonding后网速bonding后网速

网速大于1G之后,最直接的后果是机械硬盘已经赶不上网络的下载速度了,在PC的机械硬盘上做下载的时候,每次下载到100%后,都会有很长时间的写盘,甚至内存小的PC会因为下载速度过高,内存溢出而蓝屏。

这里单纯测试一根光纤看起来提升的效果并不大,可以列为瞎折腾系列,但是在双wan叠加之后,嘿嘿

所有宽带并发所有宽带并发


展开 收起
135评论

  • 精彩
  • 最新
  • 我怎么觉得你搞的这么复杂,我用爱快,汇聚不是很简单吗,链路聚合也不难,再端口分流,分分钟就好了,op你搞的这么复杂?

    校验提示文案

    提交
    写一篇爱快的参考一下吧,我在网上找了一下相关文章,发现爱快多链路聚合不是所有版本都支持,而且没找到任何的参考文章。

    校验提示文案

    提交
    最新版本就有啊,你有装了爱快吗,lan设置那里有链路聚合

    校验提示文案

    提交
    还有8条回复
    收起所有回复
  • 我比较好奇联通的千兆宽带是怎么弄的

    校验提示文案

    提交
    用的桥模式,在路由器上使用pppoe拨号

    校验提示文案

    提交
    光猫自带的DHCP关闭了么?我的关闭不了,都是192.168.1.1网关,好像对nat有影响,变成nat4了。

    校验提示文案

    提交
    收起所有回复
  • 直接软路由多wan叠加,终端换个万兆卡或者2.5G卡不是更简单。在我看来,链路聚合最大的意义还是提供更高的可靠性

    校验提示文案

    提交
    普通光猫只有千兆口,目前带万兆口的光猫成本太高了

    校验提示文案

    提交
    成本差距有点大。

    校验提示文案

    提交
    收起所有回复
  • luci-proto-bonding大佬这个插件哪里下?

    校验提示文案

    提交
    官方源没有么?要不就ipa安装,或者不装吧,带luci的是ui插件,通常不是必须的。

    校验提示文案

    提交
    [内伤] 官方源没找到。好吧

    校验提示文案

    提交
    收起所有回复
  • 爱快能实现么

    校验提示文案

    提交
    爱快不行,没有root不能自己定义内核

    校验提示文案

    提交
    链路聚合不是爱快的标准功能么,lan设置里直接选呀

    校验提示文案

    提交
    还有4条回复
    收起所有回复
  • 我没仔细看到,最后居然看不懂了,bond的是,移动和联通两条光纤吗?

    校验提示文案

    提交
    wan口聚合连接了联通的光猫,另外一个wan口没聚合连接移动,用MWAN3插件聚合了两条宽带,lan口聚合连接了交换机

    校验提示文案

    提交
    说的很明白

    校验提示文案

    提交
    收起所有回复
  • 比较想知道10块钱升千兆是什么活动

    校验提示文案

    提交
    地方活动,瞎搞。100m,300m,500m的都是加10块钱升级千兆

    校验提示文案

    提交
    我家500兆,喊我升级最少喊了半年了,我家庭捆绑用户,费用都160多了还要加钱,我干脆不升了 [观察]

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 搞那么宽,干啥用?

    校验提示文案

    提交
    没啥用,就是下载东西速度快点,主要的带宽是给NAS用的

    校验提示文案

    提交
    收起所有回复
  • 您好请问有推荐的6口能跑满1000m的总上行的成品软路由吗?

    校验提示文案

    提交
    黄鱼上有的是

    校验提示文案

    提交
    收起所有回复
  • 搞那么多交换机

    校验提示文案

    提交
    我这里设备有点多,普通家用根本不用这么折腾

    校验提示文案

    提交
    收起所有回复
  • 用的MikroTik,不是ros,刷的op?

    校验提示文案

    提交
    只是用了MikroTik的交换机,运行的是是SwOS,软路由是x86的,直装了op

    校验提示文案

    提交
    哦哦。305有点贵。图里的交换机1是305么。
    我也是联通和移动双宽带入户,想用305+PON模块直接接光纤,ros双拨,运营商的光猫就省了,少占点空间。

    校验提示文案

    提交
    还有6条回复
    收起所有回复
  • 不是很明白为啥用了三个交换机,单纯网线使用需求高么?

    校验提示文案

    提交
    因为物理位置的间隔,而且有万兆连接的需求。这三个交换机是为了支撑万兆内网,同时兼容千兆和2.5g的设备。

    校验提示文案

    提交
    你注意看一下网络拓补图中10g的连接线,就明白为什么要用三台交换机了。

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 福建电信n年100m 没有电信手机号。。。 啥都不是 LJ

    校验提示文案

    提交
    没有竞争压力就没动力

    校验提示文案

    提交
    收起所有回复
  • 你这个方案待机功率怕都有100多w吧……

    校验提示文案

    提交
    待机没算过,满载的话100瓦应该不够,因为还有两个wifi路由器呢做mash呢,一个路由器就接近20瓦了。

    校验提示文案

    提交
    有钱人

    校验提示文案

    提交
    收起所有回复
  • 上班肝不够,回家继续肝 [皱眉]

    校验提示文案

    提交
    这个是为了回家可以躺在沙发上舒服的看4k电影

    校验提示文案

    提交
    收起所有回复
  • WAN口破千兆,是需要多拨么? 还是bonding后,就等于有一个2G的口来拨号了?需不需要光猫支持?

    校验提示文案

    提交
    单播的,相当于2g连一个猫,因为一个猫上有1.2g带宽,需要光猫背板带宽支持,现在很多光猫背板带宽只有1g。

    校验提示文案

    提交
    收起所有回复
  • 为什么你们家的网络总是这么复杂

    校验提示文案

    提交
    可能是因为我这里比普通家庭需要联网的设备多吧

    校验提示文案

    提交
    收起所有回复
  • 我电信的,按照这样双拨号出两个公网ip会有问题吗?

    校验提示文案

    提交
    同运营商做多播就可以了,链路聚合和多播没关系,提高的是接口带宽。

    校验提示文案

    提交
    收起所有回复
  • 假如nas聚合两条千兆接入交换机,两台独立电脑分别通过一条千兆接入同一个交换机,在nas性能满足的情况下,两台电脑是不是可以同时以千兆的速度访问nas?

    校验提示文案

    提交
    可以,相当于nas有2g带宽了。但是每个电脑能不到到千兆就要看交换机的背板带宽了。

    校验提示文案

    提交
    交换机上需要设置吗?

    校验提示文案

    提交
    还有5条回复
    收起所有回复
  • 我这一根联通一根电信,之前开过华硕双wan,测试实际效果甚微。大部分网页都只走一条线路,迅雷百度等下载没测过。是不是不同运营商双线汇聚不如一个运营商两条线路?

    校验提示文案

    提交
    一样的,不如单条网线速度块。只有多线程的应用才会体现速度的差别。我现在除了pb外,其他的没什么感觉,因为实际瓶颈是在网站的服务器带宽上了,单char只会负载到单台服务器节点。

    校验提示文案

    提交
    收起所有回复
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
1.2K
扫一下,分享更方便,购买更轻松