V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
HarrisIce
V2EX  ›  宽带症候群

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

  •  
  •   HarrisIce · 242 天前 · 3430 次点击
    这是一个创建于 242 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    最后,考虑这两台机器:

    • RB5009 ,有交换芯片,一定程度上应该能 offloading 掉一部分 VLAN Filter ,CPU 性能应该也够用,可靠性也可以。
    • x86 的工控,纯软跑,便宜,工控的可靠性应该也不错,而且还便宜。

    我的顾虑:

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

    多谢各路大佬~

    20 条回复    2024-04-28 11:59:34 +08:00
    jmxct520
        1
    jmxct520  
       242 天前
    5009 可能 cpu 有点吃紧,淘一个 1036 吧
    yyzh
        2
    yyzh  
       241 天前 via Android
    之前跑路了的某 iplc 老板曾经说过 ros 官方硬路由也没能搞定 qos 和策略路由怎么 offload 的问题,所以他又换回去 x86 力大砖飞了
    HarrisIce
        3
    HarrisIce  
    OP
       241 天前 via iPhone
    @yyzh 他这个应该用 dpdk+vpp 做,pbr 这个确实不好 offloading 。不过我今天看到 architechs 的一个 presentation ,x86 的 8 核 RouterOS CHR 也就跑到了 900 多 kpps ,CCR 硬件可以直接 3Mpps ,差远了
    HarrisIce
        4
    HarrisIce  
    OP
       241 天前 via iPhone
    @jmxct520 贵啊
    Ipsum
        5
    Ipsum  
       241 天前
    我觉得可以先 pve 个开心版,玩熟了再买硬件。5009 的 cpu 确实很弱,开了 nat1 量稍微大点就 100%
    dann73580
        6
    dann73580  
       241 天前
    Chr 配企业级网卡应该比较好吧?新版 2.5g 网卡支持了,但高负载不好说稳定性的。
    Dzsss
        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 的硬件本身比较保值。
    kenneth104
        8
    kenneth104  
       241 天前
    0 ,需要跑 BGP 需要关注多大的,之前遇到过从 AS4809 全收,Ros 官方硬件很慢,要 10 分钟,用思科 10 秒就初步好了
    kenneth104
        9
    kenneth104  
       241 天前
    1 ,不清楚呢
    2 ,x86 很容易超越 5009
    3 ,我这都是买 key ,价格还好啊
    4 ,不考虑功耗,几十块的洋垃圾 E5 v3

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

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

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

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

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

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

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

    **测试环境**

    一台机器,同时装了 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 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2715 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 10:05 · PVG 18:05 · LAX 02:05 · JFK 05:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.