Unraid 万兆内网实践
创作立场声明:本文所测商品为自费购入
万兆内网,每一个搞了nas的小伙伴一定都希望配置的小玩意,闲来无事,趁着清明假期把这些东西搞出来。本文将会介绍所需的硬件和软件知识
下表是配置万兆所需的配件和链接
共计1403元
内网形成的拓扑图
全文目录:
交换机
根据我群群友熏熏发言:路由器就像是变压器,交换机就像是插线板。交换机位于路由器的里面,处于内网之中,负责内网交换数据包的作用。通过交换机,数据可以在内网之间传递,而实际上不需要经过路由器
交换机的选型有不少,其实算下来价格和家里的配置,更适合的型号是MikroTik CSS610-8G-2S+IN
MikroTik这个牌子的交换机也不少,上面这款型号的8G的意思是有8个以太网接口(俗称 电口),2S的意思是2个SPF+ 光纤接口(俗称 光口),同样可以完成搭建万兆家庭内网的需求,可惜光口太少而以太网太多,如果是4个电口,4个光口,那么它将绝杀
类似的型号还有:
包含了4个光口,刚刚好的1口以太网。
思前想后我反正买了ST1008F这个
网卡
根据个人需要可以选择各种万兆网卡,这里我选择的是CX341,电脑和NAS上各一块。
CX341这个网卡是比较著名的国产网口网卡,胜在便宜,以前没炒起来的时候价格也就20块一片,OCP的接口原来是用在服务器端的,稳定性也还可以。OCP英文全称是Open Compute Project,由Facebook发起的开源硬件标准。
OCP接口需要通过一个转接板转成PCIE 的接口,这个网卡用到的是一个x8的PCIE口,可以看一看你的主板接口还有没有剩余,一般来说如果是MATX主板都有两个x16长度的PCIE口,丐一点的可能是1个X16,1个x4,那么后者自然就插不上这个网卡。购买前看一下自己的口子还有没有剩
两块网卡才等于其他网卡一半的价格,还要啥自行车?
如果有小伙伴对性能有要求,或者希望网卡支持1虚多或者有多个光口,可以自行了解。
电转光模块
既然交换机分为光口和以太网,而买的交换机不带电口,自然需要购买从电转向光口的模块,在这里购买的是
这里需要注意:
根据和卖家的沟通,千兆的电模块和万兆的电模块是不一样的,这里别看链接里最便宜的那个千兆电口只需要70,万兆电模块是280,万兆自适应模块是305,我不得不买最贵的这个。因为千兆的电口模块和TP交换机的兼容性有问题,商家说有的人买回去可以用,有的人不可以。我也让他寄来了两个,测了一通发现千兆那只确实不能用。
再一次感觉交换机买错了呢哈哈(
万兆光模块
光纤的接口分为单模和多模。
在给定的工作波长上传输多种模式的光纤。按其折射率的分布分为突变型和渐变型。普通多模光纤的数值孔径为0.2±0.02,芯径/外径为50μm/125μm其传输参数为带宽和损耗。由于多模光纤中传输的模式多达数百个,各个模式的传播常数和群速率不同,使光纤的带宽窄,色散大,损耗也大,只适于中短距离和小容量的光纤通信系统。
多模光纤容许不同模式的光于一根光纤上传输,由于多模光纤的芯径较大,故可使用较为廉价的耦合器及接线器,多模光纤的纤芯直径为50μm至100μm。
对于我们搭建内网的主要影响的是信号的传输距离,单模主要应用在长距离的传递,距离一般超过10km,而多模一般在300m以内,家用也不会超过300m的传输长度。 一般万兆多模比单模便宜,所以选多模就行 。多模双纤表示接口处需要插两根光纤
需要注意的是,上面这个万兆的价格一样都是78元,但是插在交换机上的型号和网卡上的型号可能由尺寸上的差异,和商家沟通好就可以 。
测试的结果是我随手插了交换机,发现4个都能插进交换机,但是有2个是插不进往卡里的。
光纤
根据光模块来,多模双纤模块,直接买双纤的跳线就好。上面的光模块也写了接口类型是LC,所以买的光纤即LC-LC接口
反正也便宜,随便买就行了,大差不差。另外希望美观的小伙伴,也可以考虑透明光纤,室内用是足够了
软件部分
Windows
基本不需要做啥,插上网卡,在设备管理器里可以看到
然后打开有线连接就可以
Unraid/Linux
CX341的网卡是自带了驱动的,不需要任何安装步骤。如果直接插上不能用,可能是网口部分有特殊的设置。在Linux系统中lspci命令可以查看到所有的PCI接口上的设备
最后的两条Ethernet即以太网控制器,看到的ConnectX3字样的就是光口网卡,另一个是以太网网卡。出现了这个字样就说明设备已经被识别了。
打开Unraid的/Settings/NetworkSettings 页面,里面配置一下网口的配置
bond0是一个特殊的网卡,他会负责聚合其他的物理网卡。在这里我们将Bonding members of bond0 勾选上eth1(光口)和eth0(主板上的以太网)即可。
Bonding mode值得一说,不过如果你只打算nas上插一根线可以不用看,如果插了两根,那么这两个物理网卡如何承载流量,就是这里的模式了。英文的介绍大致说明了各自的作用
简单地抄一下别人的介绍:
第一种模式:mod=0 ,即:(balance-rr) Round-robin policy(平衡抡循环策略)
特点:传输数据包顺序是依次传输(即:第1个包走eth0,下一个包就走eth1….一直循环下去,直到最后一个传输完毕),此模式提供负载平衡和容错能力;但是我们知道如果一个连接或者会话的数据包从不同的接口发出的话,中途再经过不同的链路,在客户端很有可能会出现数据包无序到达的问题,而无序到达的数据包需要重新要求被发送,这样网络的吞吐量就会下降
第二种模式:mod=1,即: (active-backup) Active-backup policy(主-备份策略)
特点:只有一个设备处于活动状态,当一个宕掉另一个马上由备份转换为主设备。只有一个接口处于工作状态,在有 N 个网络接口的情况下,资源利用率为1/N
第三种模式:mod=2,即:(balance-xor) XOR policy(平衡策略)
特点:基于指定的传输HASH策略传输数据包。缺省的策略是:(源MAC地址 XOR 目标MAC地址) % slave数量。其他的传输策略可以通过xmit_hash_policy选项指定,此模式提供负载平衡和容错能力
第四种模式:mod=3,即:broadcast(广播策略)
特点:在每个slave接口上传输每个数据包,此模式提供了容错能力
第五种模式:mod=4,即:(802.3ad) IEEE 802.3ad Dynamic link aggregation(IEEE 802.3ad 动态链接聚合)
特点:创建一个聚合组,它们共享同样的速率和双工设定。根据802.3ad规范将多个slave工作在同一个激活的聚合体下。第六种模式:mod=5,即:(balance-tlb) Adaptive transmit load balancing(适配器传输负载均衡)
特点:不需要任何特别的switch(交换机)支持的通道bonding。在每个slave上根据当前的负载(根据速度计算)分配外出流量。如果正在接受数据的slave出故障了,另一个slave接管失败的slave的MAC地址。
该模式的必要条件:ethtool支持获取每个slave的速率
第七种模式:mod=6,即:(balance-alb) Adaptive load balancing(适配器适应性负载均衡)
特点:该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡(receive load balance, rlb),而且不需要任何switch(交换机)的支持。接收负载均衡是通过ARP协商实现的。bonding驱动截获本机发送的ARP应答,并把源硬件地址改写为bond中某个slave的唯一硬件地址,从而使得不同的对端使用不同的硬件地址进行通信。
来自服务器端的接收流量也会被均衡。当本机发送ARP请求时,bonding驱动把对端的IP信息从ARP包中复制并保存下来。当ARP应答从对端到达 时,bonding驱动把它的硬件地址提取出来,并发起一个ARP应答给bond中的某个slave。使用ARP协商进行负载均衡的一个问题是:每次广播 ARP请求时都会使用bond的硬件地址,因此对端学习到这个硬件地址后,接收流量将会全部流向当前的slave。这个问题可以通过给所有的对端发送更新 (ARP应答)来解决,应答中包含他们独一无二的硬件地址,从而导致流量重新分布。当新的slave加入到bond中时,或者某个未激活的slave重新 激活时,接收流量也要重新分布。接收的负载被顺序地分布(round robin)在bond中最高速的slave上
其实mod=6与mod=0的区别:mod=6,先把eth0流量占满,再占eth1,….ethX;而mod=0的话,会发现2个口的流量都很稳定,基本一样的带宽。而mod=6,会发现第一个口流量很高,第2个口只占了小部分流量
哪种模式是我们需要的呢?假设Nas的以太网是千兆的,带宽1000M,光口是10G带宽,那么可以想到:
Unraid的默认策略是模式1,它相当于只有1个网卡,其他网卡只有在这个网卡坏掉了才会被bond0用上。如果它开启的时候,会在Unraid首页看到有一个网卡处于backup备份状态。
根据说明,选择模式6就好了。它会先占满千兆的带宽,然后开始占用10G的光口网卡
软件测试
使用iperf3进行测试,官网:iperf.fr/iperf-download.php
Windows侧,有WSL子系统,里面是ubuntu,也可以直接apt-get 安装上。NAS的Unraid 是linux系统,但是没有包管理器,手动装即可,根据官网的说明,主要有三步
Linux manual Installation 64 bits (AMD64) by Vivien Guéant. (sha256)
sudo wget -O /usr/lib/libiperf.so.0 https://iperf.fr/download/ubuntu/libiperf.so.0_3.1.3
sudo wget -O /usr/bin/iperf3 https://iperf.fr/download/ubuntu/iperf3_3.1.3
sudo chmod +x /usr/bin/iperf3
这三部的功能是1、下载依赖的动态链接库 2、下载可执行文件 3、赋予可执行权限
不熟悉Linux系统的小伙伴,直接运行的时候可能会出现报错:
root@zhutou:/dev/shm# iperf3
iperf3: error while loading shared libraries: libiperf.so.0: cannot open shared object file: No such file or directory
这个错误表示可执行文件没有读取到动态链接库的地址,用环境变量LD_LIBRARY_PATH控制一下读取的行为就好
查看是否运行成功:
LD_LIBRARY_PATH=/usr/lib iperf3
显示了这样的信息即为成功了。
那么在Unraid上运行
LD_LIBRARY_PATH=/usr/lib iperf3 -s
代表服务端模式。打开服务器的端口和监听
Window WSL终端中,连接上对应的IP:
iperf3 -c 192.168.50.254 -P 10
这里的192.168.50.254是我NAS所在的地址,-P代表并行的10个客户端发起请求
执行后Unraid端和Windows端都会打印对应的信息
具体的应用测试就不测了,因为我NAS的缓存SSD的读写速度只有500M,都没达到网速的上线,读写肯定不行的哈哈
值友5469986850
校验提示文案
伢子
校验提示文案
abit三少
校验提示文案
laxim
校验提示文案
Jayce
校验提示文案
瞎拍照的叔叔
校验提示文案
AzraelF
校验提示文案
AndroidOL
校验提示文案
巨大直
校验提示文案
值友2768237219
校验提示文案
Lucas1213
校验提示文案
买买买论斤买
校验提示文案
willz
校验提示文案
值友4778917917
校验提示文案
keresladon
校验提示文案
魔法柴郡猫
校验提示文案
威武军节度使
校验提示文案
值友友尽
校验提示文案
铬儿
校验提示文案
昵称是9527
校验提示文案
值友8826449588
校验提示文案
cc5233
校验提示文案
小杰哥哥orz
校验提示文案
值友3346836128
校验提示文案
飞翎
校验提示文案
2000ty
校验提示文案
六裤全输
校验提示文案
值友1236376645
校验提示文案
jccg315
校验提示文案
简__单
校验提示文案
巨大直
校验提示文案
s2wcn
校验提示文案
说好不说谎
校验提示文案
日寒杆小屁孩
校验提示文案
ChaosHeadN
校验提示文案
我来看看你
校验提示文案
mumumutou
校验提示文案
瞎拍照的叔叔
校验提示文案
Jayce
校验提示文案
laxim
校验提示文案