家庭网络_乘着SMB3的翅膀,低成本实现内网多通道带宽叠

本文作者:Vespa

对于速度的渴求是我们与生俱来的天性,在这个千兆入户光纤开始普及,5G移动网络即将上线的时代,内网千兆链路100MB/S左右的传输性能,对于NAS等网络存储设备的用户而言已不能满足日益膨胀的速度需求。

高端玩家们开始尝试利用光纤内网、万兆铜缆、InfiniBand等一些企业级的技术手段提升传输性能;但是对于大多数普通玩家而言,技术入门、配置摸索的学习成本就让人头痛;设备、和线路改造的资金投入更加无法接受。好在技术的升级往往会跨越设备的壁垒,今天我们就来聊聊微软为我们带来的福利,利用Windows 最新SMB3实现简单易用的多通道带宽叠模式。

对于不想看详细内容,只关心使用方法的朋友,简单概括如下:

1、多通道带宽叠无需任何专用设备支持,普通集成网卡、傻瓜交换机均可实现,只要客户机、服务器、交换机上的网口足够就可以随意叠加。

2、多通道带宽叠基于软件功能,无需任何专业设置,即插即用,方便稳定。但是需要服务器和客户机安装Windows 8、Server 2012以上操作系统,或者内置固件支持此特性。

本文涉及SMB 3和多通道带宽叠加均已安装Windows 10系统的PC或者DIY NAS系统为例,对于成品NAS各大厂家的多通道带宽叠功能目前还在测试阶段,群晖已经可以通过SSH命令手动开启,但是实际使用效果还不稳定,所以这次暂时不做分享。

只要满足以上两方面,即可插上网线开始享受带宽叠加带来的高速快感。而对于想详细了解这一功能与性能测试的朋友,请继续看如下介绍和测试:

技术背景

本文所分享的多通道带宽叠功能均基于使用SMB3协议进行的内网数据传输,通俗的来说就是Windows下通过共享的网络驱动器进行的数据交换。对于FTP、NFS这些传输协议都是无效的。

SMB协议是微软与Intel共同开发的网络文件共享协议,通过该协议可以让应用程序读取和写入文件以及从计算机网络中的服务器程序请求服务。

SMB 协议可在其 TCP/IP 协议或其他网络协议上使用。使用 SMB 协议时,应用程序(或应用程序用户)可访问远程服务器上的文件或其他资源。这让应用程序可以读取、创建和更新远程服务器上的文件。它还可以与任何设置为接收 SMB 客户端请求的服务器程序通信,这种协议被广泛的应用在NAS存储中。

基于SMB 3的多带宽叠加早已不是什么新鲜的技术了,早在Windows 8发布之初与之配套的SMB3.0规范便已实现,现在的Windows 10已经更新到3.1.1;我在2015年便有分享相关经验的想法,却一直拖拖拉拉直到现在才总算完成。对于一直催我更新的值友们这里先说声抱歉了。。。。

目前基于传统RJ45网络接口+铜缆网线的有线网络环境中,目前最常用的方法就是带宽叠加,将多条独立的千兆链接进行聚合、叠加,以实现总带宽的扩容。目前常用的有链路聚合叠加(Link Aggregation Control Protocol)和SMB3多通道带宽叠加(SMB 3 Multichannel)两种方式,我们先看下他们之间的区别。

链路聚合叠加(Link Aggregation Control Protocol)

链路聚合(LACP)是基于IEEE802.3ad标准的网络传输协议,指将多个物理端口汇聚在一起,形成一个逻辑端口,以实现出/入流量吞吐量在各端口的负载均衡并增加带宽。

链路聚合最大的优势在于属于硬件层面的端口聚合,不局限于某一种操作系统或者传输协议,这对于企业级较为复杂的网络环境有着不可替代的作用。

在NAS产品大量涌现的当下,链路聚合等相关技术为了众多厂商的宣传亮点之一。支持链路聚合的NAS产品都具备2个以上的LAN接口,按照厂家的宣传,通过将网口聚合,可以达到2Gbps以上的传输带宽。

从技术本质上来说厂家的描述没有什么问题,只不过因为大多数消费者都并非精通网络技术,所以对于链路聚合产生了不切实际的幻想。

实际使用情况以下图为例:

当存储服务器与交换机均支持LACP相关协议并完成设置后,两者之间的网络连接就实现了带宽聚合。若服务器有两个网口,则聚合后的总带宽为2Gbps。两台客户端使用千兆有线链路连接交换机同时存取服务器上的数据时,两者均可达到1Gbps的读写速度;此时服务器端网络总吞吐带宽也达到了2Gbps。

但是如果按照下图,单客户端加两条千兆有线链路连接交换机存取服务器上的数据,则有效传输带宽依然为1Gpbs,无法利用叠加后的2Gpbs带宽。

所以这里需要强调,链路聚合是带宽叠加技术的一种,但是他只对于交换机-交换机、交换机-服务器之间的链路进行叠加,无法提升点对点的传输带宽。

SMB3多通道带宽叠加(SMB 3 Multichannel)

多通道带宽叠是SMB3规范众多新功能中的一项,以下图为例:

假设服务器与客户机均配有多网卡,如启用SMB多通道模式,系统则会利多通道技术,会对每个会话建立多个TCP/IP连接,这样就可以充分提高整个链路的吞吐而实现物理带宽的叠加。不过这种带宽叠加仅仅支持使用SMB3规范的数据传输,对于其他数据传输协议均无效。

两种技术之间的具体区别如下:

对于网络系统规模较小、应用较为单一的个人、家庭用户而言,使用SMB3的多通道功能来提升内网传输速度,无论在投入的设备成本、学习成本还是实际效果表现来看都远高于传统的LACP链路聚合技术。唯一对于操作系统方面的限制在Windows10已经广泛普及的当下也已不再是障碍。

硬件选购

实现SMB3规范下的多通道带宽叠加功能是不需要添加任何专用设备的,不过为了实现带宽叠加就需要更多的网口来接通更多的传输链路,所以假如这方面硬件规格不足的朋友还是需要增加一些基础设备的。

网卡

对于带宽要求不高,且服务器和客户机上已经集成双网卡的用户,其实并不需要在单独采购网卡。对于像我一样希望使用更高带宽的用户可能需要再选购一块多端口网卡

正规渠道的多端口千兆网卡价格都很贵。淘宝上有拆机的二手网卡,价格低廉,但存在假货的风险,所以建议了解清楚情况后再下手。我最终通过HP代理购入了2块NC364T 四端口千兆网卡。

交换机我选用NETGEAR GS316 16口千兆交换机,非网关傻瓜交换机,做工优良,价格便宜。假如对于带宽要求不朋友也可以使用更加实惠的8口交换机,甚至路由器附带的LAN接口。

美国网件(NETGEAR)GS316 16口全千兆非网管交换机 中小型企业商用以太网交换机429元京东

去购买

NETGEAR GS316采用网口平铺布局,体型扁平且小巧,便于在我狭小的书房中安装与布线;而16个千兆接口也让我足够使用尽情折腾。

功能配置

实现SMB3的多通道功能非常简单,只需满足以下条件即可

1、服务器与客户端基于Windows8以上操作系统,或者支持SMB 3;

不同Windows系统组合之间所能够支持的最高的SMB版本

2、服务器和客户端的所有网线都在同一网关下的内网中,最好都接于同一台服务器。

当以上条件条件都满足,且两者间存在一条以上网络链接,便可自动实现带宽叠加功能,无需进行任何相关系统参数配置。

实际使用时由于存在多个网络端口,服务器和客户机会存在多个IP地址,但用户无需考虑这些,直接使用服务器主机名或者服务器任意IP地址进行文件浏览和数据传输,都可享受多通道功能带来的网速叠加体验。

性能测试

测试环境

服务器与客户端相关硬件规格

服务器我使用主板集成网卡和PCI-E 4端口千兆网卡建立了达到6Gbps的叠加带宽,主客户机则一共使用了5个千兆网口,总叠加带宽为5Gbps。

服务器与客户端所用硬盘测试性能如下:

客户机所用三星 SM951 256G硬盘因为使用M.2接口使用NVME接口规范,所以读写速度对于网络传输负载来说不存在任何瓶颈。

服务器所用的Sandisk Extreme II 480G属于较早期产品,所以速度不及支持NVME规范的产品,实际读取551MB/S、写入427MB/S对于高带宽叠加还是存在一定瓶颈,尤其是写入性能。

双链路带宽叠加

首先测试一下双链路下的带宽叠加,此状态下服务器与客户机只需具备双网口即可实现。这对于很多用户来说这是最容易实现也最为有效的提速方式。

双路网络链接总带宽2Gpbs,理论传输速度为256MB/S。客户机通过SMB协议复制服务器中的数据时,点对点的实际传输带宽轻松突破220MB/S传输速度。因为传输速度均在两端SSD硬盘的读写性能范围之内,所以传输曲线相当平滑,两条千兆链路均处于满负荷吞吐状态。

三链路带宽叠加:

服务器与客户机之间增加一条千兆有线链路,理论带宽为3Gbps。

实际传输速度338MB/S,曲线平稳,三条千兆链路依然处于满负荷吞吐状态。可以看出似乎只要在两端硬盘读写性能之内,叠加的带宽就可以全力释放出接近与理论带宽的传输性能。

五链路带宽叠加:

接下来我不打算依次增加链路数量,直接将我客户机与服务器上网络端口全部开启,共计5条千兆链路实现了5Gbps的理论数据带宽,数据带宽已经达到服务器上SSD硬盘读写性能极限;而此时网络端口的占用也达到了10个,所以这种模式作为极限状态测试。我详细测试客户机从服务器读取数据和客户机向服务器写入数据两种传输模式下的性能表现。

服务器向客户端传输数据,此时服务器端硬盘为读取状态,客户端硬盘为写入状态。

此时网络传输带宽与服务器端的SSD的读取性能基本相当,传输曲线变不如前两次测试那样平滑了,不过平均速度依然维持在480MB/S的水平,这对于网络传输算是相当可观的性能了。

客户端向服务器传输数据,此时服务器端硬盘为写入状态,客户端硬盘为读取状态。

网络传输性能超过服务器SSD的写入性能,传输曲线出现比较剧烈的波动,这应该是SSD主控芯片满负荷运行时产生的。最终平均传输速度稳定为410MB/S,这也与之前测试的数据基本吻合。

而且通过这次测试还可以看出,当总体传输出现波动时,每块网卡同样随之波动,而且5快网卡的大致波形基本吻合,这也印证了SMB3网络多条通道中的负载均衡功能发挥了作用。

功能体验

链路冗余

首先以5条千兆链路同时工作开始数据传输,初始传输速度约480MB/S,然后我开始依次拔掉交换机上的网线接口,以模拟网络出现故障时的状态,最终我只保留一条网线来保持连接。然后我再依此插回网线,继续模拟网络恢复。最终完成测试后的数据传输曲线如下:

可以看出当进行带宽叠加的端口组中,如果有一个或几个带宽出现故障时,系统会自动将剩余端口继续传输数据;而当网络恢复后系统也会立即将其加入到正在进行的数据传输中。整体都是动态进行调整的,一部分端口的故障或者恢复均不会影响整体数据传输的连贯性。

同时我们可以看出,每次端口增加或者减少后,整体的传输曲线只会成台阶状的整体上升、下降,并不会出现剧烈的波动,这也可以验证出在单客户端传输环境下,负载均衡机制很好的发挥了作用,使网络传输更加稳定。

多客户端负载均衡

我找了两台客户端来进行测试,一台配备了5个千兆网络接口,与服务器实现5链路聚合;而另一台仅适用单千兆网口与服务器相连。两台客户端同时与服务器进行数据传输时,实际效果如下:

首先服务器优先满足了低带宽客户端的带宽需求,使之满速运行,最终传输速度稳定在113MB/S的千兆网络传输极限速度。

然后再将剩余4个网络端口进行聚合,向高带宽客户端传输数据。由于受到服务器硬盘读取性能限制,最终传输速度稳定在343MB/S。

而当低带宽客户端结束数据传输后,高带宽客户端也随即恢复了满负荷传输状态。

使用感受

稳定性

基于SMB3规范的带宽叠加,无需专用设备;无需繁杂的系统设置,搭建的成本相当低廉,而获得的效果也非常出众。

除了点对点完美实现了多宽带传输速度叠加之外,原先基于端口汇聚的线路冗余、负载均衡都功能也一应俱全。对于小规模网络使用的个人用户基本可以舍弃技术和装备门槛都高很多的端口汇聚了。

实际使用效果也非常稳定可靠,只要网络设备稳定,存储系统性能达标,就可以获得持续稳定的高速链接。我在使用的3年时间里从未出现过失效或者不稳定情况。

可用性

这项应用,使用双千兆带宽叠加模式是收益最大、性价比最高的使用模式

对于狂热追求高速的玩家来说

3宽带以上的网速叠加,可以最大程度上发挥和利用NAS设备上高端SSD仓库盘的读写速度。这对于SSD的基本性能也提出了更高的要求,对于大多数中低端大容量SSD,虽然标称性能都很可观,测试成绩也很优秀,但是这些很可能只是基于容量有限的缓存的成绩,而实际在进行大块数据读写存储时往往就会出现如下图的传输曲线。

所以在实际使用前一定要区分清楚厂家标称的读写速度是持续是所谓的“缓存读写速度”还是真实的“持续读写速度”

对于追求性价比的普通用户

一台傻瓜型的八口交换机就可以负担两台客户端与一台服务器的链接,对于设备上已经集成双网口的用户来说,基于SMB3.规范的带宽叠加可以说是白送的福利,而且就算增加一块千兆网卡花费也相当低廉。

对于使用普通大容量HDD的存储系统的用户来说,得益于单盘容量的不断增大,平均读写速度也早已不再局限于100MB/S的性能水平了。以我目前正在使用的希捷酷狼 8T HDD为例,读、写的最低速度都已经超过100MB/S,平均速度达到了180MB/S,在这样的性能下使用双千兆带宽叠加,可以说是胃肠有效的性能提升手段

实际测试性能如下,140MB/S的传输速度已经超过单千兆网卡的带宽限制。

而且因为机械磁盘存储载体为旋转的圆形磁碟,所以虽然硬盘的转速恒定,但是随着磁头从碟片的外圈向内心移动就会持续降低线速度,因此磁盘外圈的传输率最高;内圈则传输率最低。所以实际传输速度与数据存储的扇区位置有很大的关系,对于存储在靠近外圈的数据理论上还可以获得更高的传输速度。

实用性

对于我现在所用的5千兆带宽叠加,其实属于性能严重过剩的浪费模式,因为在一般工作和家用环境中很少有软件需要如此大的网络传输带宽,而我现在唯一能够受益的也只有大容量视频渲染后的存出输出。

所以这种模式更多的只是对于极限性能的追求和发烧的折腾,一般用户完全无需照搬使用。但是由于实现起来非常方便,这也可以看作一种技术的储备,日后如有用武之地便可立即投入使用。