要用 RouterOS,该买官方硬件还是 x86?

211 天前
 HarrisIce

需要跑 BGP ,需要开 VLAN Filter ,需要做策略路由,需要跑防火墙,不开 fast track (我的场景开了会有 bug )需要拉大概 30 条左右规则。

最后,考虑这两台机器:

我的顾虑:

  1. x86 的 ROSv7 ,现在支持 I226 这类 2.5G 的网卡了吗?稳定吗?
  2. 不考虑功耗,只考虑上边需求,x86 会比 RB5009 的性能更强吗?(这些需求基本都是要拿 CPU 跑的,交换芯片除了 VLAN Filter 可能能帮上一点忙,其他都没用)
  3. 如果选 x86 ,买 tb 的 ROSv7 克隆盘,会有什么 bug 吗?
  4. 大概什么样的 x86 CPU ,靠纯软处理能打平 RB5009 的 64B 小包路由 761Kpps 的性能?

多谢各路大佬~

3234 次点击
所在节点    宽带症候群
20 条回复
jmxct520
211 天前
5009 可能 cpu 有点吃紧,淘一个 1036 吧
yyzh
211 天前
之前跑路了的某 iplc 老板曾经说过 ros 官方硬路由也没能搞定 qos 和策略路由怎么 offload 的问题,所以他又换回去 x86 力大砖飞了
HarrisIce
211 天前
@yyzh 他这个应该用 dpdk+vpp 做,pbr 这个确实不好 offloading 。不过我今天看到 architechs 的一个 presentation ,x86 的 8 核 RouterOS CHR 也就跑到了 900 多 kpps ,CCR 硬件可以直接 3Mpps ,差远了
HarrisIce
211 天前
@jmxct520 贵啊
Ipsum
211 天前
我觉得可以先 pve 个开心版,玩熟了再买硬件。5009 的 cpu 确实很弱,开了 nat1 量稍微大点就 100%
dann73580
211 天前
Chr 配企业级网卡应该比较好吧?新版 2.5g 网卡支持了,但高负载不好说稳定性的。
Dzsss
210 天前
有 5009*2 1036 1009 2011 等机器在线。

fast track 的 bug 问题,目前遇到的就是静态路由不生效和 bridge 的 fast path 开启卡顿这俩问题,前者是直接在 mangle 里面 accept 。后者是关掉。

鉴于 5009 的 ram 和 hdd 跑了几个 docker + 防火墙策略 70-80 条 + OSPF + vrrp * 3 + 2.5 pon stick + FullCone-Nat + ipv6 wireguard + L2TP server 。双运营商三个公网 IP 叠加。目前 CPU 内存占用在正常范围内。

楼主这个情况应该是属于清楚自己需求的了,所以建议是买 CCR2116 之类的。和散热器选购一样,这个投入不是一次性的,因为 Mikrotik 的硬件本身比较保值。
kenneth104
210 天前
0 ,需要跑 BGP 需要关注多大的,之前遇到过从 AS4809 全收,Ros 官方硬件很慢,要 10 分钟,用思科 10 秒就初步好了
kenneth104
210 天前
1 ,不清楚呢
2 ,x86 很容易超越 5009
3 ,我这都是买 key ,价格还好啊
4 ,不考虑功耗,几十块的洋垃圾 E5 v3

手里的 ROS 全部用于 QOS ,没有用来跑 BGP 了,因为早期对 ROS 的 BGP 性能印象很差,但后面觉得做 QOS 挺好用,又研究了一下

大概有 10 台 CHR ,1 台 1009 ,1 台 1036
FlintyLemming
210 天前
如果物理机记得买个带 mSATA 的,mSATA 授权克隆盘便宜
HarrisIce
210 天前
@Dzsss 我不开 fast track 是因为,做 pbr 之后并且还要再迂回(在 pbr 网关做了一次 masquerade 的)到同一台 ROS v7 机器后,pbr 会有问题(忘了之前测的是不通还是失效了),但是 ROS v6 的没有这个问题,无非是 rp_filter 改到 loose 就行。不过多谢大佬,原来这玩意坑还有这么多,后边我也避免这样用。

这玩意保值是保值,但是下架的机器有人收吗(笑哭

另外想问问大佬,你这 5009 跑这么多东西,规则全开的情况下,单流极限(也就是不 offloading ,靠 CPU 软转单核)能有多少来的?
HarrisIce
210 天前
@dann73580 是,我看到有人说 ROS 的 i226 拉不满,但是 Linux 发行版系统就可以,可能还是有一些问题。
HarrisIce
210 天前
@Ipsum 大概跑到多少速度来的?以及有 pps 参考不
HarrisIce
210 天前
@kenneth104 我这里 BGP 条目很少,也就几百条,ROS 的 BGP 我之前参加 MUM 的时候有人说了,就是前缀多的时候接起来特别慢。

x86 确实容易超过 5009 ,我找了 fd.io VPP 的 performance tuning ,发现 x520 的网卡+1 个 cpu 核心,三层转发就可以到 10Mpps 以上,四层 abr 也能有 6Mpps 多,确实直接秒 5009 。手边正好有几台空的机架服务器和几张 mellanox 、intel 的网卡,在考虑要不要自己做网关了。
HarrisIce
210 天前
@FlintyLemming 了解,多谢大佬
HarrisIce
210 天前
以及这里补充一下,手边正好有一台 i226 网卡的工控,装完 CHR v7 版本的,开机直接内核 fault ,console 只打出来了最后十几行,看不到前边的 stack trace 信息,暂时也不知道是哪里的问题,看起来 x86 装 ROS 这条路确实不太好走,兼容性和稳定性不太好确定。
Ipsum
209 天前
@HarrisIce 不开 nat1 ,大概 15 万 pps ,开了大概就 3 万左右。
Dzsss
209 天前
@HarrisIce 不是大佬,目前场景正常用也达不到极限,应该也不高吧。

主要是适合场景就行,性能参数上的东西看看就好。官方硬件不需要考虑兼容性问题,硬盘读写问题、电源问题、散热问题,接口支持这些也更全,故障迁移新机器也得考虑。不恰当的比喻:玩黑苹果的大部分最终都转了白苹果。

当然,作为学习实验的话,折腾折腾也是极好的。
HarrisIce
209 天前
@Dzsss 主要是没有相似场景参考单流实际转发速度能到多少,想保底选 VPP 的方案,但是 DPDK 测 Mellanox CX5 网卡的时候一直有问题,不想折腾了。想问问大佬,你那个配置,RB5009 单流(就是单核处理,不是多流同时的总和速度)能到 1Gbps 吗?能到我就冲了,不纠结了
HarrisIce
207 天前
结合我另外一篇帖子中一个大佬的回复,测网卡的问题已经解决,在这里把数据共享给大家做参考。

**测试环境**

一台机器,同时装了 Intel X520-DA2 ( 10G 双口)、Mellanox MCX512A ( 25G 双口)两张网卡,32G 内存( 8G hugepage )。设置了 Linux 启动时禁止调度到 2-7 号核心,2-7 专门留给 VPP 、Pktgen 用(并且 worker 核心不重叠),保证测试数据准确。

CPU 如下。

```
Intel(R) Core(TM) i3-10105 CPU @ 3.70GHz
analyzing CPU 6:(所有核心统一设置)
driver: intel_pstate
CPUs which run at the same hardware frequency: 6
CPUs which need to have their frequency coordinated by software: 6
maximum transition latency: 4294.55 ms.
hardware limits: 800 MHz - 4.40 GHz
available cpufreq governors: performance, powersave
current policy: frequency should be within 3.20 GHz and 4.40 GHz.
The governor "performance" may decide which speed to use
within this range.
current CPU frequency is 4.20 GHz.

# lscpu -e
CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE MAXMHZ MINMHZ MHZ
0 0 0 0 0:0:0:0 yes 4400.0000 800.0000 4199.541
1 0 0 1 1:1:1:0 yes 4400.0000 800.0000 3700.000
2 0 0 2 2:2:2:0 yes 4400.0000 800.0000 3700.000
3 0 0 3 3:3:3:0 yes 4400.0000 800.0000 4199.999
4 0 0 0 0:0:0:0 yes 4400.0000 800.0000 4200.001
5 0 0 1 1:1:1:0 yes 4400.0000 800.0000 4200.000
6 0 0 2 2:2:2:0 yes 4400.0000 800.0000 4199.999
7 0 0 3 3:3:3:0 yes 4400.0000 800.0000 4200.000
```

系统和测试平台如下。

```
Operating System: Ubuntu 22.04.4 LTS
Kernel: Linux 5.15.0-105-generic
Architecture: x86-64
Hardware Vendor: HP
Hardware Model: HP EliteDesk 880 G6 Tower PC
```

**打流路径**

Pktgen 打流 -> Mellanox 1 号口 -> Intel 1 号口 -> VPP 用户态转发 -> Intel 2 号口 -> Mellanox 2 号口 -> Pktgen 接收统计

**测试数据**

pktgen 测试数据如下

```
\ Ports 0-1 of 2 <Main Page> Copyright(c) <2010-2023>, Intel Corporation
Port:Flags : 0:P------ Single 1:P------ Single
Link State : <UP-10000-FD> <UP-10000-FD> ---Total Rate---
Pkts/s Rx : 0 9,091,196 9,091,196
Tx : 14,911,104 0 14,911,104
MBits/s Rx/Tx : 0/9,543 5,818/0 5,818/9,543
Pkts/s Rx Max : 0 9,408,878 9,408,878
Tx Max : 15,058,304 0 15,058,304
Broadcast : 0 0
Multicast : 0 0
Sizes 64 : 0 575,707,178,176
65-127 : 0 0
128-255 : 0 0
256-511 : 0 0
512-1023 : 0 0
1024-1518 : 0 0
Runts/Jumbos : 0/0 0/0
ARP/ICMP Pkts : 0/0 0/0
Errors Rx/Tx : 0/0 0/0
Total Rx Pkts : 0 8,993,964,327
Tx Pkts : 14,541,116,160 0
Rx/Tx MBs : 0/9,306,314 5,756,137/0
TCP Flags : .A.... .A....
TCP Seq/Ack : 74616/74640 74616/74640
Pattern Type : abcd... abcd...
Tx Count/% Rate : Forever /100% Forever /100%
Pkt Size/Rx:Tx Burst: 64 / 64: 64 64 / 64: 64
TTL/Port Src/Dest : 64/ 1234/ 5678 64/ 1234/ 5678
Pkt Type:VLAN ID : IPv4 / UDP:0001 IPv4 / TCP:0001
802.1p CoS/DSCP/IPP : 0/ 0/ 0 0/ 0/ 0
VxLAN Flg/Grp/vid : 0000/ 0/ 0 0000/ 0/ 0
IP Destination : 1.1.1.1 192.168.0.1
Source : 192.168.1.2/24 192.168.2.2/24
MAC Destination : 94:94:26:00:00:01 ab:cd:ef:aa:bb:52
Source : ab:cd:ef:aa:bb:52 ab:cd:ef:aa:bb:53
NUMA/Vend:ID/PCI :-1/15b3:1017/0000:01:0-1/15b3:1017/0000:01:00.1
-- Pktgen 24.03.1 (DPDK 24.03.0) Powered by DPDK (pid:1690) -----------------
```

VPP 性能数据如下

```
Thread 1 vpp_wk_0 (lcore 3)
Time 4312.5, 10 sec internal node vector rate 0.00 loops/sec 6899106.25
vector rates in 8.2346e3, out 0.0000e0, drop 8.2346e3, punt 0.0000e0
Name State Calls Vectors Suspends Clocks Vectors/Call
abf-input-ip4 active 138720 35511313 0 1.24e2 255.99
dpdk-input polling 30192345449 35511318 0 2.86e5 0.00
drop active 138725 35511318 0 1.52e1 255.98
error-drop active 138725 35511318 0 6.71e0 255.98
ethernet-input active 138725 35511318 0 3.62e1 255.98
ip4-drop active 138720 35511313 0 6.85e0 255.99
ip4-input-no-checksum active 138720 35511313 0 4.15e1 255.99
ip4-lookup active 138720 35511313 0 3.07e1 255.99
ip6-input active 5 5 0 5.31e3 1.00
ip6-not-enabled active 5 5 0 1.99e3 1.00
unix-epoll-input polling 29455958 0 0 1.77e3 0.00
---------------
Thread 2 vpp_wk_1 (lcore 4)
Time 4312.5, 10 sec internal node vector rate 256.00 loops/sec 45554.75
vector rates in 9.6155e6, out 6.5761e6, drop 3.8843e5, punt 0.0000e0
Name State Calls Vectors Suspends Clocks Vectors/Call
TenGigabitEthernet3/0/1-output active 155558090 39791416116 0 4.95e0 255.79
TenGigabitEthernet3/0/1-tx active 155558090 28359013714 0 8.19e1 182.30
abf-input-ip4 active 176833510 41466399484 0 8.90e1 234.49
dpdk-input polling 13167973917 41466399488 0 9.99e1 3.15
drop active 21398772 1675106720 0 1.15e1 78.28
error-drop active 21398772 1675106720 0 7.87e0 78.28
ethernet-input active 176833513 41466399488 0 3.49e1 234.49
ip4-arp active 3708505 949377021 0 2.51e2 255.99
ip4-drop active 21398768 1675106716 0 5.87e0 78.28
ip4-input-no-checksum active 176833510 41466399484 0 2.48e1 234.49
ip4-load-balance active 159143247 40740669789 0 1.19e1 255.99
ip4-rewrite active 155434742 39791292768 0 2.10e1 255.99
ip6-input active 4 4 0 7.03e3 1.00
ip6-not-enabled active 4 4 0 1.95e3 1.00
unix-epoll-input polling 12846814 0 0 9.99e2 0.00
```

**测试内容**

没有拿上边的场景去做同等配置,只是做了几个简单配置了解一下转发率。
VPP 使用 DPDK 输入,配置了 6 条路由,3 条 ACL 规则,1 条 ABF (等同于 PBR 规则),此时发送打满了 10G 的线速,接收到了接近 6G 的速度,注意这是 64 字节的小包,大包没有太多参考意义。

**对比**

对比 CCR2004-16G-2S+的 8260.6kpps 转发率( routing fast path )(即 8.2Mpps )(数据来自官方),VPP 做到了 9Mpps 的转发率,这还是纯软件处理、只靠 2 个 CPU 核心、受到 hyperthreading 没关影响的数据,完全调整后应该还能再高一些(懒得弄了)。这台机器我手边随便拿的,正常买的话应该 1000 多块钱,加上全新的 X520-DA2 在 300 多块钱,你可以拥有比 CCR2004 更高的性能(仅限 L3 )。

**结论**

人生苦短,钱包不够,我选 RB5009 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1035349

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX