需要跑 BGP ,需要开 VLAN Filter ,需要做策略路由,需要跑防火墙,不开 fast track (我的场景开了会有 bug )需要拉大概 30 条左右规则。
最后,考虑这两台机器:
我的顾虑:
多谢各路大佬~
1
jmxct520 242 天前
5009 可能 cpu 有点吃紧,淘一个 1036 吧
|
2
yyzh 242 天前 via Android
之前跑路了的某 iplc 老板曾经说过 ros 官方硬路由也没能搞定 qos 和策略路由怎么 offload 的问题,所以他又换回去 x86 力大砖飞了
|
3
HarrisIce OP @yyzh 他这个应该用 dpdk+vpp 做,pbr 这个确实不好 offloading 。不过我今天看到 architechs 的一个 presentation ,x86 的 8 核 RouterOS CHR 也就跑到了 900 多 kpps ,CCR 硬件可以直接 3Mpps ,差远了
|
5
Ipsum 242 天前
我觉得可以先 pve 个开心版,玩熟了再买硬件。5009 的 cpu 确实很弱,开了 nat1 量稍微大点就 100%
|
6
dann73580 242 天前
Chr 配企业级网卡应该比较好吧?新版 2.5g 网卡支持了,但高负载不好说稳定性的。
|
7
Dzsss 241 天前
有 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 的硬件本身比较保值。 |
8
kenneth104 241 天前
0 ,需要跑 BGP 需要关注多大的,之前遇到过从 AS4809 全收,Ros 官方硬件很慢,要 10 分钟,用思科 10 秒就初步好了
|
9
kenneth104 241 天前
1 ,不清楚呢
2 ,x86 很容易超越 5009 3 ,我这都是买 key ,价格还好啊 4 ,不考虑功耗,几十块的洋垃圾 E5 v3 手里的 ROS 全部用于 QOS ,没有用来跑 BGP 了,因为早期对 ROS 的 BGP 性能印象很差,但后面觉得做 QOS 挺好用,又研究了一下 大概有 10 台 CHR ,1 台 1009 ,1 台 1036 |
10
FlintyLemming 241 天前
如果物理机记得买个带 mSATA 的,mSATA 授权克隆盘便宜
|
11
HarrisIce OP @Dzsss 我不开 fast track 是因为,做 pbr 之后并且还要再迂回(在 pbr 网关做了一次 masquerade 的)到同一台 ROS v7 机器后,pbr 会有问题(忘了之前测的是不通还是失效了),但是 ROS v6 的没有这个问题,无非是 rp_filter 改到 loose 就行。不过多谢大佬,原来这玩意坑还有这么多,后边我也避免这样用。
这玩意保值是保值,但是下架的机器有人收吗(笑哭 另外想问问大佬,你这 5009 跑这么多东西,规则全开的情况下,单流极限(也就是不 offloading ,靠 CPU 软转单核)能有多少来的? |
14
HarrisIce OP @kenneth104 我这里 BGP 条目很少,也就几百条,ROS 的 BGP 我之前参加 MUM 的时候有人说了,就是前缀多的时候接起来特别慢。
x86 确实容易超过 5009 ,我找了 fd.io VPP 的 performance tuning ,发现 x520 的网卡+1 个 cpu 核心,三层转发就可以到 10Mpps 以上,四层 abr 也能有 6Mpps 多,确实直接秒 5009 。手边正好有几台空的机架服务器和几张 mellanox 、intel 的网卡,在考虑要不要自己做网关了。 |
15
HarrisIce OP @FlintyLemming 了解,多谢大佬
|
16
HarrisIce OP 以及这里补充一下,手边正好有一台 i226 网卡的工控,装完 CHR v7 版本的,开机直接内核 fault ,console 只打出来了最后十几行,看不到前边的 stack trace 信息,暂时也不知道是哪里的问题,看起来 x86 装 ROS 这条路确实不太好走,兼容性和稳定性不太好确定。
|
18
Dzsss 240 天前
@HarrisIce 不是大佬,目前场景正常用也达不到极限,应该也不高吧。
主要是适合场景就行,性能参数上的东西看看就好。官方硬件不需要考虑兼容性问题,硬盘读写问题、电源问题、散热问题,接口支持这些也更全,故障迁移新机器也得考虑。不恰当的比喻:玩黑苹果的大部分最终都转了白苹果。 当然,作为学习实验的话,折腾折腾也是极好的。 |
19
HarrisIce OP @Dzsss 主要是没有相似场景参考单流实际转发速度能到多少,想保底选 VPP 的方案,但是 DPDK 测 Mellanox CX5 网卡的时候一直有问题,不想折腾了。想问问大佬,你那个配置,RB5009 单流(就是单核处理,不是多流同时的总和速度)能到 1Gbps 吗?能到我就冲了,不纠结了
|
20
HarrisIce OP 结合我另外一篇帖子中一个大佬的回复,测网卡的问题已经解决,在这里把数据共享给大家做参考。
**测试环境** 一台机器,同时装了 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 。 |