包转发性能(Throughput)也可以称为吞吐量,这里吞吐量,我不讨论三层交换机的交换容量和背板吞吐量,因为三层交换机是交换芯片来处理数据,能实现线速转发,我这里讨论的包转发(吞吐量)是指网络数据从一个以太网口到另一以太网口由CPU处理的转发性能,这代表了路由器CPU和内存的性能(基于x86处理器的软路由也可作为参考)。

MikroTik官方从1518Byte、512Byte和64Byte给出了详细的吞吐量测试数据,在这方面MikroTik路由器和交换机的数据是非常真实的,比很其他一些厂商数据含糊不清要良心许多!这些数据,包括桥接和路由的性能转发测试,还有添加25条策略的转发测试等,但不含nat,因为nat转发和会话数量有很大关系。

通常数据包处理都要经过CPU(路由器或三层交换机也支持由交换芯片处理,这里不做讨论),如当前RB、CCR和CRS等设备采用的是MIPS、PowerPC、Tile和ARM等构架的CPU,基于x86平台的就是大家熟知的Intel和AMD。CPU的处理能力直接决定数据包转发性能,处理数据包就像流水线一样,对每个包进行拆包、重新封装和转发。

数据包的大小决定了处理速度和吞吐量,例如我们在上网时,发送聊天信息、网页浏览、播放视频和下载数据,封装的数据包大小是不一样的。假如一个数据包封装了网页图片是512Byte,CPU每秒能处理10000个,并不能做到比512Byte小一半的256 Byte包每秒就能处理20000个,对于CPU处理数据包有点类似计件式的工作,当然实际情况不是这样,只是做一个类比。下图是一台CCR2004-16G-2S+的吞吐量数据:

一共分了3组数据1518Byte、512Byte和64Byte,每组数据又分为Mbps和Kpps,Mbps大家比较好理解是每秒多少Mbit,Kpps(packet per second)则是,每秒处理多少K的数据包。官方测试包含了bridge桥接转发和Routing路由转发两种,bridge转发下增加了配置25条桥接过滤规则转发,routing路由转发也增加了25条流控规则和25条防火墙过滤规则的转发性能,这样的转发数据更接近用户实际使用的环境。

我们以第一项Bridging none(fast path)为例:每个数据包封装1518Byte,CCR2004能处理31.47Gbps,每秒能转发2591.6k的数据包,如果将数据封装大小调整为64Byte,每秒能处理5.27Gbps,每秒转发9697.9k的数据包,数据包封装越小,转发的数量就越多,对CPU性能要求越高。

举一个例子,假设一个在流水线检验员,检查每个产品的包装是否合格,第一天,产品包装是大箱子,里面有8个小包装,但他只需检查大包装是否合格,无需检查里面的小包装,他一分钟能检查20个大箱包装,出货的数量也多。

第二天,流水线不再用大包装了,都是小包装,那请问他的每分钟的检查数量是否会提高8倍?估计提升2倍都很不错了。

这和我们的路由器处理大包和小包的道理是一样,CPU处理大数据包很轻松,而处理小数据包就很吃力,大包装的数据多,一次就可以转发很多数据,而小包数据少,数量又多,很考验CPU的性能。我们衡量路由器CPU性能一个重要指标是看64byte的小包转发能力,三种封装有不通的衡量:

  • 64byte包吞吐量反应了CPU的性能
  • 512byte包反应了CPU和内存整体综合性能
  • 1518byte包吞吐量反应了内存性能

吞吐量的标准单位是pps(packet per second),在MikroTik给出的Mbps和Kpps数据是可以相互转换的,例如1518Byte的31472Mbps约等于2591.6kpps*1000*1518*8

MikroTik所有吞吐量测试是通过以下方式完成:

  • 通过路由器转发测试路由转发
  • 精简RouterBOARD设置,仅安装system功能包
  • 通过Agilent N2X设备测试

下面图则是近年来,RB、CRS和CCR等产品的对比,注意单位是kpps,每秒转发包

上图可以看到CCR系列的吞吐量性能和RB系列有明显的差距。

以上基于64byte,且是纯桥接转发性能,没有做任何策略的情况下。接下来看看路由转发性能,同时不能只从一组参数入手,把添加策略后的情况纳入看又是如何。

选择路由模式的数据更能体现路由器作为三层IP路由转发性能,这个模式下选择了两种参数:无规则转发和添加25条防火墙规则转发,下图是,64byte的路由模式下转发性能,单位是Mbps,也就是在这个模式下实际的带宽转发流量。

CCR2004-1G-12S+2XS虽然无规则转发性能不如CCR1009-7G-1C-1S+,但在添加25条防火墙规则后的吞吐量性能,反超CCR1009-7G-1C-1S+。CCR2116添加25条防火墙规则后,超过了CCR1036,逼近CCR1072。

同样我们在看看RB和CRS系列:

RB4011在无规则的64byte转发性能超过了RB5009,加入25条防火墙规则后,RB5009反超。

为了更了解设备性能,再来看看512byte综合性能的测试

你敢信这个512byte的综合性能,CCR2004-1G-12S+2XS无规则下干翻了CCR1036-12-4Sr2,直逼CCR1036-8G-2S+EMr2,有25条防火墙规则下差距还是很明显,但和CCR1016-12Gr2差距不大了。CCR2116也不弱,靠着单核CPU性能也顺利超过了CCR1036-8G-2S+EMr2。CCR1xxx系列是Tile 64bit构架处理器,CCR2004是基于ARM 64bit的4核心处理器,也就单核性能已经超过了CCR1xxx系列。规则越多对Tile构架的CCR1xxx性能影响更大,因此在高负载下CCR2004的单核性能更加明显,CCR1xxx系列完全需要Linux内核优化众核心的调度,来解决负载问题。

我个人认为提升64byte包转发性能主要在于CPU的时钟频率,以及多核心CPU的工作数量,但单核性能又决定了对数据包拆包、分析和过滤等性能,因此在CCR1xxx系列在多核心数量体现了小包转发的优势,但受到单核心性能影响,在防火墙过滤规则创建后性能下降很厉害的原因。

又来看看RB和CRS系列

RB5009在512byte无规则情况下,略胜RB4011,在25条防火墙规则几乎是碾压,说明RB5009在综合性能上比RB4011更胜一筹。RB5009使用的是Cortex A72处理器,而RB4011是Cortex A15,两者1.4G频率相同的情况下,包转发性能差不多,但更先进的Cortex A72在处理防火墙规则时性能表现几乎是碾压式的。

hAP ac的综合性能也接近RB750Gr3,CRS317作为一款CRS交换机,在CRS系列里CPU性能也是最好的,仅次于hAP ac。hAP ac2对BR750Gr3在无规则情况下两者差距不大,一旦创建防火墙规则后,hAP ac2是RB750Gr3性能的2.3倍。

对于普通家庭用户,除了RouterOS自带的基本防火墙规则,一般不会创建更多规则,因此选择RB750Gr3和hAP ac2已经足够了,少量功能要求和汇聚的用户hAP ac2也够用,300-400元的RouterOS设备性价比非常高了!

对于多线汇聚和更多功能要求的发烧友,1-2G左右选择RB4011或者RB5009吧,带宽更大的就是CCR系列了,如果CCR性能还是不够,那还是上x86服务器至强系列(但兼容性不敢保证),如果选择虚拟平台的CHR性能释放要欠缺点!

特别说明下:CCR2116和CCR2216两款CPU是相同的,所以处理器转发性能基本相同,区别是采用的交换芯片不同。这两款产品虽然是2022年新品视乎无法超过爷爷款的CCR1072,感觉有点拉垮!其实CCR2116和CCR2216有交换芯片的加持,抛开nat的转发,看纯路由转发完全由交换芯片处理,线速转发!同时支持FastTrack的nat加速,CCR1072完全是由72颗CPU一起干活撑起来的,单核性能完全不如CCR2116和CCR2216的16核心ARMv8(由4个4核心的Cortex-A72处理器组成),相关文章:

MikroTik CCR2216-1G-12XS-2XQ新旗舰

硬件加速 Fasttrack(Nat转发硬件加速)

以上包转发数据来至MikroTik官方。

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章很值,打赏犒劳作者一下