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

路由器性能迷思

  •  
  •   szsgz · 32 天前 · 5177 次点击
    这是一个创建于 32 天前的主题,其中的信息可能已经有所发展或是发生改变。
    同一个系统比如 ikuai ,官方的机子比如 Q6000 ,只需要 512MB 内存,128MB 闪存,但是如果用 x86 软路由,就需要 4-8G 内存,十几 G 硬盘?
    第 1 条附言  ·  32 天前

    以下是ChatGPT O3mini 的结论,看看大家是否认同

    下面是整体结论的总结:
    1. 硬件加速的必要性
    在实现七层流控、DPI和复杂流量监控等网络专用功能时,专用的硬件加速(如ASIC、专用网络加速模块)可以大幅减轻CPU负载,保证高吞吐量和低延迟。
    2. 品牌实现差异
    – Ubiquiti、MikroTik 和爱快(iKuai)的高端硬路由:这类产品通常集成专用硬件加速模块,利用芯片(如MediaTek MT7986A)内置的硬件转发和加速器,既实现高效的数据包转发,也能处理流控和深度检测任务。
    – x86软路由:由于缺乏专用加速硬件,全部依靠高性能CPU进行数据包处理,在流量监测和流控功能上必须以软件方式运作,虽然通用性和灵活性较强,但在高负载情况下可能面临CPU资源瓶颈。
    3. MediaTek vs. Intel 平台对比
    – MediaTek系列(ARM架构):专为网络设备设计,内置硬件加速,功耗低且在专用网络处理(如NAT、DPI、流控)中表现出色。
    – Intel系列(x86架构):提供较强的通用计算能力和丰富的软件生态,但在网络专用任务中通常需要额外依赖硬件加速技术(如DPDK、SR-IOV)才能达到与MediaTek方案相近的性能。
    4. 综合来看
    对于专用路由器应用来说,MediaTek的方案由于集成了硬件加速模块,能够在大流量和复杂网络场景下保持高效运行,降低CPU负荷;而Intel平台则更适合需要通用计算和灵活软件配置的场景,但在网络专用任务上可能需要额外优化。

    总的来说,各家厂商根据目标市场和应用需求,选择不同的架构和优化手段。专用硬件加速无疑是高端路由器的一大优势,这也是为什么像Ubiquiti、MikroTik和爱快这样的产品在高负载网络环境下表现优异,而纯软件方案或低功耗x86软路由则需要依靠强劲的CPU来“补偿”硬件加速的缺失。

    48 条回复    2025-02-25 01:37:50 +08:00
    wy315700
        1
    wy315700  
       32 天前
    带机量不一样啊
    Love4Taylor
        2
    Love4Taylor  
       32 天前
    查了下 Q6000 是 Filogic 830 ,有硬件加速的吧。
    march1993
        3
    march1993  
       32 天前
    都是扯蛋啊。。。你看看内存实际能用多少,你会发现根本用不了多少
    zhywang
        4
    zhywang  
       32 天前
    内存配置高一点还能说的过去,路由器要大硬盘干啥?
    revelationtan
        5
    revelationtan  
       32 天前
    主要是看网络相关硬件有没有支持,正儿八经的路由器如果不开 QoS 过滤之类的除了少量 Control Plain 流量,基本上全是硬件转发,根本不过 CPU ,甚至 CPU 所在的控制板都可以热插拔
    knva
        6
    knva  
       32 天前
    x86 要组 all in boom 的啊
    MADBOB
        7
    MADBOB  
       32 天前
    主要 x86 主流设备,你想买 512MB RAM ,128MB ROM 的也难呀
    tool2dx
        8
    tool2dx  
       32 天前
    @march1993 真实,我每次 ssh 到 openwrt 路由器上,看 cat /proc/meminfo ,永远只占了 100M ,MemAvailable 还有一大堆。

    我还在琢磨,为啥内存不涨呢?
    yangyang
        9
    yangyang  
       32 天前
    X86 全靠 CPU 硬抗啊,路由器专用 IC 自然集成了专门电路,对 CPU 压力小很多。
    szsgz
        10
    szsgz  
    OP
       32 天前 via iPhone
    @MADBOB #7 这个原因比较靠谱哈哈哈
    szsgz
        11
    szsgz  
    OP
       32 天前 via iPhone
    @zhywang #4 我看到爱快有类似视频缓存之类的功能可能需要更多空间。
    szsgz
        12
    szsgz  
    OP
       32 天前 via iPhone
    @revelationtan #5 如果要开流量检测和控制呢?主要去广告和防熊孩子用。
    szsgz
        13
    szsgz  
    OP
       32 天前 via iPhone
    @yangyang #9 流控相关功能也有硬件加速?
    revelationtan
        14
    revelationtan  
       32 天前
    @szsgz 如果想想要全面,那就上防火墙做路由器,喜欢折腾的话其实现在像飞塔的二手还是很适合家用的
    tool2dx
        15
    tool2dx  
       32 天前
    @szsgz "流控相关功能也有硬件加速?"

    硬件加速不是万能的,我这里打开后,大部分 UDP 转发都不走 iptables 。当然去广告是 TCP ,TCP 拦截没啥问题。
    cxtrinityy
        16
    cxtrinityy  
       32 天前 via Android
    家用的 x86 all in boom 我只碰到过 io 瓶颈,很少有 cpu 内存不够用的吧,我用 j1900 cpu 使用率很低,内存之前有碰到过内存泄漏的应用,2g ddr3 升级到 8g 后也基本跑不了多少
    szsgz
        17
    szsgz  
    OP
       32 天前 via iPhone
    @revelationtan #14 我小白用户不折腾想用爱快系统的情况
    szsgz
        18
    szsgz  
    OP
       32 天前 via iPhone
    @cxtrinityy #16 我只需要用 ikuai 的话呢
    szsgz
        19
    szsgz  
    OP
       32 天前
    @knva 我只有 ikuai 一个需求...
    yangyang
        20
    yangyang  
       32 天前
    @szsgz 有的。HW QOS 是 MT7621 就有的能力了,十二年前了。

    https://www.eetop.cn/view-38257.html
    ll26571
        21
    ll26571  
       32 天前
    “但是如果用 x86 软路由,就需要 4-8G 内存,十几 G 硬盘”

    这个说法过于夸张了,自己下一个 x86 的镜像放虚拟机里一跑便知,实际给 512MB 照样还能很多剩的,配 4-8g 内存很大程度上也是因为你很难在市面上买到 512MB 或者 1GB 的内存条(除非你直接买颗粒焊主板上,但 x86 没人这样干的),实际 openwrt 编译好之后的镜像体积也不过 200~500MB ,虽然比不上 arm 和 mips ,但也远没到 GB 级
    cxtrinityy
        22
    cxtrinityy  
       32 天前 via Android
    @szsgz 单纯一个软路由系统肯定不需要那么大内存和硬盘的
    szsgz
        23
    szsgz  
    OP
       32 天前
    @ll26571 ikuai 的官方镜像底下写的系统要求,64 位的需要 4GB 内存,是不是吓唬人的...还是说流控之类需要检测网络流量的功能真的需要这么多的硬件资源?

    Love4Taylor
        24
    Love4Taylor  
       32 天前
    @szsgz 给个参考,RouteOS CHR 推荐的内存配置是 256 + [ 8 × (CPU_COUNT) × (INTERFACE_COUNT - 1) ]
    465456
        25
    465456  
       32 天前
    按需要选择,我要用到 sqm 功能,所以要选 x64
    szsgz
        26
    szsgz  
    OP
       32 天前
    @465456 类似这样的功能,会占用很多资源对吗?
    那么问题就是这种功能在官方硬件上是怎么工作的?难道每一样功能都有硬件加速?

    也就是说,每一家路由器厂商的硬件都是安装自家系统功能定制的而不是毫无技术含量的封装而已?
    szsgz
        27
    szsgz  
    OP
       32 天前
    @Love4Taylor #2 这种硬件加速如果跟 n100 这样的 x86 平台 cpu 来 PK 的话谁会胜出?
    465456
        28
    465456  
       32 天前
    @szsgz 软路由器,没有硬件加速。我用的 sqm 设置成按 ip 动态分配宽带,用迅雷下载,不影响其它人使用。再加上我在软路由装了其它功能,类似 DNS 劫持去广告,DNS 预读取
    Love4Taylor
        29
    Love4Taylor  
       32 天前
    @szsgz 小包的话硬件加速胜,大包的话除非你 x86 大力出奇迹,否则还是硬件加速。
    xqzr
        30
    xqzr  
       32 天前
    @Livid #0-1 AI
    murchef
        31
    murchef  
       31 天前   ❤️ 1
    Q6000 的 Arm 版官方爱快系统没有 视频缓存 docker 等插件,没有存储功能,不能开 pcdn 相关的功能。
    X86 平台可以直接用 32 位系统,与 64 位系统基本没区别,实践中 32 位爱快在虚拟机平台,只跑网络相关功能,仅需要 512G-1G 内存,1G 硬盘,Cpu 仅分配两核心( J4205 ),可正常使用 Qos ,分流,流量监控等功能。
    加速方面:Q6000 仅软件加速,没有硬件加速(部分官方爱快硬件才有)。X86 仅 BBR 加速。
    murchef
        32
    murchef  
       31 天前
    @murchef 其中内存和 Cpu 核心分配( cpu 性能)会影响带机量,cpu 性能也影响 Qos 流控性能。就家庭应用场景下我是不开 Qos 的。只是如果跑千兆的上传下载的话,2 核心 J4205 性能是不够的会跑满,x86 平台需要 cpu 做 nat ,Q6000 的 nat 默认情况不经过 cpu 。
    datocp
        33
    datocp  
       31 天前 via Android
    用的 erx 256mb 内存 100mbps 带宽带了 280+终端。其实 mtk7620 的 y1s 也能胜任,还是觉得不如 mtk7621 呈现网页快。
    路由常见的 cpu ,mtk7620 似乎关闭 wifi ,同一固件就能提高 50mbps 。所以小路由只干路由的事别把下载有的没的浪费 cpu 的功能也集成。
    至于内存 linux 在带机数量有条换算公式。当然小内存机器也可应用内存释放方法。

    在 100mps 带 280+的网络宁可要 qos 不要硬件加速
    1.qos 给人的错觉很费 cpu
    有些固件,估计写固件的人都只是套个模板进去。以前测试 ddwrt 的 imq 直接死机,asus 的也好不到哪去,都是应用于高耗 cpu 的接口,而不是应用于 pppor-wan br-lan br-wan
    2.qos 不是限速
    对 280+ip 进行限速,必然导致至少 280+的 iptables 遍历规则,影响 cpu 性能。后来改成 ip 范围限速。再后来只对目的端口优先级进行控制简化成了 11 条。
    3.11 条神奇的 CONNMARK
    SMQ 早期在吹牛的时候并未见有 CONNMARK 标记,实际测起来性能非常糟糕,依然是个高耗 cpu 的 QOS ,后期没测过。这种标记网络常见文档描述为包到连接的标记实现,是目前找到的最节省 cpu 遍历的方法,它还有个神奇的特性在使用 ifb 时,可以将上行标记应用于下行标记,这样在多 vlan 环境只针对一个下行的 ifb0 就可以控制。
    4.TCPMSS pmtu
    这个都增加下/上行 2 条规则,据说能极大的提高网络呑吐能力

    总之是无关路由功能的消耗 cpu/内存的功能别集成到固件,尽可能的优化规则减少 cpu 占用包括遍历时间。
    另外想玩得溜只有学习 openwrt ,才能根据别人的讨论自主裁减固件,ddwrt/tomato 之流很难深入。忘了说了 QOS 规则是从 tomato 中学来的,非常受用。这么多年不再寸进。
    revelationtan
        34
    revelationtan  
       31 天前
    还有就是硬件加速不是说 X86 就没有,如果你用一些带硬件加速的网卡也是可以在 x86 上实现硬件加速
    只是很多 DIY 的 x86 路由器没人会去调而已,绝大部分家用网卡什么的也没有硬件卸载能力
    企业级的高端路由器或者防火墙里 x86 架构还是挺多的,可以用于实现处理那些物理硬件无法处理的 QoS 或者防火墙规则
    crac
        35
    crac  
       31 天前
    专用处理器和通用处理器的区别,换个例子 手机相机的 ISP 处理器,如果相关的功能跑在 cpu 上,至少消耗掉 1 个 cpu 物理核心

    降噪也是
    rulagiti
        36
    rulagiti  
       31 天前
    @datocp 大部分家用还用不到 qos ,大带宽硬件加速是真有用。
    szsgz
        37
    szsgz  
    OP
       31 天前
    @murchef #31 这位兄弟的回复最有用!!感谢!!
    kyor0
        38
    kyor0  
       31 天前
    我的 n5105+8g 的主机跑 openwrt ,内存才用了 200mb 。trojan 跑千兆 cpu 占用也就 50%吧。软路由不费性能
    JensenQian
        39
    JensenQian  
       30 天前
    硬路由有硬件转发的啊
    高通 ipq 叫 nss ,联发科的 hwhat
    x86 软路由就大力出奇迹
    bibiisme
        40
    bibiisme  
       30 天前
    爱快的 MTK 平台不支持硬件加速,纯 CPU 转发,不要被误导
    iamOldMaster
        41
    iamOldMaster  
       30 天前
    q6000 系统设置中对加速模式的解释“加速模式:开启加速可以大幅提升转发性能,但部分功能会失效,不同型号可能支持不同的加速类型。”,但是测打开“软件加速”后路由性能直接降低到 20Mbps 以下
    ddczl
        42
    ddczl  
       30 天前
    我就是 N4000 物理机跑的 RouterOS ,1000M 满速的情况下,CPU 吃掉 20%多。
    piero66
        43
    piero66  
       27 天前
    以结果为导向,ros 稳就完了
    szsgz
        44
    szsgz  
    OP
       27 天前
    @piero66 学习成本比较高...
    wolffcat
        45
    wolffcat  
       27 天前 via Android
    爱快这种东西,我简单搜了一下,找不到 pdf 之类的文档,console ,二三层配置,这类设备适合极客看着恩山之类某某上的教程摸索的图形路由器啦,然后没事交流一下,我大学时代的时候有人选修课显摆了一下安装爱快,嗯有点把我恶心了一下,我的评价是不如看看锐捷。
    ChaosAttractor
        46
    ChaosAttractor  
       25 天前
    在 x86 平台,包括 mellanox 和很多做 dpu 的公司的智能网卡/dpu 都可以提供类似高通 nss 或者联发科的基于 asic 的硬件 tc/flowtable offload ,且驱动实现更加开源
    其次就是,对于 L7 流控甚至复杂的 QoS 需求,常规的 ASIC 网络加速平台完全无法覆盖这么复杂的需求,需求超出单纯的转发,其实消费级路由器的 ASIC 能提供的能力就已经覆盖不到了,而数据平面的完全 offlaod 意味着一个需求不能 offload 就前功尽弃(例如典型的,复杂的 traffic control 就不被很好的支持)
    xdp offload 或者 doca 等可编程的 offload 技术可以支持复杂需求,但是这已经是 dpu 的领域了
    此外有非常多的技术可以在 CPU 转发的前提下优化数据路径的性能,例如 DPDK ( VPP )和 tso/gro 乃至 Big TCP 等等
    你需要的功能复杂性越多,吞吐量越大,CPU 越力不从心,但是你需要的功能复杂性越多,越难以完全让 ASIC 承载
    ChaosAttractor
        47
    ChaosAttractor  
       25 天前
    @szsgz 普通路由器对内存的主要需求来自连接追踪,你的连接数越多内存需求越大,但 ikuai 这种它的前后端组件都要消耗很多资源的,4G 其实并不多
    ChaosAttractor
        48
    ChaosAttractor  
       25 天前
    @szsgz 首先就是,家用平台所有的加速都是 linux 内核(包括高通/mtk 的 sdk 里面的内核模块)提供的,厂商几乎什么都做不了,只能在控制平面做文章
    而且一旦牵扯数据平面(例如智能 QoS 什么的),这种功能在家用路由器上一开基本就变成 cpu 转发了(
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   991 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 19:18 · PVG 03:18 · LAX 12:18 · JFK 15:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.